1. Zookeeper的作用
1:注册服务
zookeeper管理一系列服务,提供者通过将自己的信息注册到zookeeper上与某个服务绑定来提供此项服务;消费者通过
指定服务名来调用服务.
哪一个服务由哪一个/哪些机器来提供必需让调用者知道,简单来说就是ip+port和服务名称的对应关系。zookeeper通过心跳机制检测挂掉的机器并将挂掉机器的ip与服务的对应关系从列表中移除。
2:负载均衡
开启多个zookeeper注册中心,配置成zookeeper集群实现;,负载均衡就是为了分流而存在的,一个ZooKeeper集群配合相应的Web应用就可以很容易达到负载均衡
3:资源同步
单有负载均衡还不够,zookeeper节点之间的数据和资源需要同步,zooKeeper集群可以实现zookeeper节点之间的数据同步
4:命名服务
通过树状结构维护全局的服务地址列表,服务提供者在启动的时候,向ZK上的指定节点/dubbo/${serviceName}/
providers目录下写入自己的URL地址,这个操作就完成了服务的发布
3:高并发
一个服务可以由多台机器分别提供; 简单来说就是横向扩展,在不更改代码的情况下通过添加机器来提高运算能力。通过添加新的机器向zookeeper注册同一服务,服务的提供者多了能服务的客户就多了。
2. Dubbo的作用
dubbo是管理中间层的工具,是一个框架(类似spring框架),也是一种协议.用于实现服务消费者对提供者的远程方法调用。注意这里的dubbo只是一个框架,至于架子上放什么完全取决于你。这个框架中要完成调度必须要有一个分布式的注册中心,储存所有服务的元数据,你可以用zookeeper,也可以用别的,只是大家都用zookeeper。
3. Zookeeper 和 Dubbo的关系
Dubbo一般推荐使用Zookeeper作为服务注册中心。Dubbo将注册中心进行抽象,使得它可以外接不同的存储媒介来作为注册中心提供服务,如ZooKeeper,Memcached,Redis等。