什么是Dubbo框架?( 五 )


接下来我们按照官方建议来解决第一个问题
创建新模块: api-manager,用于统一管理我们的服务接口、服务模型、服务异常
将pojo和Service复制到我们的新项目中
其他工程里的pojo和Service接口我们都干掉
这时候项目必然报错,但是我们至少解决了第一个问题
怎么能把我们上面的项目里的pojo和接口引入呢?
这时候就要用到我们的Maven了(其实拷贝jar包也可以,但是太low了)
在提供者和消费者项目的pom中引入我们的api-manager
<dependency>
<groupId>com.shouwang</groupId>
<artifactId>api-manager</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
这样报错就消失了
接下来就可以开始着手解决第二个问题了
用Dubbo改造我们的项目分为以下几个步骤
将服务提供者注册到注册中心
服务消费者去注册中心订阅服务提供者的IP地址
以下依赖需要同时在消费者和提供者里引入
导入dubbo依赖(建议使用2.6.x,因为2.6是个分水岭)
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
导入Zookeeper客户端(2.6以后不是zkclinet而是curator)
<!-- curator-framework -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
配置dubbo(dubbo官方为我们提供了xml配置方式)
详情参照https://dubbo.apache.org/zh-cn/docs/user/quick-start.html
服务提供者provider.xml(放在resources下)
<?xmlversion="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- 提供方应用信息,用于计算依赖关系(同样的服务名字一定要一致,不同服务名字不能相同) -->
<dubbo:Applicationname="user-service"/>
<!-- 使用multicast广播注册中心暴露服务地址 -->
<dubbo:registryaddress="zookeeper://127.0.0.1:2181"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocolname="dubbo" port="20880"/>
<!-- 声明需要暴露的服务接口 ref指向服务实现-->
<dubbo:serviceinterface="com.shouwang.apimanager.service.UserService" ref="userService"/>
<!-- 和本地bean一样实现服务 -->
<beanid="userService" class="com.shouwang.userservice.serviceImpl.UserServiceImpl"/>
</beans>
接下来按照官方给出的写一个main方法去读取我们的配置文件
publicclassProvider {
publicstatic void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = newClassPathXmlApplicationContext("provider.xml");
context.start();
System.in.read(); // 按任意键退出,防止应用终止
}
}
启动应用(可能需要修复一下我们之前的导包问题)
进入我们dubbo-admin项目,可以看到提供者多出一个
接下来我们来配置消费者consumer.xml
<?xmlversion="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:applicationname="order-service" />
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registryaddress="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:referenceid="userService" interface="com.shouwang.apimanager.service.UserService" />
</beans>
因为我们配置了一个bean,所以我们就可以使用依赖注入,将服务代理注进来,修改之前的消费者实现


推荐阅读