第一,概述
总所周知,dubbo是一款分布式架构。其特性也没什么好说的,大概言之无非下面三项
1. 远程通信——向本地调用一样调用远程方法。
2. 集群容错
3. 服务自动发现和注册,可平滑添加或者删除服务提供者。
详解:我们常常使用 Springboot 暴露 HTTP 服务,并走 JSON 模式。但慢慢量大了,一种 SOA 的治理方案。这样可以暴露出 Dubbo 服务接口,提供给 Dubbo 消费者进行 RPC 调用。下面说下怎么配置
第二,dubbo源码下载
1,dubbox
目前dubbo最新版为2.8.4,为当当网维护的dubbox,下载地址如下
https://github.com/dangdangdotcom/dubbox/tree/dubbox-2.8.4
2,zookeeper启动,本文假定读者已经完成zookeeper的获取
https://gitee.com/paladins/design2.0/blob/master/zookeeper/zookeeper-3.4.13.tar.gz
2.1 将配置文件改为zoo.cfg
2.2为zookeeper配置环境变量后,启动
2.3 启动成功界面
第三,编译
1,编译dubbox-2.8.4 所有目录得到dubbo-2.8.4.jar
1.1 执行mvn install命令
1.2 进入target目录得到需要的jar包
2,maven安装dubbo-2.8.4.jar,命令如下
mvn install:install-file -Dfile=dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar -DgeneratePom=true
pom.xml三维坐标
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>
2,编译dubbo-admin得到管理控制台war,部署到tomcat监控服务节点。
2.1 在admin目录里得到war包
第四,服务配置
1,获得暴露本地服务dubbo:service
<dubbo:service interface="com.test.UserCenterService" ref="userCenterServiceImpl" timeout="30000" register="true" />
<!-- 和本地bean一样实现服务 -->
<bean id="userCenterServiceImpl" class="com.test.UserCenterServiceImpl" />
2,调用远程服务
<dubbo:reference interface="com.test.UserService" id="userService" check="false"></dubbo:reference>
第五,zookeeper配置
1,服务名配置
<dubbo:application name="${eda.application}" />
2,zookeeper配置
<dubbo:registry address="zookeeper://${zk.address}" register="${dubbo.register}" check="false" subscribe="true" />
3,协议路径与异常
<dubbo:protocol name="rest" port="${dubbo.port}" contextpath="${dubbo.contextPath}" extension="com.test.Exception" />
第六,代码示例
1,dobboconsumer.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">
</beans>
2,dubboprovider.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="AMS-Service"/>
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://${zk.address}" register="${dubbo.register}" check="false" subscribe="true" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<!-- <dubbo:protocol name="dubbo" port="20880" /> -->
<dubbo:protocol name="rest" server="tomcat" port="${dubbo.port}" contextpath="${dubbo.contextPath}" extension="com.upsoft.sep.bp.common.exception.SepException"/>
</beans>
第七,资源下载