项目说明
-
做分布式开发时,多个服务器节点,通常需要通过 nginx 进行 负载均衡,这样做固然有效,但nginx 有些缺点无法弥补
-
nginx 需要自行手动维护服务节点信息
-
节点的状态无法从外界得知,节点失效后只能批量重启,不能维护节点状态
-
nginx 的负载压力过大,且nginx 崩溃之后,整个服务都宕机了,所以需要 双 nginx 备份,这样以来 nginx 的部署和维护又成了一个问题
-
zookeeper 通过集群存储信息的方式,自身有高可用性,且能够动态维护服务节点信息,另外使用zookeeper 能够解决节点状态不透明的问题,节点的存活信息一目了然
项目原理说明
- 本项目使用 zookeeper 的两种 zNode
- 永久节点(节点永久存在)
- 临时节点(服务存活即节点存在,服务失效即节点自动删除)
- 临时节点由于服务节点断开,节点就会被删除,所以临时节点不可以创建子节点
- 永久节点用于保存服务上的连接数量
- 如 ls /proxy/servers/127.0.0.1:9090
[request1, request2, request3...]
- 临时节点用于维护服务存活信息,如服务宕机,则临时节点被删除,在客户端选择时则排除该服务,还可二次开发,将节点信息进行扩展,做成分布式服务的监控
- 基本原理如下图
该项目已开源
- github 地址
https://github.com/Laurel-rao/zookeeper_load_balance
版权声明:本文为weixin_42290927原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。