pooler [转]
pooler和poolboy都是用erlang写的管理进程池的库。
pooler/poolboy
github : seth/pooler · GitHub
github : devinus/poolboy · GitHub
pooler相对于poolboy的优点
pooler比poolboy多了些概念
group
在pooler里,每个pool都将属于一个group。这个概念的好处是,当我们调用
pooler:take_group_member/1
从进程池里取出一个member进程时,pooler会自动做负载均衡(其实跟当前Reverse做的工作一样,就是随机一下)。默认属于
default
组.return member pool with status
归还member进程的时候可以标记归还进程的状态,可以为
ok
、fail
。pooler接收到该member进程后会检查其归还状态,若归还状态为fail
,则异步将其restart。track process
其实进程跟踪严格说来就是根据归还状态来实现的,但因为这一点感觉尤其“贴心”,所以我想挑出来提一下。
pooler会检测consumer进程的退出状态,如果consumer以normal
退出,则pooler直接回收该consumer拿的member进程;否则restart其member进程。进程池可自动动态伸缩
pooler支持进程池自动动态伸缩,它允许在进程池创建的时候传入以下参数自定义动态伸缩策略:
init_count
: 一般情况下的进程池大小max_count
: pooler能自动“伸”,但最大不超过max_count
cull_interval = {tick, threshold}
: tick是个时间段,每隔这么个时间pooler会把进程池大小“缩”回init_count
,或者当进程池中空闲进程数目到达threshold
的时候触发“缩”的动作,缩回init_count
pooler相对于poolboy的缺点
用户失去了对member进程的可控度
pooler会自动管理失效的member进程,当member进程down掉了就将其重启,一旦重启了就继续使用该member进程。这么做的好处显而易见,就是方便;但是坏处也同样令人头疼,就是用户失去了对于失效的member进程的控制。比如我想自定义member进程的重启策略,这就办不到。
在用poolboy的时候,每当一个member进程down掉时用户会收到
DOWN
消息,用户可以以此自定义其重启策略。从这个角度上来说,pooler显得有点“多管闲事”。
最新文章
- 《C++ Primer》 ---- 关于变量 与 基本类型
- Sublime Text 3 安装Go语言相关插件gosublime
- Leetcode#81 Search in Rotated Sorted Array II
- QString->;string->;wstring->;LPCWSTR
- hdu 4000 树状数组
- 在linux下的apache配置https协议,开启ssl连接
- Understanding GC pauses in JVM, HotSpot's minor GC.
- String的几种比较方法对比(Compare,CompareTo, CompareOrdinal、Equals)
- OpenGL.Vertex Array Object (VAO).
- 9、Libgdx的输入处理
- Java内存模型探秘
- HDU4651 Partition 【多项式求逆】
- Struts2与spingmvc区别
- Ubuntu Desktop 编译 ffmpeg (简略的写写)
- 验证码处理类:UnCodebase.cs + BauDuAi 读取验证码的值(并非好的解决方案)
- MySQL 之 库操作
- 转: js实现全角半角检测的方法
- Java Switch支持的类型问题
- java多态--算法实现就是多态
- 系统之锹sysdig:Linux服务器监控和排障利器