zookeeper结合dubbo实现分布式接口调用

来源:互联网 发布:淘宝店铺宣传语 编辑:程序博客网 时间:2024/05/14 19:54

一、Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务, 目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

1)官网下载zookeeper解压到指定文件夹下并修改配置文件
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=F:\zookeeper-3.5.2-alpha\data\zookeeper
dataLogDir=F:\zookeeper-3.5.2-alpha\logs\zookeeper
windows下双击zkServer.cmd启动服务

2)集群配置也很简单
tickTime=2000
dataDir=/home/hadoop/storage/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=slave-01:2888:3888
server.2=slave-02:2888:3888
server.3=slave-03:2888:3888

二 dubbo admin管理界面安装

1 下载dubbo-admin-2.8.4.war 放到新的tomcat webapp下 修改dubbo.property文件指定zookeeper地址以及密码,两个都是密码,用户名分别为root,guest,dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=waylon
dubbo.admin.guest.password=Waylon

三 Dubbo配置

1 生产者端配置方式(单机)

<dubbo:application name="${app.name}" owner="${app.owner}" />    <dubbo:registry address="zookeeper://127.0.0.1:2181" />    <dubbo:protocol name="${dubbo.protocol.name}"        host="127.0.0.1"       port="20880"       threads="${dubbo.provider.threads}"/>    <dubbo:monitor protocol="registry" />    <dubbo:provider timeout="${dubbo.timeout}" executes="200" cluster="failfast"/>    <dubbo:consumer check="false" />
<!—暴露接口 -->
    <dubbo:service interface="com.zwdai.search.service.IIndexService" ref="indexServiceImpl" version="2.5.3" />    <dubbo:service interface="com.zwdai.search.service.ISearchService" ref="searchServiceImpl" version="2.5.3" />    <bean id="indexServiceImpl" class="com.zwdai.search.impl.IndexServiceImpl" />          <bean id="searchServiceImpl" class="com.zwdai.search.impl.SearchServiceImpl" />

启动过程中可能遇到异常Caused by: java.net.BindException: Address already in use: bind此异常不影响不同应用之间的通信,可以忽略。
2 消费者端调用zookeeper需要做的工作
1) 配置maven依赖,把需要的service以jar的形式添加到maven依赖下
配置消费者需要的接口
消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 - <dubbo:application name="admin-consumer2"/>

 <dubbo:registry id="qd_registry"  protocol="zookeeper" address="${dubbo.zk}" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService 
   <dubbo:reference id="ficoService" interface="com.zwdai.fico.api.FicoService" />

使用dubbo协议 注册中心暴露服务地址 <dubbo:registry id="wh_registry" protocol="dubbo" address="zookeeper://172.16.16.28:2181"/>
生成远程服务代理,可以像使用本地bean一样使用demoService

   <dubbo:reference id="searchService" interface="com.zwdai.search.service.ISearchService" version="2.5.3" />   <dubbo:reference id="indexService" interface="com.zwdai.search.service.IIndexService" version="2.5.3" /> 
<!-- 注解扫描 -->
<dubbo:annotation package="com.zwdai.webadmin.contorller" />

上述配置通过id的区分可以配置多个zookeeper中心

注意事项

1发布接口可以通过maven的 clean deploy即可把相应的model上传至私服
2如果项目无法访问可以检查一下啊tomcat moduel是否修改

阅读全文
0 0
原创粉丝点击