前言

不分层

当只有两个服务的时候,好好看的清楚,当有四个服务相互依赖的时候,已经晕了

分布式架构下为什么要分层[ 技术与架构 ]-LMLPHP

当你有更多服务的时候.....你会?想死,

生产者与消费者分层

  1. 生产者与消费者,不是绝对的一一对应的。
  2. 生产者不能调用生产者,消费者也不能调用消费者。意思就是同层之间不允许相互调用,一旦相互调用,等于没有分层了。分布式架构下为什么要分层[ 技术与架构 ]-LMLPHP
  3. 生产者消费者可以有不同人开发
  4. 分层有利于业务演进,分离,解耦,

当系统体量大了怎么办?

部署目录规范

  1. 不部署在/home下的用户目录,这样不利于扩展维护等
  2. 在/(根) 目录下创建属于自己的目录。分别创建消费者,生产者,业务方三个目录
  3. 在对应目录下为服务创建各自的服务名
  4. 在服务目录创建log目录用于存放日志,config存放配置文件
.
├── business
│   └── user
│       ├── config
│       └── log
├── consume
│   └── user
│       ├── config
│       └── log
└── producer
    └── user
        ├── config
        └── log

微服务架构项目结构

模块依赖图

分布式架构下为什么要分层[ 技术与架构 ]-LMLPHP

  1. entity
  2. common
  3. service Interface
  4. provider
  5. consumers
  6. service-consumers
  7. business
  8. task

项目结构

分布式架构下为什么要分层[ 技术与架构 ]-LMLPHP

包路径应该定义为:

  1. com.dome.user.entity
  2. com.dome.user.common
  3. com.dome.user.service
  4. com.dome.user.provider
  5. com.dome.user.consumers
  6. com.dome.user.service-consumers
  7. com.dome.user.business
  8. com.deme.user.task

业务架构与基础组建的关系

分布式架构下为什么要分层[ 技术与架构 ]-LMLPHP

08-29 06:29