面向服务编程之Dubbo
随着分布式系统在互联网的不断普及,各种架构层出不穷,但核心思想都是将各个相关的系统分离出去,互相暴露出接口以备调用。调用方式一般有以下几种
1、Webservice:基于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进行管理。
铸剑团队签名:
【总监】十二春秋之,[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];
【安全】保密,你懂的。
原创作者:小王子
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。