Zookeeper的应用场景---(二)负载均衡

负载均衡

用来对多个计算机集群、网络连接、CPU、磁盘驱动器或其他资源进行分配负载。达到优化资源使用、最大化吞吐量、最小化响应时间和避免过载的目的。

负载均衡分为:硬件负载、软件负载

Zookeeper负载均衡实现原理:

使用:树形结构、Watcher通知机制等特点

1、Zookeeper作为服务的注册中心。各服务都注册在Zookeeper相应节点上,当服务启动时,向节点注册服务信息。

2、服务调用者在注册中心查找提供服务的服务器列表,并实现Watcher接口,在节点数据变化时,Zookeeper会主动通知,服务调用者重新获取。

3、服务调用者获取到服务列表后,缓存本地,根据负载均衡策略进行调用。

优点:节点信息变化主动通知

缺点:没有负载均衡策略,需要调用者自己实现。

常用的负载均衡策略

  • 轮询:请求顺序循环发送每个服务器,若其中一台服务器故障,就会跳过,且不参加下次轮询,直至恢复正常。
  • 比率:每个服务器分配一定权重,根据这个权重将请求进行分配,若其中一台服务器故障,就会跳过,且不参加下次分配,直至恢复正常。
  • 优先权:给所有服务器分组,给每个组定义优先权,将用户的请求分配给优先级最高的服务器组(在同一组内,采用预先设定的轮询或比率算法,分配用户的请求);当最高优先级中所有服务器或者指定数量的服务器出现故障,把请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。
  • 最少连接数:记录当前每台服务器或者服务端口上的连接数,新的连接将传递给连接数最少的服务器。当其中某个服务器发生故障,就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  • 最快响应时间:新的连接传递给那些响应最快的服务器。当其中某个服务器发生故障,就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  •  哈希算法:将客户端的源地址,端口进行哈希运算,根据运算的结果转发给一台服务器进行处理,当其中某个服务器发生故障,就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。

猜你喜欢

转载自blog.csdn.net/RuningSun/article/details/81537026