dubbo简单配置

来源:互联网 发布:mac 安装sass出错 编辑:程序博客网 时间:2024/04/28 08:02

dubbo模块结构图:




1.下载zookeeper-3.4.5.tar.gz,并解压到本地。

我的本地地址为:

D:\zookeeper-3.4.5

2.配置zookeeper:

在zookeeper文件夹下打开conf,创建zoo.cfg,内容如下:

tickTime=200000
initLimit=10
syncLimit=5
dataDir=D:\\zk\\tmp\\zookeeper
dataLogDir=D:\\zk\\logs\\zookeeper

clientPort=8083


1.tickTime:Client-Server通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000

2.initLimit:Leader-Follower初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5

3.syncLimit:Leader-Follower同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2 

4.dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data

5.clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=8083

6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B

server.1=itcast05:2888:3888
server.2=itcast06:2888:3888
server.3=itcast07:2888:3888

7.ZK为什么设置为奇数个?
zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;同理你多列举几个:2 -> 0; 3 -> 1; 4 - >1; 5 -> 2; 6 -> 2会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所以为了更加高效,何必增加那一个不必要的zookeeper呢。



3.启动zookeeper:

在zookeeper文件夹下打开bin目录,双击zkServer.cmd.

如果双击后出现闪退现象,请在zkServer.cmd末尾行加上pause阻止cmd退出,并查看原因。


服务消费方和服务提供方引入dubbo,并防止引用dubbo自己的低版本spring,pom如下:

<!-- dubbo配置开始(并去掉spring低版本依赖开始 ) --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion><exclusion><artifactId>netty</artifactId><groupId>org.jboss.netty</groupId></exclusion></exclusions></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.6</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><!-- dubbo配置结束 -->



dubbo服务提供方配置:

在服务方工程的applicationContext.xml所在resource资源下创建dubbo-provider.xml,内容如下:

<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="tdemo" />    <!-- 使用zookeeper注册中心暴露服务地址 -->    <dubbo:registry address="zookeeper://127.0.0.1:8083" />    <!-- 用dubbo协议在20880端口暴露服务 -->    <dubbo:protocol name="dubbo" port="20880" />        <!-- 服务提供方 -->    <dubbo:service interface="com.tanlei.service.TestDubboService" ref="testDubboService" />      </beans>

然后在applicationContext.xml中引入dubbo-provider.xml,如下:

<!-- 引入dubbo配置文件 -->
<import resource="dubbo-provider.xml"></import>


dubbo服务消费方配置:

在消费方工程的applicationContext.xml所在resource资源下创建dubbo-consumer.xml,内容如下:

<?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="CognosPro"></dubbo:application>   <!-- 使用zookeeper注册中心暴露服务地址 -->     <dubbo:registry address="zookeeper://127.0.0.1:8083" />     <!-- 要引用的服务 -->     <dubbo:reference interface="com.tanlei.service.TestDubboService" id="testDubboService"></dubbo:reference>      </beans> 


然后在applicationContext.xml中引入dubbo-consumer.xml,如下:

<!-- 引入dubbo配置文件 -->
<import resource="dubbo-consumer.xml"></import>


如何提供service?

我们将接口做为一个jar工程,该jar工程只提供接口和实体类:


pom如下,说明是一个jar工程:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.tanlei</groupId><artifactId>testservice</artifactId><version>0.0.1-SNAPSHOT</version><name>testservice</name><description>测试</description><packaging>jar</packaging></project>

然后在服务提供方,我这里是tdemo中引入该jar工程,pom如下:


接口具体实现也在该服务提供方:



服务消费方引入jar工程testservice,pom如下:


服务消费方试用testservice的接口:


访问上面的接口,如果访问成功,说明基本调用成功。

0 0
原创粉丝点击