搭建一个完整的微服务系统(三):代码总体说明

        从这节开始,正式进入系统代码阶段的讲解,大部分工程都由两个modle组成:一个是facade,用来向外暴露接口;另一个是ddd,以领域驱动设计的模式来完成业务逻辑,业务逻辑部分代码不是大家所关心的,我将只保留代码结构,供大家参考。为了降低大家阅读代码的难度,相似的代码我会省略,代替以文字进行说明。
        我将在系统中引入的工程如下:
搭建一个完整的微服务系统(三):代码总体说明

代码结构

搭建一个完整的微服务系统(三):代码总体说明
        什么是DDD,不了解的同学自己查,我只在这里说明各包的约定:
            1. interfaces:这可以说是传统意义上的Controller层,req和resp分别是入参和出参的对象声明,如果是提供给其它微服务的接口,则出入参的声明都需要写到facade模块里。这一层的代码只能调用application层。
            2. application:这一层大家可以暂时理解为不需要写任何业务代码,如果是有业务逻辑的方法,则调用domain层;如果只是单纯操作数据库,这一层可以直接调用infrastructure层。
            3. domain-entities: 这里是聚合根,关于聚合根的理解,这篇短文说的比较清楚:什么是聚合和聚合根?
            4. domain-aggregates:聚合
            5. domain-repository:可以理解为数据库操作的接口定义
            6. domain-service:业务逻辑代码所在
            7. infrastructure-enums:枚举
            8. infrastructure-utils:工具包
            9. infrastructure-jpa-assembler:实体对象和数据库对象互换
          10. infrastructure-jpa-mapper:sql
          11. infrastructure-jpa-po:实体定义
          12. infrastructure-jpa-repository:可以理解为数据库操作的接口实现

gateway-app

        这是系统的汇款网关,网关主要的作用是反向代理、验签、加解密、分发等,所有和业务无关的处理都在这里完成。

channel-route

        因为系统会对接各家银行,而各家银行的api接口完全不一样,在这个工程里会进行统一处理和路由选择。

channel-trans

        一般来说,对接一家银行就会有一个channel-XXX微服务工程,当我们拿到银行的demo,只需要将他的返回值改为channel-route要求的统一格式就可以。

api-trans

        这是给app提供的接口工程。

service-common

        这里提供用户的登陆注册服务和积分规则引擎(drools)。

service-account

        这里提供用户及备付金账户和账务服务。

service-rate

        这里提供不同币种对的汇率查询及汇率规则配置。

service-fee

        这里提供手续费配置和计算。

service-basic

        这里提供的是各微服务工程都需要使用的共通服务。

basejar

        这不是一个微服务,它只是一个jar包,大部分是各种配置和枚举,如各种aop,供所有微服务使用。

eureka-center

        这只是一个简单的注册中心,本系列讲解中不会涉及,因为没什么可讲的。

mq-jar

        本系统使用rocketMQ,这里封装了mq的基本方法。。

service-parent

        父工程,没什么可说的。

config-center

        这是配置中心。

 
 

上一章:搭建一个完整的微服务系统(二):动态切换数据库
下一章:搭建一个完整的微服务系统(四):微服务的公共依赖

上一篇:Cirtix Workspace Environment Management环境搭建。


下一篇:基础设施即代码(Infrastructure as Code)