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显得有点“多管闲事”。
pooler [转]的更多相关文章
- pooler 连接池中报错" error_no_members"
连接池驱动,pooler 在使用中会报错" error_no_members" 分析:可能有以下3个地方对其有影响: 1)member 可能没回收: 2)wait_for_p ...
- [Erlang 0114] Erlang Resources 小站 2013年7月~12月资讯合集
Erlang Resources 小站 2013年7月~12月资讯合集,方便检索. 附 2013上半年盘点: Erlang Resources 小站 2013年1月~6月资讯合集 小站地 ...
- redis lua
需求是在缓存最近一周内用户所有消息列表,考虑用Redis 存储:为每个存储一个独立Sorted Set,value 为消息体,Score 为MessageId,用以实现增量消息同步. 问题就来了:So ...
- OpenERP ORM 对象方法列表
OpenERP对象支持的字段类型有,基础类型:char, text, boolean, integer, float, date, time, datetime, binary:复杂类型:select ...
- Tomcat:基于HTTP协议的Connector配置
Tomcat Connector 是请求接收环节与请求处理环节的连接器,具体点说,就是将接收到的请求传递给Tomcat WEB容器进行处理. Tomcat可以处理的不同协议的请求,例如HTTP协议.A ...
- SHARE NOTHING SHARE EVERYTHING
http://mp.weixin.qq.com/s?__biz=MjM5ODYwMjI2MA==&mid=2649736156&idx=1&sn=23931f48282f6ef ...
- React v16-alpha 从virtual dom 到 dom 源码简读
一.物料准备 1.克隆react源码, github 地址:https://github.com/facebook/react.git 2.安装gulp 3.在react源码根目录下: $npm in ...
- pgbouncer配置
DESCRIPTION pgbouncer is a PostgreSQL connection pooler. Any target application can be connected to ...
- worker_pool的例子
鉴于poolboy的坑,pooler不支持r18,又有在知乎上看到大神推荐worker_pool这个进程池框架(工作者进程在创建时崩溃,worker_pool不受影响),所以研究了下,贴个小例子 my ...
随机推荐
- The type or namespace name 'Html' does not exist in the namespace 'System.Web.Mvc' (are you missing an assembly reference?)
The type or namespace name 'Html' does not exist in the namespace 'System.Web.Mvc' (are you missing ...
- 实现多线程sokect
上一篇文章说到怎样写一个最简单的Java Socket通信,但是在上一篇文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后 续Clien ...
- 一个简单的NoSQL内存数据库—Berkeley DB基本操作的例子
一个简单的NoSQL内存数据库—Berkeley DB基本操作的例子 最近,由于云计算的发展,数据库技术也从结构式数据库发展到NoSQL数据库,存储模式从结构化的关系存储到现在如火如荼的key/val ...
- 【Linux】可重入函数和线程安全的区别与联系【转】
转自:http://blog.csdn.net/scenlyf/article/details/52074444 版权声明:本文为博主原创文章,未经博主允许不得转载. *****可重入函数 函数被不同 ...
- vue中v-model的一点使用心得
我的data里面有个值是字典的对象: config_template: {}, 这个值会被后端返回的数据填充,填充后大概是这样的: u 'config_template': { u 'startSh ...
- JS-严格模式、非严格模式
2018年11月14日晚上,我在“深入理解javascript”书上第一次知道“严格模式”“非严格模式”这2个名词: “严格模式”使用指令:“use strict”: 这个指令我其实有经常看到,在其他 ...
- POJ 1054 The Troublesome Frog 枚举
这个题分类是dp,想了一会没有想出来,就去看别人题解了.发现别人题解全是暴力枚举= =.复杂度超过 N^2,但可能是剪枝的作用,没有超时. 思路:将所有点按坐标由小到大排序.两两枚举点p1,p2,并判 ...
- python在程序中通过Windows打开文件
import os os.startfile(r'D:\test_input.html')
- https的实现原理
加密算法 有两种基本的加解密算法类型: 1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES.AES等: 2)非对称加密:密钥成对出现(且根据公钥无法推知私钥, ...
- Android中的多线程断点续传
Android多线程断点下载的代码流程解析: 运行效果图: 实现流程全解析: Step 1:创建一个用来记录线程下载信息的表 创建数据库表,于是乎我们创建一个数据库的管理器类,继承SQLiteOpen ...