11.DDD与微服务设计模式笔记
---------------------------------------------------------------------------------
单体架构到位服务
软件生命周期与架构演化
微服务立方体
最好的架构是演化过来
微服务拆分示例——典型电商系统的架构演化
微服务横向扩展划分——共享核心功能模式
微服务数据分区
---------------------------------------------------------------------------------------
如何设计一个为服务系统
微服务系统的优缺点
优点 |
缺点 |
更为敏捷 |
整个系统更加复杂 |
更小,更专注的团队 |
开发和测试面临更多挑战 |
更小的codebase |
分布式带来管控难题 |
自由选择不同的技术栈 |
网络瓶颈和延迟 |
问题隔离 |
数据一致性 |
扩展性/扩容容易 |
管理文化挑战 |
数据隔离 |
多服务版本对齐控制 |
|
技术能力要求高 |
微服务设计示例:Boat House无人机送餐系统
S1-领域模型Domain Model设计
S3 单一领域结构分析(Shipping Domain)
s4——单一领域流程f分析(Shipping Domain)
S5——应用服务边界和条用关系设计
S7应用服务部署设计
S8服务见通讯机制设计
S9.CI/CD流水线设计
--------------------------------------------------------------------------------------
12要素法制(Software as a Service设计准则/Cloud Native应用设计准则)
基准代码:一份基准代码,多分部署(快速交付:合理划分边界,良好的软件生命周期管理)
依赖:显式声明依赖关系(提升开发效率:标准化,排除意外风险)
配置:在环境存储配置(软件发布管理:将配置转为环境变量)
后端服务:吧后端服务当作附加资源(弹性/敏捷:使用断路器,松散绑定)
构建、发布、运行:严格分离构建和运行(软件发布管理:通过流水线实现CI/CD自动化)
进程:以一个火多个无状态进程运行应用(云兼容性:将状态管理交给后端服务)
端口绑定:通过端口绑定提供服务(运营效率:应用服务只需要知道url地址与对应端口)
并发:通过进程模型进行扩展(自动弹性伸缩:转为云台设计,使用PCF的功)
易处理:快速启动和优雅终止可最大化健壮性(自动弹性伸缩:将缓慢的进程转变为后端服务)
开发环境与线上环境等价:尽可能的保持开发、预发布,线上环境相同(可靠性:凭借云平台,获得等价性)
日志:把日志当作事件流(实时系统指标:日志管理系统)
管理进程:后台管理任务当作一次性进程运行(可靠性:转变为后端服务,并暴露为REST接口)