模块分解

用户头像
wing
关注
发布于: 2020 年 11 月 29 日

本周是跟随李智慧老师学习架构师训练营的第十周,现将本周的主要内容总结如下:

传统代码模式(巨无霸系统)带来的问题:

编译、部署困难

代码分支管理困难

数据库连接耗尽

新增业务困难

解决方案就是业务拆分:

1.纵向拆分:业务独立

2.横向拆分:业务复用

Web Service服务

WSDL:Web Service Description Language Web服务描述语言

UDDI:Universal Description Discovery and Integration 同一发布描述和集成

SOAP:Simple Object Access Protocol 简单对象访问协议

缺点:

臃肿的注册与发现机制

低效的XML序列化手段

开销相对较高的HTTP通信通道

复杂的部署与维护



微服务框架应提供的基本支持:

失效转移

负载均衡

对应用最少侵入

版本管理



Service Mesh 服务网格:基础设施层,用于处理服务间通信,通常表现为一组轻量级网络代理,与应用程序部署在一起,对应用程序透明。一般用于复杂的系统



微服务实践

业务现行,

命令与查询职责隔离(CQRS):服务层读写分离,将查询(读)与命令(写)隔离

事件溯源:记录状态日志

断路器:状态:关闭、打开、半开

服务重试与调用超时:上游超时要大于下游超时时间之和

倒三角模型:Need(需求)-->Values(价值)-->Principles(原则)-->Practices(最佳实践)-->Tools(工具)



微服务网关

1.统一接入:高性能、高并发、高可靠、负载均衡

2.流控与容错:限流、降级、熔断

3.协议适配:http、dubbo

4.安全防护:防刷控制、黑白名单

网关管道技术-->责任链模式

开放平台网关(供第三方调用):

1.API接口

2.协议转换

3.安全:权限、网络带宽限制

4.审计:监控、计费

5.路由

6.流程:提供接口,隐藏细节

开放授权协议OAuth2.0:授权码(应用最多,最安全)、隐式授权、资源所有者密码凭据、客户端凭据



领域模型

传统的事务脚本模型,也叫贫血模型,Service Dao Controller

领域模型:合并了行为与数据的领域对象模型,领域对象包含了对象的数据和计算逻辑,充血模型

子域

限界上下文:与子域一对一,控制子域边界

上下文映射图:描述子系统之间的交互和合作

实体:领域模型对象,根据业务需求结合限界上下文分清实体的职责,唯一标识 状态

值对象:不变性,仅用来做度量或描述的对象,例如地址,建在地址上的房子可以被看作一个实体,实体状态可变,地址不变

领域、子域、界限上下文、上下文映射图,这些是DDD 的战略设计。

实体、值对象、聚合、CQRS、事件溯源,这些是DDD 战术设计。

通过战略设计,划分模块和服务的边界及依赖关系,对微服务架构的设计至关重要。



组件设计原则:

1.组件内聚原则

复用发布等同原则

共同封闭原则

共同复用原则:不要强迫用户依赖他们不需要的类

2.组件耦合原则

无循环依赖原则

稳定依赖原则:一个组件不应该依赖一个比自己还不稳定的组件

稳定抽象原则:一个稳定的组件是抽象的,不稳定的组件是具体的



作业一:

(至少完成一个)

根据微服务框架 Dubbo 的架构图,画出 Dubbo 进行一次微服务调用的时序图。





关于微服务架构(中台架构、领域驱动设计、组件设计原则),你有什么样的思考和认识?





用户头像

wing

关注

还未添加个人签名 2018.05.13 加入

还未添加个人简介

评论

发布
暂无评论
模块分解