您的位置:首页 > 运维架构 > 网站架构

分布式架构学习之:001--使用Dubbo对传统工程进行服务化改造

2017-05-09 17:15 766 查看
样例工程:传统的单工程项目(edu-demo)

 Maven

 J-UI

 Struts2

 Spring3

 MyBatis3

 Druid

 MySQL5.6

 只有一个用户信息表(增、删除、查、改)






Action中注入业务逻辑的类

@Scope("prototype")
public class PmsUserAction extends BaseAction {
@Autowired
private PmsUserBiz pmsUserBiz;


业务逻辑类中使用dao

@Service("pmsUserBiz")
public class PmsUserBiz {
@Autowired
private PmsUserDao pmsUserDao;


服务化的思想是将业务层service和dao层抽象出来,单独形成可以运行的工程,供上层应用调用。

改造成Dubbo服务调用方式后的工程结构

edu-common-parent(Maven父配置):是所有工程的公共部分

edu-facade-user(用户服务接口):是服务提供最和消费者的通信契约--接口,其实可以不需要这个工程,把这些接口放到实现和消费中,但是使用Maven来管理更好。

edu-service-user(用户服务实现):服务实现

edu-web-boss(服务消费者):服务消费,目前是web工程

部署环境规划

192.168.2.61 edu-web-boss(consumer)

192.168.3.71 zookeeper-3.4.6(注册中心) 

192.168.3.72 edu-service-user(provider) 

192.168.4.201 MySQL5.6(数据库)

分布式之后,将业务逻辑形成接口,对外公布,放在edu-facade-user中,实现放在edu-service-user,本类中注入业务逻辑类,实现真正的逻辑。Action中就注入公开的接口。



定义接口

接口的实现

@Service("pmsUserFacade")
public class PmsUserFacadeImpl implements PmsUserFacade {
@Autowired
private PmsUserBiz pmsUserBiz;



在spring-provider.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="gw-service-user" />

<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.3.71:2181" />

<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />

<!-- 用户服务接口 -->
<dubbo:service interface="wusc.edu.facade.user.service.PmsUserFacade" ref="pmsUserFacade" />

</beans>


消费端



在spring-comsumer.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="edu-web-boss" />

<!-- 使用zookeeper注册中心暴露服务地址 -->
<!-- 注册中心地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.3.71:2181" />

<!-- 用户服务接口 -->
<dubbo:reference interface="wusc.edu.facade.user.service.PmsUserFacade" id="pmsUserFacade" check="false" />

</beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: