基于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、提供者、消费者的搭建进行了详细的讲解,且附有工程源码...

dubbo项目实战代码展示

最近公司项目使用dubbo服务,于是就去网上搜索关于dubbo的相关资料,真的很多,但是对于很多人并不是很了解框架或者 不是太适合新手的片段代码,于是我就根据项目的相关内容把dubbo部分单独切出来,...

Dubbo之旅--Provider示例

在本篇文章中我们将通过集体的示例来对Dubbo的提供和消费进行代码层面的认识.这里所介绍的是基本的提供者和消费者通过Spring容器来进行相关的提供和消费的服务.首先看整个示例的项目结构如下:   ...
  • jnqqls
  • jnqqls
  • 2015年03月31日 00:14
  • 19818

dubbo工程结构分析

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java集群优化——dubbo+zookeeper构建高可用分布式集群

不久前,我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

SSM(十一) 基于dubbo的分布式架构

前言现在越来越多的互联网公司还是将自己公司的项目进行服务化,这确实是今后项目开发的一个趋势,就这个点再凭借之前的SSM项目来让第一次接触的同学能快速上手。浅谈分布式架构分布式架构单看这个名字给人的感觉...

Dubbo基于Zookeeper实现分布式服务:Dubbo+Zookeeper+Spring整合应用

Dubbo基于Zookeeper实现分布式服务:Dubbo+Zookeeper+Spring整合应用。 Dubbo 是阿里巴巴公司开源的一个高性能优秀的分布式服务框架,高性能和透明化的RPC远程服务...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于Dubbo的分布式系统架构-使用Dubbo进行规模服务化前的工程结构优化
举报原因:
原因补充:

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