Dobbo和zookeeper的关系

以下是我对Dobbo和zookeeper的关系的理解,如有错误欢迎指出。

Dobbo是什么:Dobbo是管理中间层的工具,个人理解就是一个分布式的框架,就如空的汽车骨架,里面是空的,需要你去配置。

zookeeper:是一个存储媒介,个人理解就比如汽车的引擎,把引擎放入汽车骨架中汽车才能跑,当然汽车引擎有很多牌子,例如redis,Memcached都是不同品牌的汽车引擎,都可以搭配汽车骨架去使用。

 

 

为什么要用Dobbo:使用Dobbo的好处是解决服务越来越多时,调用量越来越大,计算机支撑不了这么多服务暴露出来的种种问题。

例如:我们可以用一台或多台计算机组成一个服务集群,通过硬编码(写死)的方式去实现分布式调用,但是碰见服务一多,高并发时,或某一台计算机挂掉的时候,那消费者(调用服务的一方)就有可能调用不到想要调用的服务,灵活性很差。

Dobbo为什么能解决这样的问题:1.因为Dobbo的服务容器负责启动,加载,运行服务提供者,

               2.生成服务提供者代理对象,服务提供者就会去注册中心去注册服务。

               3.服务消费者在启动时,生成服务消费者的代理对象,向注册中心订阅自己所需的服务。

               4.注册中心返回服务提供者地址列表(服务的IP以及服务名称)给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。(不用担心此事注册中心挂掉地址列表会丢失,因为在消费者在订阅服务的时候就把地址列表储存到本地,只要订阅完成一定能找对对应的服务进行消费)

               5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

               6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

因此,解决了调用不到服务,灵活性差的问题,因为服务一定会被调用到。

 

 

大家为什么要使用ZK:ZK的好处:1.首先是负载均衡,单注册中心的承载能力是有限的,在流量达到一定程度的时候就需要分流,负载均衡就是为了分流而存在的,而一个ZooKeeper群配合相应的Web应用就可以很容易达到负载均衡;

                2.资源同步,单单有负载均衡还不够,节点之间的数据和资源需要同步,ZooKeeper集群就天然具备有这样的功能;

                3.命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动的时候,向ZK上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,这个操作就完成了服务的发布。

posted @ 2020-05-04 21:25  liweibin  阅读(232)  评论(0编辑  收藏  举报