实操微服务设计-从需求、领域模型、业务能力到服务(2)

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: 实操微服务设计-从需求、领域模型、业务能力到服务(2)

在这个用户场景中的名词,如Consumer、Order、Restaurant和CreditCard,暗示了这些类都是需要的。

同样,Accept Order用户故事也可以分解为多个场景,如下:



image.png


这个场景暗示需要Courier类和Delivery类。在经过几次迭代分析之后,结果显然就是这个领域模型应该包括一些类,如MenuItem和Address等。图3显示了核心类的类图。



image.png


图3 FTGO领域模型中的关键类


每一个类的作用如下:


  • Consumer:下订单的用户。
  • Order:用户下的订单,它用来描述订单并跟踪状态。
  • OrderLineItem:Order中的一个条目。
  • DeliveryInfo:送餐的时间和地址。
  • Restaurant:为用户准备生产订单的餐馆,同时也要发起送货。
  • MenuItem:餐馆菜单上的一个条目。
  • Courier:送餐员负责把订单送到用户手里。可跟踪送餐员的可用性和他们的位置。
  • Address:Consumer或Restaurant的地址。
  • Location:Courier当前的位置,用经纬度表示。

类似上面这张类图描述了应用程序架构的一个方面。但如果没有对应的场景,这个图也就是仅仅好看而已,并不实用。下一步开始定义对应架构场景的系统操作。


定义系统操作


当定义了抽象的领域模型之后,接下来就要识别系统必须处理的各种请求。我们并不讨论具体的用户界面,但是你能够想象在每一个用户场景下,前端的用户界面向后端的业务逻辑发出请求,后端的业务逻辑进行数据的获取和处理。FTGO是一个Web应用,这意味着它的大部分请求都是基于HTTP的。但也有可能一些客户端会使用消息。相比绑定到具体的通信协议,使用抽象的词汇来描述跟系统操作有关的请求更为合理。


有以下两种类型的系统操作。

  • 指令型:创建、更新或删除数据的系统操作。
  • 查询型:查询和读取数据的系统操作。

从根本上说,这些系统操作都会对应到具体的REST、RPC或消息端口。但现阶段我们不必在意这些实现细节。让我们先开始识别一些指令。


识别系统指令的切入点是分析用户故事和场景中的动词。例如Place Order用户故事,它非常明确地告诉架构师,这个系统必须提供一个Create Order操作。很多用户故事都会直接对应或映射为系统命令。表1列出了一些关键的系统命令。



image.png


命令规范定义了命令对应的参数、返回值和领域模型类的行为。行为规范中包括前置条件(即当这个操作被调用时必须满足的条件)和后置条件(即这个操作被调用后必须满足的条件)。例如,以下就是createOrder()系统操作的规范。


image.png


前置条件对应着Place Order用户场景中的givens,后置条件对应着场景中的Then。当系统操作被调用时,它会检查前置条件,执行操作来完成和满足后置条件。


下面是acceptOrder()的系统操作规范:


image.png

相关文章
|
11月前
|
运维 监控 负载均衡
动态服务管理平台:驱动微服务架构的高效引擎
动态服务管理平台:驱动微服务架构的高效引擎
218 17
|
10月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
11月前
|
运维 监控 负载均衡
探索微服务架构下的服务治理:动态服务管理平台深度解析
探索微服务架构下的服务治理:动态服务管理平台深度解析
|
11月前
|
运维 监控 安全
探索微服务架构下的服务治理:动态服务管理平台的力量
探索微服务架构下的服务治理:动态服务管理平台的力量
|
7月前
|
存储 JSON NoSQL
微服务——MongoDB的数据模型
MongoDB采用文档(document)作为最小存储单位,类似关系型数据库中的行,使用BSON(Binary-JSON)格式存储数据。BSON是JSON的二进制扩展,支持内嵌文档和数组,新增了如Date、BinData等特殊数据类型,具有轻量、高效、可遍历的特点,适合非结构化与结构化数据存储。其灵活性高,但空间利用率略低。BSON数据类型包括string、integer、boolean等基本类型及date、object id等扩展类型。
173 0
|
10月前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
554 8
|
11月前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
10月前
|
弹性计算 Kubernetes API
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####
|
11月前
|
监控 Nacos 数据安全/隐私保护
动态服务管理平台在微服务架构中的实践与探索
动态服务管理平台在微服务架构中的实践与探索
|
11月前
|
运维 监控 Nacos
探索微服务架构下的服务治理:动态服务管理平台的力量
探索微服务架构下的服务治理:动态服务管理平台的力量

热门文章

最新文章