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接口)

posted @ 2020-03-29 00:20  艾小小雨  阅读(956)  评论(0编辑  收藏  举报