概述
可能会出现一种情况,比如说我们的某个依赖,在高峰期,需要耗费100个线程,但是在那个时间段,刚好其他的依赖的线程池其实就维持一两个就可以了。但是,如果我们都是设置死的,每个服务就给10个线程,那就可能就导致有的服务在高峰期需要更多的资源,但是没资源了,导致很多的reject。因此我们做成弹性的线程资源调度的模式。刚开始的时候,每个依赖服务都是给1个线程,3个线程,但是我们允许以下情况,如果某个线程池突然需要大量的线程,最多可以到100个线程,并且高峰期过去后,自动将空闲的线程给释放掉
coreSize
设置线程池的大小,默认是10HystrixThreadPoolProperties.Setter().withCoreSize(int value)
maximumSize
设置线程池的最大大小,只有在设置allowMaximumSizeToDivergeFromCoreSize的时候才能生效,默认是10个线程HystrixThreadPoolProperties.Setter().withMaximumSize(int value)
keepAliveTimeMinutes
设置保持存活的时间,单位是分钟,默认是1。如果设置allowMaximumSizeToDivergeFromCoreSize为true,那么coreSize就不等于maxSize,此时线程池大小是可以动态调整的,可以获取新的线程,也可以释放一些线程,如果coreSize < maxSize,那么这个参数就设置了一个线程多长时间空闲之后,就会被释放掉HystrixThreadPoolProperties.Setter().withKeepAliveTimeMinutes(int value)
allowMaximumSizeToDivergeFromCoreSize
允许线程池大小自动动态调整,设置为true之后,maxSize就生效了,此时如果一开始是coreSize个线程,随着并发量上来,那么就会自动获取新的线程,但是如果线程在keepAliveTimeMinutes内空闲,就会被自动释放掉,默认是falesHystrixThreadPoolProperties.Setter().withAllowMaximumSizeToDivergeFromCoreSize(boolean value)
可能在生产环境我们需要查看某个接口服务的高峰QPS来配合调整这些参数
最后
以上就是友好航空为你收集整理的Hystrix生产环境线程池自动扩容与缩容的动态资源分配经验的全部内容,希望文章能够帮你解决Hystrix生产环境线程池自动扩容与缩容的动态资源分配经验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复