Dubbo+Zookeeper的分布式部署
一、分布式的项目项目中新增依赖:<!-- dubbo相关 --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><vers
·
一、分布式的项目
项目中新增依赖:
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<!-- 一般的会排除spring,因为会在项目中首先引入Spring的依赖 -->
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Zookeeper相关依赖 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.7</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
zkclient是独立运行的,会主动和zookeeper进行心跳检测。
-
如果原来是一个大项目,则要进行拆分,一般情况下会把:
一部分:JSP+Controller+相关的调用
一部分:Service+Mapper
如果还有其他服务则继续拆分。 -
如果本身就是一个一个的分布式项目则,只需要新增相关依赖即可。
二、启动Zookeeper
#############################################################
[root@dataNode6 bin]# ./zkServer.sh start
[root@dataNode6 bin]# ./zkServer.sh status
[root@dataNode6 bin]# ./zkServer.sh stop
#############################################################
三、spring整合dubbo约束
在spring的容器中配置dubbo的约束
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
四、dubbo使用zookeeper客户端发布项目
- 发布dubbo服务
<!-- 使用dubbo发布服务 -->
<!-- 1. 定义应用名称,提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="myself_service" />
<!-- 2. 注册中心地址-->
<dubbo:registry protocol="zookeeper" address="192.168.34.7:2181" />
<!-- 3. 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 4. 声明需要暴露的服务接口,一定要加上id -->
<dubbo:service id="searchServiceInf" interface="com.myself.service.SearchServiceInf" ref="searchServiceImp" />
<dubbo:service id="attrServiceInf" interface="com.myself.service.AttrServiceInf" ref="attrServiceImp" />
……
- 调用Dubbo服务
<!-- 1. 定义应用名称 -->
<dubbo:application name="myself_client" />
<!-- 2. 注册中心地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.34.7:2181" />
<!-- 3. 需要引用的接口服务,从注册中心中读取id定义的数据后,封装为interface类型,并且,这些id就是在程序中定义的@Autowaried的字段属性 -->
<dubbo:reference interface="com.myself.service.SearchServiceInf" id="searchServiceInf">
</dubbo:reference>
<dubbo:reference interface="com.myself.service.AttrServiceInf" id="attrServiceInf">
</dubbo:reference>
切记:
Dubbo:传递数据的java对象需要序列化(implements Serializable)。
重复访问的时差,一定要大于心跳的时间
五、Dubbo的监控中心
自带的监控项目:dubbo-admin-version.war,Tomcat的web应用。
关于负载均衡:
Dubbo自带负载均衡策略,可在客户端页面中进行设置。
对每一个服务进行设置:随机、轮询、最少并发。
更多推荐
已为社区贡献2条内容
所有评论(0)