公司现在要重新搭建主站的架构,将采用分布式的架构,用dubbo作为系统间的通信。
下面详细来记录下dubbo的使用。
dubbo的基本组成有:服务提供方,服务调用方,注册中心,监控中心,容器。注册中心采用dubbo官方推荐的zookeeper来完成。
第一步:安装zookeeper注册中心,将zookeeper安装在本地搭建的linux虚拟机中。
1:安装jdk
2:解压缩zookeeper压缩包
3:将conf文件夹下zoo_sample.cfg复制一份,改名为zoo.cfg
4:修改配置dataDir属性,指定一个真实目录/root/zookeeper-3.4.6/data
5:
启动zookeeper:bin/zkServer.sh start
关闭zookeeper:bin/zkServer.sh stop
查看zookeeper状态:bin/zkServer.sh status
第二步:现在来看下dubbo服务要怎么用。
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
发布服务:
<!-- 和本地服务一样实现远程服务 --> <bean id="xxxService" class="com.xxx.XxxServiceImpl" /> <!-- 增加暴露远程服务配置 --> <dubbo:service interface="com.xxx.XxxService" ref="xxxService" /> |
调用服务:
<!-- 增加引用远程服务配置 --> <dubbo:reference id="xxxService" interface="com.xxx.XxxService" /> <!-- 和本地服务一样使用远程服务 --> <bean id="xxxAction" class="com.xxx.XxxAction"> <property name="xxxService" ref="xxxService" /> </bean> |
实际开发中示例:
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="taotao-manager" />
<dubbo:registry protocol="zookeeper"
address="192.168.25.128:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.taotao.service.TbItemService" ref="tbItemServiceImpl" timeout="300000"/>
<dubbo:application name="taotao-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.25.128:2181"/>
<dubbo:reference interface="com.taotao.service.TbItemService" id="tbItemService" />