栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 云计算 > 云平台

尚好房 04

云平台 更新时间:发布时间: 百科书网 趣学号
尚好房:服务拆分 一、业务介绍 1、项目模块划分

根据前面的介绍,目前我们的系统规划了3个dubbo服务提供者模块:权限服务、房源服务与会员服务,及2个服务消费者模块:尚好房管理平台(web-admin)与网站前端(web-front)

2、服务调用关系

3、项目拆分说明

当前我们项目为单体的SSM项目,目前开发了权限管理的用户管理与角色管理,接着要开发房源管理的数据字典、小区管理与房源管理,权限管理与房源管理属于两不同的dubbo服务,当前我们就来把单体架构拆分为dubbo通信的分布式架构,拆分步骤:

1、shf-parent模块管理dubbo相关的依赖

2、common-util模块引入依赖

3、提取api接口模块:service-api

4、分解web-admin模块:

​ web-admin作为服务消费者,只负责dubbo消费端

​ service及dao层作为服务提供者,通过dubbo发布服务

二、服务拆分 1、shf-parent模块添加dubbo依赖管理

在shf-parent模块pom.xml新增依赖(第一天搭建环境的时候已经添加,不用重复添加)

  1. 版本锁定

    2.6.0
    3.4.7
    4.12
    0.1
    
  2. 管理依赖

    
    
        com.alibaba
        dubbo
        ${dubbo.version}
    
    
        org.apache.zookeeper
        zookeeper
        ${zookeeper.version}
    
    
        com.github.sgroschupf
        zkclient
        ${zkclient.version}
    
    
        javassist
        javassist
        3.12.1.GA
    
    
        commons-codec
        commons-codec
        1.10
    
    
2、common-util模块引入依赖

在common-util模块pom.xml引入依赖(第一天搭建环境的时候已经添加,不用重复添加)



 com.alibaba
 dubbo


 org.apache.zookeeper
 zookeeper


 com.github.sgroschupf
 zkclient


 javassist
 javassist


 commons-codec
 commons-codec

3、搭建service-api模块

用于存放所有业务层接口

3.1 创建工程

在shf-parent工程中创建子工程service-api

3.2 引入依赖


    
        shf-parent
        com.atguigu
        1.0
    
    4.0.0
    service-api
    jar

    
        
            com.atguigu
            common-util
            1.0
        
        
            com.atguigu
            model
            1.0
        
    

3.3 复制service接口

复制AdminService与RoleService到service-api模块的com.atguigu.service包中

4、搭建服务提供者模块 4.1 搭建service父工程
  1. 在shf-parent工程中搭建子工程命名为service,这个工程作为所有服务提供者的父工程

  2. 删除service工程的src目录

  3. 修改service工程的pom.xml文件

    
    
        
            shf-parent
            com.atguigu
            1.0
        
        4.0.0
    
        service
        pom
    
        
            
                com.atguigu
                service-api
                1.0
            
        
    
    
4.2 搭建service-acl工程 4.2.1 创建工程

在service工程中创建子工程service-acl子工程,并且使用插件将其转成javaweb项目

4.2.2 修改pom.xml



    
        service
        com.atguigu
        1.0
    
    4.0.0

    service-acl
    war

    
        
            
                org.eclipse.jetty
                jetty-maven-plugin
                9.4.15.v20190215
                
                    
                    2
                    
                        
                        /
                    
                    
                        
                        7001
                    
                
            
        
    

4.2.3 拷贝代码

拷贝web-admin工程中的业务层和持久层内容

  1. 创建相同的业务层和持久层包结构

  2. 拷贝AdminServiceImpl和RoleServiceImpl实现类到com.atguigu.service.impl包

  3. 替换业务层实现类上的@Service注解为Dubbo的Service注解

    @Service(interfaceClass = AdminService.class)
    @Transactional(propagation = Propagation.REQUIRED)
    public class AdminServiceImpl extends BaseServiceImpl implements AdminService {
    
    @Service(interfaceClass = RoleService.class)
    @Transactional(propagation = Propagation.REQUIRED)
    public class RoleServiceImpl extends BaseServiceImpl implements RoleService{
    
  4. 拷贝持久层接口AdminMapper和RoleMapper到com.atguigu.mapper包中

  5. 拷贝mappers目录到resources目录中

  6. 拷贝日志配置文件和jdbc.properties文件到resources目录中

  7. 拷贝spring-persist.xml和spring-service.xml到resources/spring目录中

  8. 修改spring-service.xml配置文件

    ① 删除包扫描配置,因为包扫描应该有dubbo完成,进行服务发布

    ② 修改事务注解驱动配置

    
    
    
  9. 添加发布dubbo服务的配置文件:spring/spring-registry.xml

    
    
        
        
        
        
        
        
        
        
    
    
  10. 修改web.xml文件

    
    
        
        
            contextConfigLocation
            classpath:spring/spring-*.xml
        
        
            org.springframework.web.context.ContextLoaderListener
        
    
    

    注意: spring-service.xml文件中可以不使用import标签导入spring-persist.xml了

5、搭建服务消费者模块 5.1 搭建web父工程
  1. 在shf-parent工程中搭建子工程命名为web,这个工程作为所有服务消费者的父工程

  2. 删除web工程的src目录

  3. 修改web工程的pom.xml文件

    
    
        
            shf-parent
            com.atguigu
            1.0
        
        4.0.0
        web
        pom
        
            
                com.atguigu
                service-api
                1.0
            
        
    
    
5.2 搭建web-admin工程 5.2.1 移动模块

① 将web-admin移动到web模块中

② 删除shf-parent模块pom.xml文件的web-admin标签,该模块已移动到web模块

③ 在web模块的pom.xml中新增


    web-admin

5.2.2 修改web-admin工程的pom.xml

修改了父模块为web,删除了依赖(父模块已引入依赖)




    
        web
        com.atguigu
        1.0
    
    4.0.0
    web-admin
    war
    
        
            
                org.eclipse.jetty
                jetty-maven-plugin
                9.4.15.v20190215
                
                    2
                    
                        
                        /
                    
                    
                        
                        8000
                    
                
            
        
    

5.2.3 删除service与dao层

① 删除com.atguigu.service包和com.atguigu.mapper包

② 删除resources/mappers目录

③ 删除resources/spring/spring-service.xml和resources/spring/spring-persist.xml文件

5.2.4 新增dubbo配置文件

创建resources/spring/spring-registry.xml



    
    
    
    
    
    
    
    

5.2.5 修改web.xml

删除ContextLoadListener和comtext-param配置,并且将加载的配置文件路径改成classpath:spring/spring-*.xml



    
    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring/spring-*.xml
        
        1
    
    
        dispatcherServlet
        /
    
    
    
    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
        
            encoding
            UTF-8
        
        
        
            forceRequestEncoding
            true
        
        
        
            forceResponseEncoding
            true
        
    
    
        CharacterEncodingFilter
        /*
    

5.2.6 改造表现层

将表现层注入服务对象的@Autowired注解改成@Reference注解

@Reference
private AdminService adminService;
@Reference
private RoleService roleService;
6、测试

① 在shf-parent项目中执行install

② 启动zookeeper

③ 使用jetty插件启动service-acl与web-admin模块

④ 访问:http://localhost:8000/

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1072600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号