一、分布式的项目

项目中新增依赖:

		<!-- 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进行心跳检测。

  1. 如果原来是一个大项目,则要进行拆分,一般情况下会把:
    一部分:JSP+Controller+相关的调用
    一部分:Service+Mapper
    如果还有其他服务则继续拆分。

  2. 如果本身就是一个一个的分布式项目则,只需要新增相关依赖即可。

二、启动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客户端发布项目

  1. 发布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" />
	……
  1. 调用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自带负载均衡策略,可在客户端页面中进行设置。
对每一个服务进行设置:随机、轮询、最少并发。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐