dubbo简单配置

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的接口:


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值