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

原创 2016年07月03日 08:20:55

本笔记学习于:龙果学院(吴水成老师的基于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进行规模服务化前的工程结构已经完成了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Dubbo分布式服务框架入门(附工程)

本文介绍了dubbo的一些概念,并对zookeeper、dubbo-admin、提供者、消费者的搭建进行了详细的讲解,且附有工程源码...
  • u013142781
  • u013142781
  • 2015年12月23日 15:49
  • 26039

Dubbo视频教程《基于Dubbo的分布式系统架构视频教程》--课程列表

《基于Dubbo的分布式系统架构视频教程》包含基础篇、高级篇、高可用架构篇,教程以第三方支付项目的系统架构实战经验为背景,最终形成一套分布式系统架构解决方案。教程中涵盖的技术点包括 Dubbo分布式服...
  • wushuicheng
  • wushuicheng
  • 2015年11月26日 23:29
  • 21441

Dubbo视频教程《基于Dubbo的分布式系统架构视频教程》--课程列表

《基于Dubbo的分布式系统架构视频教程》包含基础篇、高级篇、高可用架构篇,教程以第三方支付项目的系统架构实战经验为背景,最终形成一套分布式系统架构解决方案。教程中涵盖的技术点包括 Dubbo分布式服...
  • wushuicheng
  • wushuicheng
  • 2015年11月26日 23:29
  • 21441

基于Dubbo的分布式系统架构-持续集成原理介绍

搭建敏捷高效的持续集成管理平台 1、持续集成介绍  持续集成是一种软件开发实践          团队开发成员经常集成他们的工作,每次集成都通过自动化的构建        (包括自动化编译、测试、发布...
  • qq_26504875
  • qq_26504875
  • 2016年07月03日 13:03
  • 2835

【备忘】Dubbo与Zookeeper视频教程分布式架构+第三方支付

第一部分:基础篇视频教程 第二部分:高级篇视频教程 第三部分:高可用架构篇视频教程 课程大纲: 1 课程介绍 20分钟 2 使用Dubbo对传统工程进行服务化改造的思路介绍 15分钟...
  • honghongyangguang
  • honghongyangguang
  • 2016年12月20日 14:19
  • 1568

Dubbo阅读笔记——高级功能

事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度。 但如果事件处理逻辑较慢,或者需要发起...
  • qq_31326741
  • qq_31326741
  • 2016年03月05日 11:14
  • 1883

dubbo工程结构分析

1. 引子本文将结合运维便捷性要求容器部署(Tomcat)和DUBBO官方推荐Maven控制台工程做出分析对比以便更好地实施dubbo微服务架构。2. DUBBO架构使用dubbo来作为服务化中间件,...
  • oMaverick1
  • oMaverick1
  • 2016年11月25日 10:12
  • 2403

Dubbo分布式服务框架入门(附工程)

本文介绍了dubbo的一些概念,并对zookeeper、dubbo-admin、提供者、消费者的搭建进行了详细的讲解,且附有工程源码...
  • u013142781
  • u013142781
  • 2015年12月23日 15:49
  • 26039

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

样例工程:传统的单工程项目(edu-demo)  Maven  J-UI  Struts2  Spring3  MyBatis3  Druid  MySQL5.6  只有一个用户信息表(增、删除、查、...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2017年05月09日 17:15
  • 567
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于Dubbo的分布式系统架构-使用Dubbo进行规模服务化前的工程结构优化
举报原因:
原因补充:

(最多只允许输入30个字)