Dubbo+zookeeper使用方法以及注意事项
Dubbo+zookeeper使用方法以及注意事项
最近在一个项目中想做一个数据库查询的服务,目的是将数据库查询这块从程序中脱离出来,形成一个公共的服务平台,大家都可以调用,经过考虑决定选用Dubbo+zookeeper这个经典的组合来实现,以下记录我事件中遇上的问题,希望大家可以借鉴,同时对自己也是一种备忘吧!
1、对应的包下载:
基本就是Spring的包+zookeeper的包+dubbo的包
生产部分配置如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="DBService_provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.0.107:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20881" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.moorgen.service.IBaseDaoService"
ref="IBaseDaoService" loadbalance="roundrobin" />
<!-- 具体的实现bean -->
<bean id="IBaseDaoService" class="com.moorgen.service.impl.BaseDaoServiceImpl" />
</beans>
注意事项:
<!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20881" /> 一个zookeeper要想注册多个服务,改变port即可;
消费者对应的配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="DB_consumer" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.0.107:2181" />
<dubbo:reference id="iBaseDaoService" interface="com.moorgen.service.IBaseDaoService" timeout="2000" check="false" />
</beans>
注意:其中接口中对应的参数如果是类的话必须对应;如:IBaseDaoService.SelectByParam(URD urd); 其中两边的URD类的位置必须一样;