绝版灬小伙的博客

总结自己的学习笔记,扩展所学知识。

基于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进行规模服务化前的工程结构已经完成了。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26504875/article/details/51813787
个人分类: 分布式架构
想对作者说点什么? 我来说一句

Dubbo实践

dubbo实践

学院

2016年03月10日 09:30

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭