[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PvWo3Kwo-1660437015194)(https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1548049959592&di=ee6662254e156a19f47361f7e110256a&imgtype=0&src=http%3A%2F%2Fimage.bubuko.com%2Finfo%2F201801%2F20180109205042592998.png)]
节点角色说明:
调用关系说明:
Dubbo建议使用Zookeeper作为服务的注册中心
1.Zookeeper 的作用:
Zookeeper用来注册服务和进行负载均衡,哪一个服务由那一台机器来提供必需让调用者知道,简单来说就是IP地址和服务名称的对应关系。当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉,调用者无法知晓,如果不更改代码会继续请求挂掉的机器提供服务。Zookeeper通过心跳机制可以检测挂掉的机器的IP和服务对应关系从列表关系中删除。至于支持高并发,简单来说就是横向扩展,在不更改代码的情况通过增加机器数量提高运算能力。通过添加新的机器向Zookeeper注册服务,服务的提供者多了能服务的客户就多了。
2.dubbo:
是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和提供者需要调度,dubbo提供一个框架解决这些问题。注意这里的dubbo只是一个框架,至于你在框架上放什么东西,完全取决于你,就像一个汽车骨架,你需要配你的轮子引擎。这个框架中要完成调度必须需要一个分布式的注册中心,存储所有服务的元数据,你可以用Zookeeper,你也可以用别的。
3.dubbo和Zookeeper的关系
dubbo将注册中心进行抽象,使得它可以外接不同的存储媒介给注册中心提供服务,有Zookeeper,memcached,redis等。
引入了Zookeeper作为存储媒介,也就把Zookeeper的特性引进来了。首先是负载均衡,但注册中心的承载能力是有限的,在流量达到一定程度的时候要进行分流,负载均衡就是为分流而生的,一个Zookeeper群配合相应的web应用就可以很容易达到负载均衡;资源同步,单单有负载均衡还不够,节点之间的数据和资源需要同步,Zookeeper集群就天然具备有这样的功能;命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动的时候,向Zookeeper上指定的节点/dubbo/${serviceName}/providers目录下写入自己的url地址,这个操作就完成了服务的发布。其他特性还有master选举,分布式锁等。
。