按业务领域分解模式划分微服务

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 场景使用微服务架构开发一个大型复杂的应用程序,我们需要将应用程序细致,合理地分解为一组松散耦合的微服务。微服务架构的目标是通过实现持续交付/部署来加速软件开发。目标架构必须稳定;服务必须高内聚 - 服务应该实现一小组强相关的功能;服务必须符合开闭原则 - 将一同变更的内容打包在一起,以确保每个更改仅影响一个服务;服务必须松耦合 - 每个服务都可以在不影响客户端的情况下更改实现;服务应该是可测试的;每项服务都小到足以由“两个披萨”团队开发,即一个6-10人的团队;负责一个或多个服务的每个团队必须是自治的 - 团队能够在与其他团队尽量少的协作下,来开发和部署他们的服务。

场景

使用微服务架构开发一个大型复杂的应用程序,我们需要将应用程序细致,合理地分解为一组松散耦合的微服务。微服务架构的目标是通过实现持续交付/部署来加速软件开发。

img_ec743584cc9987e54750fd5dc03152ea.png

目标

  • 架构必须稳定;
  • 服务必须高内聚 - 服务应该实现一小组强相关的功能;
  • 服务必须符合开闭原则 - 将一同变更的内容打包在一起,以确保每个更改仅影响一个服务;
  • 服务必须松耦合 - 每个服务都可以在不影响客户端的情况下更改实现;
  • 服务应该是可测试的;
  • 每项服务都小到足以由“两个披萨”团队开发,即一个6-10人的团队;
  • 负责一个或多个服务的每个团队必须是自治的 - 团队能够在与其他团队尽量少的协作下,来开发和部署他们的服务。

方法

通过领域驱动设计(DDD),设计与 子域 相对应的服务。DDD通过分析问题空间和业务逻辑,将应用程序定义为域。域由多个子域组成。每个子域对应于业务的不同部分。

子域可分为以下几类:

  • 核心类 - 业务的关键差异化因素和应用程序中最有价值的部分;
  • 支持类 - 与业务有关,但与差异化无关;这些可以在内部实施或外包;
  • 通用类 - 与业务无关,理想情况下可以使用现成的软件实现。

例子

一个在线商店的子域包括:

  • 产品目录
  • 库存管理
  • 订单管理
  • 交货管理

相应的微服务架构中,每一个子域将对应一个微服务。

img_22561b3dc54938fd42ceeb98e2004cea.png

优点

  • 由于子域相对稳定,因此具有稳定的体系结构;
  • 开发团队能有效隔离业务逻辑和技术框架;
  • 服务具有高内聚和松耦合。

问题

如何识别子域?
识别子域需要了解业务。通过分析业务及其组织结构来识别不同的专业领域,从而识别子域。这个过程通常需要不断迭代。

识别子域的好思路是:

  • 组织结构 - 组织内的不同分组或部门可能对应于不同子域;
  • 高阶域模型 - 子域通常具有关键域对象。

相关模式

微服务架构风格




你现在的气质里,藏着你走过的路,读过的书,爱过的人。


目录
相关文章
|
1月前
|
消息中间件 中间件 API
深入探讨微服务架构中的服务通信模式
随着微服务架构的普及,服务间的通信成为了系统设计的关键环节。本文将深入探讨微服务架构中的服务通信模式,包括同步通信和异步通信两大类,并对比其优缺点。我们还将介绍几种流行的通信技术,如REST、gRPC、消息队列等,并分析它们在实际应用中的适用场景。通过本文的阐述,读者将对微服务架构下的服务通信有一个全面而深刻的理解,为选择合适的通信模式提供指导。
|
2月前
|
监控 安全 关系型数据库
微服务+Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码,SaaS模式
微服务+Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码,SaaS模式
103 0
|
8月前
|
设计模式 Cloud Native 架构师
分享一份美团T9大牛总结的神仙微服务架构设计模式PDF
微服务作为一项在云中部署应用和服务的新技术已成为当下最新的热门话题。 企业和服务提供商正在寻找更好的方法将应用程序部署在云环境中,微服务被认为是未来的方向。通过将应用和服务分解成更小的、松散耦合的组件,它们可以更加容易升级和扩展,理论上是这样。
|
8月前
|
设计模式 监控 Java
Github标星67.9k的微服务架构以及架构设计模式笔记我粉了
我们都知道微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的 类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
|
8月前
|
移动开发 小程序 安全
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
|
8月前
|
安全 前端开发 小程序
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(一)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(一)
|
9月前
|
关系型数据库 Java 中间件
《微服务实战》 第三十章 分布式事务框架seata TCC模式
《微服务实战》 第三十章 分布式事务框架seata TCC模式
109 0
|
9月前
|
Shell 测试技术 数据库
《微服务实战》 第二十九章 分布式事务框架seata AT模式(下)
《微服务实战》 第二十九章 分布式事务框架seata AT模式(下)
52 0
|
9月前
|
SQL Java 关系型数据库
《微服务实战》 第二十九章 分布式事务框架seata AT模式(上)
《微服务实战》 第二十九章 分布式事务框架seata AT模式(上)
120 0
|
9月前
|
SpringCloudAlibaba Java 数据安全/隐私保护
SpringCloud Alibaba微服务实战十八 - Oauth2.0 自定义授权模式
SpringCloud Alibaba微服务实战十八 - Oauth2.0 自定义授权模式
221 0

相关产品

  • 微服务引擎
  • 服务网格