目的: 用于大规模服务化,通过在消费方获取服务提供方的地址列表,实现负载均衡,减轻服务器压力。

最简单调用图 (图片来自网络)
896229-20170511100426816-410972838.png

节点角色说明:

l Provider: 暴露服务的服务提供方。

l Consumer: 调用远程服务的服务消费方

l Registry: 服务注册与发现的注册中心。

l Monitor: 统计服务的调用次调和调用时间的监控中心。

l Container: 服务运行容器。

调用关系说明:

l 0. 服务容器负责启动,加载,运行服务提供者。

l 1. 服务提供者在启动时,向注册中心注册自己提供的服务。

l 2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

l 3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

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

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

简单用法

需与spring集成(也可以调用api,但官方不推荐,且代码臃肿)。

Java代码跟正常功能一样,只需要一个接口和一个实现类,像正常spring一样配置。

需要详细说明的是xml配置:

提供者(服务端

clipboard.png

消费者(调用客户端)

clipboard.png

代码简单解释: 见对应的注释。

在服务端只需用:
<dubbo:service executes="200" retries="0" interface="com.XXX.facade.XXXFacade" ref="xXXFacade" />
这段配置来暴露服务的接口,ref的值是spring配置的bean。

在客户端:
<dubbo:reference interface="com.XXX.facade.XXXFacade" id="xXXFacade" check="false" />,
来声明一个spring的bean,然后可以在需要的地方获取这个bean,接着直接调用该接口的所有方法。


Dawson
22 声望0 粉丝

人应该趁着年轻去旅行,只是不要忘了回家的路。。


引用和评论

0 条评论