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

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

场景

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

img_ec743584cc9987e54750fd5dc03152ea.png

目标

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

方法

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

子域可分为以下几类:

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

例子

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

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

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

img_22561b3dc54938fd42ceeb98e2004cea.png

优点

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

问题

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

识别子域的好思路是:

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

相关模式

微服务架构风格




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


目录
相关文章
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
1月前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
72 2
|
1月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
92 2
|
13天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
34 3
|
13天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
31 2
|
2月前
|
JSON 监控 安全
探索微服务架构中的API网关模式
【9月更文挑战第22天】在微服务架构的海洋中,API网关如同一位智慧的守门人,不仅管理着服务的进出,还维护着整个系统的秩序。本文将带你一探究竟,看看这位守门人是如何工作的,以及它为何成为现代云原生应用不可或缺的一部分。从流量控制到安全防护,再到服务聚合,我们将一起解锁API网关的秘密。
|
3月前
|
分布式计算 负载均衡 API
微服务架构设计原则与模式
【8月更文第29天】随着云计算和分布式计算的发展,微服务架构已成为构建大型复杂应用的一种流行方式。这种架构模式将单个应用程序分解成一组小型、独立的服务,每个服务运行在其自己的进程中,并通过轻量级机制(通常是HTTP资源API)进行通信。本文将探讨微服务架构的基本设计原则、常用模式以及如何有效地划分服务边界。
323 3
|
3月前
|
设计模式 监控 API
探索微服务架构中的API网关模式
在微服务的宇宙里,API网关是连接星辰的桥梁。它不仅管理着服务间的通信流量,还肩负着保护、增强和监控微服务集群的重任。本文将带你走进API网关的世界,了解其如何成为微服务架构中不可或缺的一环,以及它在实际应用中扮演的角色和面临的挑战。
|
3月前
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
97 0
|
3月前
|
负载均衡 监控 JavaScript
探索微服务架构下的API网关模式
【8月更文挑战第31天】在微服务的大潮中,API网关不仅是流量的守门人,更是服务间通信的桥梁。本文将带你深入理解API网关的核心概念、设计要点及其在微服务架构中的重要作用,同时通过代码示例揭示如何利用API网关提升系统的灵活性与扩展性。