首页 > 其他分享 >DDD事件风暴 - 微服务拆分

DDD事件风暴 - 微服务拆分

时间:2022-12-25 07:22:05浏览次数:63  
标签:异构 服务 业务 用户 拆分 风暴 DDD

DDD的事件风暴第四个阶段“微服务拆分”,我们可以用限界上下文可以作为粗粒度的微服务边界,但落地时往往不得不考虑更多其他因素,比如弹性边界、安全需求、软件包大小、团队沟通效率、技术异构等等。

本阶段的

在进行服务地图设计时需要考虑以下要素:

  1. 围绕限界上下⽂边界
    考虑业务复杂度,减少业务耦合太深。

  2. 考虑不同业务变化速度/相关度、发布频率
    识别领域模型中的业务需求变动频繁的功能,考虑业务变更频率与相关度,将业务需求变动较高和功能相对稳定的业务进行分离。
    这是因为需求的经常性变动必然会导致代码的频繁修改和版本发布,这种分离可以有效降低频繁变动的敏态业务对稳态业务的影响。

  3. 考虑系统非功能性需求,如系统弹性伸缩要求、安全性要求和可⽤性要求。
    比如:识别领域模型中性能压力较大的功能。因为性能要求高的功能可能会拖累其它功能,在资源要求上也会有区别,为了避免对整体性能和资源的影响,我们可以把在性能方面有较高要求的功能拆分出去。

  4. 考虑团队组织和沟通效率
    拆分后的微服务项目团队规模保持在10~12人左右为宜(双披萨团队)。一个微服务最好三个人维护(三个火枪手原则

  5. 技术和架构的异构
    由于业务场景或者技术条件的限制,有的可能用.NET,有的则是Java,有的甚至大数据架构。
    对于这些存在技术异构的功能,可以考虑按照技术边界进行拆分。

  6. ...

用户中台服务地图

不考虑非业务因素用户中台可以设计为:用户、认证和权限三个微服务。

用户日志数据量巨大,大到需要采用大数据技术来实现,这时用户信息聚合与用户日志聚合就会有技术异构。

虽然在领域建模时,我们将他们放在一个了领域模型内,但如果考虑技术异构,这两个聚合就不适合放到同一个微服务里了。

我们可以以聚合作为拆分单位,将用户基本信息管理和用户日志管理拆分为两个技术异构的微服务,分别用不同的技术来实现它们。

请假业务场景 服务地图

按照业务拆分,我们把请假业务场景拆分成请假和考勤两个微服务。

但是人员组织关系这个是强依赖的基础服务,在其他场景会频繁的读,读流量峰值很大,而且功能稳定,需要用缓存提供一个独立的查询服务,这就演进出了一个组织关系查询微服务。

参考:

标签:异构,服务,业务,用户,拆分,风暴,DDD
From: https://www.cnblogs.com/ghj1976/p/ddd-shi-jian-feng-bao--wei-fu-wu-chai-fen.html

相关文章

  • DDD落地
    DDD的基本开发过程捕获行为需求,也就是传统软件工程里的“获取需求”。这一步,我们要识别需求里有哪些流程、哪些功能,每个功能由什么人操作,会产生什么结果。进行领域建模,也就......
  • 拆分自然数BFS
    任何一个大于1的自然数n(n<=10),总可以拆分成若干个小于n的自然数之和。当n=7共14种拆分方法:7=1+1+1+1+1+1+17=1+1+1+1+1+27=1+1+1+1+37=1+1+1+2+27=1+1+1+47=1+......
  • 服务拆分及远程调用
             ......
  • DDD事件风暴 - 领域建模
    DDD的事件风暴第三个阶段“领域建模”时,我们会根据场景分析过程中产生的领域对象,比如命令、事件等之间关系,找出产生命令的实体,分析实体之间的依赖关系组成聚合,为聚合划定限......
  • 利用SQL Server XML拆分数据
    DECLARE@strIDVARCHAR(200)='1,2,3';DECLARE@xmlXML;SELECT@xml=CONVERT(XML,'<root><place><id>'+REPLACE(@strID,',','</id></place><place><id>')+'</id......
  • 34-Ansible常用playbook和大型项目role角色拆分
    yaml简单示例#格式要求在单一文件第一行,用连续三个连字号"-"开始,还有选择性的连续三个点号(...)用来表示文件的结尾次行开始正常写Playbook的内容,一般建议写明该......
  • DDD事件风暴 - 业务场景分析
    DDD的事件风暴第二个阶段“业务场景分析”是从用户视角出发的,根据业务流程或用户旅程,采用用例和场景分析,探索领域中的典型场景,找出领域事件、实体和命令等领域对象,支撑领域......
  • 如何在Word表格中拆分或合并单元格?
    我们在使用Word制作表格时,由于表格较为复杂,只是简单的插入行、列并不能满足我们的需要。要做一个完整的表格,很多时候需要将单元格进行拆分或者合并,才能达到我们想要的效果......
  • DDD事件风暴 - 产品愿景阶段
    这是DDD事件风暴的第一个阶段,是对产品顶层价值的设计,使产品目标用户、核心价值、差异化竞争点等信息达成一致,避免产品偏离方向。我们可以用“电梯演讲”这个工具来帮我们......
  • DDD的事件风暴
    事件⻛暴(EventStorming)是一种“自底向上”的设计方法,先关注具体的业务细节,然后通过归纳、聚合、抽象的方法获得整体层面的认知和设计。事件⻛暴的发明⼈是AlbertoBra......