Maven多模块+dubbo+zookeeper分布式架构搭建SSM项目

Maven多模块的构建:

一、总体结构预览

|----parent模块

    |-----manage聚合工程模块

    |       |------pojo

    |       |------dao

    |       |------service接口层

    |       |------service实现层

    |-----common公共组件

    |-----web表现层

Parent父类模块:集中统一管理项目中需要jar包的版本号,打包方式pom;

Manage聚合工程模块:继承parent模块,集中管理pojo、dao、serivice各层组件,manage模块打包方式为pom包;

pojo继承manage模块,存放实体类,打包为jar;

dao继承manage模块,负责与数据库交互,打包为jar;

service接口继承manager模块,提供服务模块的抽象接口,为暴露对外访问接口,打包为jar;

service实现层继承manage模块,用来实现接口,实现业务逻辑,打包为war;

common公共组件模块:继承parent模块,管理公共组件,如log4j等,打包为jar;

web表现层直接继承父类,也为控制器层,打包为war包,通过网络通信与servic接口链接,实现远程访问;下面开始抛出实战代码演示。

二,业务代码的具体实现,本项目搭建为SSM框架:

    (1).parent模块中jar包管理

    http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

 4.0.0

  com.ssm

 ssm-parent

  0.0.1-SNAPSHOT

  pom

      

      

                <--这里放入jar包版本,维护室只需要更新该这里的jar包版本,由于继承关系,子类模块直接更新-->

               3.4.7

       

       

       

              

                      

                            这里放入依赖文件的坐标,版本用el表达式即可

                       

              

       

       

               ${project.artifactId}

                

   

      

           org.apache.maven.plugins

                       maven-compiler-plugin

                       3.1

                      

                              

                               1.8

                               1.8

                               UTF-8

                      

      

      

           org.apache.tomcat.maven

                  tomcat7-maven-plugin

                       2.2

                      

                               8080

                               UTF-8

                               tomcat7

                      

      

   

       

(2).common公共组件模块:将需要的jar包从父类依赖进自己的pom.xml中

  http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

 4.0.0

 

    com.ssm

   ssm-parent

    0.0.1-SNAPSHOT

 

  com.ssm

 ssm-common

  0.0.1-SNAPSHOT

 

 

       

               这里写入依赖的文件jar包坐标

          

 

(3).manage模块,这个时项目整体业务逻辑的核心点,建立的manage为聚合工程,在manage聚合工程中建立model模块,分别为pojo,dao,service,一级serviceInterface,

模块建完后会在父类工成manage显示如下:

 

        ssm-dao

        ssm-service

        ssm-pojo

        ssm-interface

 

当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力:

 

 

   

       com.ssm

      ssm-common

       0.0.1-SNAPSHOT

   

 

 

 

 

    

        

        

               org.apache.tomcat.maven

                               tomcat7-maven-plugin

                               2.2

                              

                                      8080

                                      /

                              

        

        

        

             org.apache.maven.plugins

                        maven-compiler-plugin

                         3.1

                        

                                     

                                      1.8

                                      1.8

                                      UTF-8

                        

        

    

 

这里不在赘述manage下面的子模块的建立,只介绍下最重要的service,在service层里面需要整合spring和mybatis框架,所以这里搭建框架的步骤也不再叙述,先看下结构:

Maven多模块+dubbo+zookeeper分布式架构搭建SSM项目_第1张图片

直接上配置文件:其中有dubbo相关配置文件,这里先写进去,一会慢慢介绍

       

       

       

       

               destroy-method="close">

              

              

              

              

              

              

       

       

       

       

       

               class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

              

              

       

       

       

              

                      

                      

                      

                      

                      

                      

                      

                      

                      

                      

              

       

       

       

              

                       pointcut="execution(*com.ssm.service.*.*(..))" />

       


       

       

       

       

       

       

       

       

       

       

       

在service层需要提供对外发布的接口,来注册至zookeeper注册中心,来供web表现层来调用,这里需要注意的是:dubbo:service interface="提供的时服务层的接口"ref="接口的实现类"

(4).web层:控制器层,这里使用springmvc:先看结构图:

Maven多模块+dubbo+zookeeper分布式架构搭建SSM项目_第2张图片
其实这里就是一个springmvc框架而已,在这里说明下spring于springmvc的区别:spring和springmvc时哟个父子容器,springmvc可以访问spring容器,但是反过来不成立,或许有人开始质疑,

为什么不用springmvc直接代替spring容器呢?事实上代替不了,spring框架有着天然的可融合性,与其他的框架可以方便整合起来。所以还是不同的,各司其职。

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:context="http://www.springframework.org/schema/context"

    xmlns:aop="http://www.springframework.org/schema/aop"

   xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

   xmlns:mvc="http://www.springframework.org/schema/mvc"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

       http://www.springframework.org/schema/context

       http://www.springframework.org/schema/context/spring-context.xsd

       http://www.springframework.org/schema/aop

        http://www.springframework.org/schema/aop/spring-aop.xsd

       http://code.alibabatech.com/schema/dubbo

       http://code.alibabatech.com/schema/dubbo/dubbo.xsd

       http://www.springframework.org/schema/mvc 

       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd ">

       

 

 

 

 

 

 

 

 

 

       

 

 

 

 

 

 

 

     

     

     

 

 

   

 

    

         

         

         

   

   

 

     

               

                   

                   text/html;charset=UTF-8   

                   text/json;charset=UTF-8   

                    application/json;charset=UTF-8   

                   

               

    

        

 

     

         

             

                 

             

         

     

 

         

            

         

 

这里dubbo为引用服务的接口,需要接入zookeeper注册中心的地址来通过和zookeeper注册中西通信,来间接访问远程的服务端口,进行数据的请求和响应。

使用dubbo为中间层不仅项目维护起来带来便捷,使得各模块的功能更加清晰。由于分布式系统中每个服务器中部署的代码只负责一个功能,使用dubbo有如下好处:

1.监控中心宕掉不影响使用,只是丢失部分采样数据

2.数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务

3.注册中心对等集群,任意一台宕掉后,将自动切换到另一台

4.注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯

5.服务提供者无状态,任意一台宕掉后,不影响使用

6.服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

7.当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力。

 

 

 




 

 





你可能感兴趣的:(javaee)