天天看点

使用Zookeeper实现负载均衡

项目说明

  1. 做分布式开发时,多个服务器节点,通常需要通过 nginx 进行 负载均衡,这样做固然有效,但nginx 有些缺点无法弥补
  2. nginx 需要自行手动维护服务节点信息
  3. 节点的状态无法从外界得知,节点失效后只能批量重启,不能维护节点状态
  4. nginx 的负载压力过大,且nginx 崩溃之后,整个服务都宕机了,所以需要 双 nginx 备份,这样以来 nginx 的部署和维护又成了一个问题
  5. zookeeper 通过集群存储信息的方式,自身有高可用性,且能够动态维护服务节点信息,另外使用zookeeper 能够解决节点状态不透明的问题,节点的存活信息一目了然

项目原理说明

  1. 本项目使用 zookeeper 的两种 zNode
    1. 永久节点(节点永久存在)
    2. 临时节点(服务存活即节点存在,服务失效即节点自动删除)
    3. 临时节点由于服务节点断开,节点就会被删除,所以临时节点不可以创建子节点
  2. 永久节点用于保存服务上的连接数量
    • 如 ls /proxy/servers/127.0.0.1:9090
    [request1, request2, request3...]
               
  3. 临时节点用于维护服务存活信息,如服务宕机,则临时节点被删除,在客户端选择时则排除该服务,还可二次开发,将节点信息进行扩展,做成分布式服务的监控
  4. 基本原理如下图
    使用Zookeeper实现负载均衡

该项目已开源

  1. github 地址

    https://github.com/Laurel-rao/zookeeper_load_balance

继续阅读