基于Dubbo的分布式系统架构-使用Dubbo进行规模服务化前的工程结构优化

本笔记学习于:龙果学院(吴水成老师的基于Dubbo的分布式系统架构)。

一、介绍传统的基于MVC模式下的单项目应用架构:

       我们刚接触的基于java的web系统开发,都是基于MVC设计模式进行开发。一个应用系统只对应一个工程,我们来看下单工程的目录结构列表。

    

      相信大家对整个工程的目录并不陌生,该工程基于spring+Struts2+mybatis+maven+mysql构建的。

      工程列表介绍:

      common:一些公用的类包,比如说我们的pageBean,用于分页。

      action:控制层,用于接收页面请求,相应输出数据+渲染页面。

      base:数据访问dao层的核心,存放baseDao,baseDaoImpl。

      biz:业务逻辑层。

      dao:数据持久层。

      entity:封装实体数据层。

      enum:枚举类型

      mybatis:mybatis的配置文件,以及mapper配置文件

      spring:spring的配置文件,包括spring-mybatis的整合

      struts:struts的配置文件

      webapp:前端页面jsp,js,css等文件

二、将我们传统的单工程基于MVC设计的思想,进行分层,即分割成多个工程独立部署。就是将我们的业务逻辑层,控制层分离,将业务逻辑层+数据访问层封装为远程服务,供控制层远程访问调用(也就是RPC)。接下来让我们我们一步步来抽取,设计。

     1、抽取公共配置(包含4类公共工程结构):

         a)、抽取我们的公共配置文件:比如jdbc.properties

              解释:随着服务的增多,我们会将不同模块的服务提取到不同的工程中(每个工程称为服务提供者),而每个服务提供者都需要连接到我们的数据库,为了集中管理数据库配置,我们先抽取公共配置。service.properties中是服务注册中心的地址。服务注册中心我们使用的是Zookeeper,后面会介绍。

          

       b)、抽取核心文件:如下图所示,我们抽取的是BaseDao,BaseDaompl。

              解释:因为我们每个工程中的每个数据访问层都需要继承和实现这两个java文件,是数据层的核心文件。

        

         c)、抽取控制层(web端)的公共文件:比如调用ajax后一些状态码配置,session常量类等

            

          d)、所有工程的公共配置:公用的entity实体类,工具类,异常处理类,枚举,pageBean等等都是要应用于所有的工程中。

           

      2、抽取服务实现层,也就是我们常说的业务逻辑层+数据访问层:dao+dao.impl+service.imp+facadeimpl(服务接口层的实现,下面第四点提到)

           

      3、抽取web控制层:action+webapp:

         

      4、抽取服务接口层:该服务下的entity+enmus+定义的服务接口。因为控制层与服务实现层已经不在一个工程中,所以他们之间的依赖调用需要引入一个中间接口层连接两个工程。控制层中需要service提供服务,就会调用服务接口层。拿到接层的某个服务的全限命名后,通过服务的注册中心zookeeper去查找服务,然后再调用该服务层的实现。

      

       除了以上讲解的三大模块中,还有一个公共的maven配置工程。我们所有的工程都是maven构建的,那么为了方面管理,会在一个父maven配置文件管理所有的工程的版本号和其他信息。

     

      至此,我们的工程拆分,使用Dubbo进行规模服务化前的工程结构已经完成了。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值