motan负载均衡/zookeeper集群/zookeeper负载均衡的关系

Posted kingking512

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了motan负载均衡/zookeeper集群/zookeeper负载均衡的关系相关的知识,希望对你有一定的参考价值。

motan/dubbo支持负载均衡、zookeeper有集群的概念、zookeeper似乎也能做负载均衡,这3者是什么关系呢?

先说zooKeeper,我们都知道在与分布式框架motan/dubbo等联合使用时,zookeeper的基本功能是做注册中心,也就是多个服务提供方,将自己发布到zookeeper上。这样,服务的消费方就可以不直接硬编码服务提供方的地址,而是通过zookeeper,使用服务名称(就是一个字符串)查找到服务,从而调用服务提供方的方法。

从这个原理上说,似乎通过zookeeper来实现负载均衡是顺理成章的 —— 在zookeeper上注册多个相同功能的服务,消费方调用时,只需要通过zookeeper控制一下提供哪个服务即可(轮询、加权轮询、最小负载、IPHash...),这就实现了web层的负载均衡。

这个理解是对的。不过,当zookeeper与motan、dubbo这些框架联合使用时,一般就没有必要这么做了,可直接使用这些框架提供的负载均衡能力即可。原因,

1. zookeeper并未提供现成的负载均衡功能,只是提供了存储/注册服务、查找服务的功能,负载均衡对zookeeper来说是上层应用,需要服务实现方和消费方自己实现。理论上来说,不用zookeeper,用redis、数据库、map之类的,也完全可以达到同样的目的,只有可以存储多个服务标记,并可以通过标记查找到服务就可以自己在应用层做软负载了。

2. motan、dubbo本身就提供的负载均衡的能力,这个甚至不需要编码,只需要在配置文件中配置一下即可。

zookeeper集群是什么概念呢?

zookeeper集群是为了解决zookeeper自己单点的问题,也就是: zookeeper是注册中心,很重要,那要是zookeeper自己挂了怎么办?为了防止一个zookeeper挂了导致整个系统无法正常调用服务,可以用多个zookeeper来组成集群,一个挂了,还有别的。因此,zookeeper集群与负载均衡是没有关系的。

以上是关于motan负载均衡/zookeeper集群/zookeeper负载均衡的关系的主要内容,如果未能解决你的问题,请参考以下文章

zookeeper+dubbo+nginx集群和负载均衡简单例子

Zookeeper 集群安装

Java进阶:Zookeeper相关笔记

Dubbo集群-负载均衡

zookeeper的负载均衡能取代nginx吗

zookeeper的负载均衡能取代nginx吗