面向服务编程之Dubbo

来源:互联网 发布:php redis队列处理秒杀 编辑:程序博客网 时间:2024/06/05 08:11

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

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

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

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


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进行管理。



铸剑团队签名:

【总监】十二春秋之,3483099@qq.com;

【Master】戈稻不苍,han169@126.com;

【Java开发】雨鸶,343691194@qq.com;思齐骏惠,qiangzhang1227@163.com;小王子,545106057@qq.com;巡山小钻风,840260821@qq.com;

【VS开发】豆点,2268800211@qq.com;

【系统测试】土镜问道,847071279@qq.com;尘子与自由,695187655@qq.com;

【大数据】沙漠绿洲,caozhipan@126.com;张三省,570417591@qq.com;

【网络】夜孤星,11297761@qq.com;

【系统运营】三石头,261453882@qq.com;平凡怪咖,591169003@qq.com;

【容灾备份】秋天的雨,18568921@qq.com;

【安全】保密,你懂的。

原创作者:小王子

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



原创粉丝点击