• SpringCloud - 项目组织架构如何搭建


    概述

    Java 项目开发中,为了方便进行依赖管理,常用的依赖管理工具有 MavenGradle。由于我司惯用 Maven,所以这里以 Maven 举例,为了提高代码复用率,Maven 提供了 模块化 开发方式,就是把可复用的代码写在一个项目中,打包成 jar 包,再由需要的项目进行引用。

    微服务项目开发中,把复杂的逻辑按照业务边界划分为一个个服务,也需要使用模块化开发的方式,一般有两种开发模式:

    • 一个服务一个工程(项目)
    • 一个工程(项目)多个服务

    下面具体说明一下两种开发模式的不同,因为我司是一个电商公司,所以这里就以电商场景为例:

    一个服务一个工程

    这种模式下,按照业务边界划分服务,一个服务一个工程(一个 git 仓库),只有对应的开发人员才会有对应代码仓库的权限,如果有业务交叉,只需要提供 API 文档或者接口(Feign 或者 Dubbo)给其他开发人员即可

    • 商品服务 -> mall-product.git
    • 订单服务 -> mall-order.git
    • 购物车服务 -> mall-cart.git
    • 搜索服务 -> mall-search.git

    一个工程多个服务

    这种模式就是 Maven 的聚合模式,所有代码都在一个工程(一个 git 仓库)下,只要是相关的开发人员就可以看到所有的代码,这种模式有一个好处就是可以对整个项目的层次有一个清晰的理解,方便开发人员理解代码。

    • 电商项目 -> mall.git
      • 商品模块 mall-product
      • 订单模块 mall-order
      • 购物车模块 mall-cart
      • 搜索模块 mall-search

    如何选择

    我司的项目组织架构是结合了上面两种开发模式的,大部分项目都是以第一种方式进行开发的,还有一些业务边界不是很清晰的项目就以组的形式,一组服务一个工程,交由具体的开发组进行开发,降低项目复杂度。

  • 相关阅读:
    【HCIA】ACL & NAT
    BSV 上的私钥谜题
    【WSN定位】基于chan、taylor算法实现移动基站无源定位附matlab代码
    安卓sd卡格式化数据恢复方法,您了解吗
    【全志T113-S3_100ask】13-1 Linux c语言ioctl驱动oled(iic、ssd1306)屏幕
    HTML PDF 查看器--RAD PDF 3.33 FOR ASP.NET
    MySQL-索引详解(三)
    Python 编写 Flink 应用程序经验记录(Flink1.17.1)
    时间很快,我已二十
    npm报错sass
  • 原文地址:https://blog.csdn.net/qiaohao0206/article/details/126367203