微服务与 DDD 学习总结

用户头像
qihuajun
关注
发布于: 2020 年 08 月 11 日

微服务

微服务框架需求

  • 服务注册与发现

  • 服务调用

  • 失效转移

  • 负载均衡

  • 高效的远程通信

  • 对应用侵入少

  • 版本管理

Service Mesh 服务网格

Service Mesh是一个基础设施层,用于处理服务间的通信,通常表现为一组轻量级网络代理,他们与应用程序部署在一起,而对应用程序透明。

微服务网关

承接应用程序请求,把请求发送到不同的微服务进行处理

  • 统一接入

  • 安全防护

  • 协议适配

  • 流量管控与容错

网关管道技术

网关本身没有什么业务,主要职责是做各种校验与拦截,这些职责可以通过管道技术连接起来。



领域驱动设计

领域模型

按照面向对象的方式而非过程式的编程

充血模型 VS 贫血模型

领域模型的对象则包含了对象的数据和计算逻辑,比如合同对象,既包含合同数据,也包含合同相关的计算。因此从面向对象的角度看,领域模型才是真正的面向对象。

领域模型是合并了行为和数据的领域的对象模型。通过领域模型对象的交互完成业务逻辑的实现,也就是说,设计好了领域模型对象,也就设计好了业务逻辑实现。和事务脚本被称作贫血模型相对应的,领域模型也被称为充血模型。

DDD战略设计

领域是一个组织所做的事情以及其包含的一切,通俗地说,就是组织的业务范围和做事方式,也是软件开发的目标范围。

领域驱动设计就是从领域出发,分析领域内模型及其关系,进而设计软件系统的方法。

子域

领域是一个组织所做的事情以及其包含的一切。这个范围就太大了,不知道该如何下手。所以通常的做法是把整个领域拆分成多个子域。

限界上下文

在一个子域中,会创建一个概念上的领域边界,在这个边界中,任何领域对象都只表示特定于该边界内部的确切含义。这样边界便称为限界上下文。限界上下文和子域具有对一的关系,用来控制子域的边界。

通常限界上下文对应一个组件或者一个模块,或者一个微服务。

实体

领域模型对象也被称为实体,每个实体都是唯一的,具有一个唯一标识

值对象

并不是领域内的对象都应该被设计为实体,DDD推荐尽可能将对象设计为值对象。

聚合

聚合是一个关联对象的集合,我们将其作为一个单元来处理数据更改。

DDD分层架构

用户接口层应用层领域层

DDD六边形模型

领域模型通过应用程序封装成一个相对比较独立的模块,而不同的外部系统则通过不同的适配器和领域模型交互,比如可以通过HTTP接囗访问领域模型,也可以通过 Web Service或者消息队列访问领域模型,只需要为这些不同的访问接口提供不同的适配器就可以了。



DDD战略设计与战术设计

领域、子域、界限上下文、上下文映射图,这些是DD的战略设计。实体、值对象、聚合、 CQRS、事件溯源,这些是DDD战术设计。通过战略设计,划分模块和服务的边界及依赖关系,对微服务架构的设计至关重要。



用户头像

qihuajun

关注

还未添加个人签名 2009.05.15 加入

还未添加个人简介

评论

发布
暂无评论
微服务与DDD学习总结