Zookeeper 实现负载均衡

原理解析

         架构图
         Zookeeper 实现负载均衡_第1张图片
        每台WorkServer启动的时候都会到Server创建临时节点。
        每台ClientServer启动的时候,都会到Server节点下面取得所有WorksServer节点,并通过一定算法取得一台并与之连接。

         服务端主体流程
         Zookeeper 实现负载均衡_第2张图片
        有ClientServer与之建立连接,这台WorksServer的负载计数器加一,断开连接负载计数器减一。负载计数器作为客户端负载均衡算法的依据,客户端会选择负载最轻的WorksServer建立连接。

         客户端流程
         Zookeeper 实现负载均衡_第3张图片

        服务端核心类
         Zookeeper 实现负载均衡_第4张图片
        ServerRunner 调度类 
        RegistProvider 服务端启动时的注册过程
        ServerHander 处理与客户端之间的连接
        DefaultBalanceUpdateProvider 连接建立与断开,修改负载信息
        
        客户端核心类
         Zookeeper 实现负载均衡_第5张图片
        ClientRunner 调度类
        ClientHander 处理与服务器之间的通信
        BanceProvider 负载的算法
        ServerData 服务器和客户端公用的类,计算负载等使用
    
        代码: https://github.com/JeromeSuz/demo_zookeeper/tree/master/src/main/java/com/demo/_6balance

你可能感兴趣的:(分布式)