Dubbo
约 983 字大约 3 分钟
1. 如何实现远程调用?
- 1、Webservice:效率不高基于soap协议。项目中不推荐使用。
- 2、使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。(不同语言不同公司使用)
- 3、使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。(同语言使用)
2. Dubbo使用
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
远程服务中spring的配置,在本地服务的基础上,只需做简单配置,即可完成远程化:
将上面的local.xml配置拆分成两份,将服务定义部分放在服务提供方remote-provider.xml,将服务引用部分放在服务消费方remote-consumer.xml。并在提供方增加暴露服务配置dubbo:service,在消费方增加引用服务配置dubbo:reference
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
以上两句配置在xml中
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="e3-manager" />
<!-- 配置注册中心集群 -->
<dubbo:registry protocol="zookeeper"address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<bean id="xxx" class="itemServiceImpl实现类">
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="cn.e3mall.service.ItemService接口" ref="xxx" />
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
以上两句配置在xml中
<!-- 引用dubbo服务 -->
<dubbo:application name="e3-manager-web"/>
<!-- 配置注册中心集群 -->
<dubbo:registry protocol="zookeeper" address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"/>
<dubbo:reference interface="cn.e3mall.service.ItemService接口" id="itemService起一个名字,相当于bean的name" />
在controller层
@Autowired
private ItemService itemservice使用即可
3. 注册中心Zookeeper
- 官方推荐使用zookeeper注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
- 使用dubbo-2.3.3以上版本,建议使用zookeeper注册中心。
- Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,
- 适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用
- Zookeeper优点:
- 1、可以作为集群的管理工具使用。
- 2、可以集中管理配置文件。
4. Dubbo的安装
第一步:安装jdk
第二步:把zookeeper的压缩包上传到linux系统(目录随意)
第三步:解压缩压缩包tar -zxvf zookeeper-3.4.6.tar.gz
第四步:进入zookeeper-3.4.6目录,创建data文件夹。
第五步:把zookeeper-3.4.6目录下的conf目录将zoo_sample.cfg改名为zoo.cfg :mv zoo_sample.cfg zoo.cfg
第六步:修改zoo.cfg的data属性设置为data所在的目录:vim zoo.cfg然后输入i编辑 dataDir=/usr/zookeeper-3.4.6/data 然后Esc,然后:wq保存并退出
第七步:进入bin目录启动zookeeper
- ./zkServer.sh start 关闭:./zkServer.sh stop 查看状态:./zkServer.sh status
- 注意:需要关闭防火墙。service iptables stop 永久关闭修改配置开机不启动防火墙:chkconfig iptables off
- 如果不能成功启动zookeeper,需要删除data目录下的zookeeper_server.pid文件。
第八步:Dubbo监控中心的安装
- cp dubbo-admin-2.5.4.war apache-tomcat-7.0.47/webapps/dubbo-admin.war
- 进入tomcat的bin目录下启动tomcat
第九步:访问http://192.168.25.167:8080/dubbo-admin/ 用户名:root密码:root
如果监控中心和注册中心在同一台服务器上,可以不需要任何配置。
如果不在同一台服务器,需要修改配置文件dubbo.properties:
/root/apache-tomcat-7.0.47/webapps/dubbo-admin/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181注册中心地址
dubbo.admin.root.password=root root用户的密码
dubbo.admin.guest.password=guest