面向服务编程之Dubbo

随着分布式系统在互联网的不断普及,各种架构层出不穷,但核心思想都是将各个相关的系统分离出去,互相暴露出接口以备调用。调用方式一般有以下几种

1Webservice:基于soap协议,安全性较高,但效率较低。

2、使用restful形式的服务:http+json。安全性能较差,效率较高,系统之间如果频繁调用,不方便管理。

3、使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。


dubbo是阿里的开源项目,目前在互联网应用最为广泛。所以本文将对dubbo形式的系统通信方式进行大致讲解。


Dubbo的架构图

面向服务编程之Dubbo

节点角色说明:

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

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

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

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

Container: 服务运行容器。

注册中心我们一般使用Zookeeper来实现,实际编程中,我们大概只关注Consumer和Provide,即服务的提供者,和服务的调用者。


具体使用方法

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可。


发布服务者:


    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="cn.natonr" />
    <!--远程注册中心-->
    <dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="cn.naton.service.ItemService" ref="itemServiceImpl" timeout="600000"/>

 

调用服务者:

<!-- 引用dubbo服务 -->
    <dubbo:application name="cn-naton-web"/>
<!--远程注册中心-->
    <dubbo:registry protocol="zookeeper" address="192.168.25.128:2181"/>
<!--声明你要调用的服务-->  
    <dubbo:reference interface="cn.naton.service.ItemService" id="itemService" />



配置完成后,即可在web层调用service的方法,无需访问对应工程的ip,一切都由dubbo进行管理。



铸剑团队签名:

【总监】十二春秋之,[email protected]

【Master】戈稻不苍,[email protected]

【Java开发】雨鸶,[email protected];思齐骏惠,[email protected];小王子,[email protected];巡山小钻风,[email protected]

【VS开发】豆点,[email protected]

【系统测试】土镜问道,[email protected];尘子与自由,[email protected]

【大数据】沙漠绿洲,[email protected];张三省,[email protected]

【网络】夜孤星,[email protected]

【系统运营】三石头,[email protected];平凡怪咖,[email protected]

【容灾备份】秋天的雨,[email protected]

【安全】保密,你懂的。

原创作者:小王子

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。