• pooler [转]


    poolerpoolboy都是用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进程的时候可以标记归还进程的状态,可以为okfail。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显得有点“多管闲事”。

  • 相关阅读:
    Algs4-2.3.11快排遇与切分值相同时继续扫描是平方级
    使用kubeadm搭建Kubernetes集群
    kubernetes发布解释型语言应用的最佳实践
    docker化php项目发布方式
    linux服务器免密钥登录
    cp 递归复制时 复制实际文件而不是链接文件
    nginx配置http访问自动跳转到https
    nfs服务器
    nginx防止恶意域名解析
    如何建立自己的知识体系?(摘)
  • 原文地址:https://www.cnblogs.com/unqiang/p/5210843.html
Copyright © 2020-2023  润新知