微服务设计(第2版)读书笔记
微服务概述
什么是微服务?
答:微服务(microservice)是基于业务领域建模的,可独立发布的服务。它会把业务内聚的功能封装起来,并通过网络供其他服务访问。将这样的服务组合起来构建出更复杂的系统。
微服务特点
- 可独立部署
- 围绕业务领域建模
- 状态自主,避免微服务之间共享数据库
- 服务大小,服务接口要可控
- 灵活性,微服务在组织、技术、规模、健壮性等多个具有可观的灵活性
- 架构和组织的一致性
微服务与单体
单体
“系统中的所有功能必须一起部署时,我们可以视它为一个单体。
单体又细分为,单进程单体,模块化单体(依然是单进程),分布式单体
单体的优势
开发流程简单,系统监控,故障排除和测试工作大大简化
微服务的优势
- 技术的异构性,可以针对不同微服务业务特性使用不同技术,满足不同业务的不同诉求。
- 健壮性,实现故障隔离。
- 扩展性,扩展灵活,只需要按需扩展需要的微服务。
- 部署便捷
- 组织协调
- 可组合
微服务的痛点
- 开发者体验,本地开发需要启动微服务多。
- 技术过载,引入大量新技术。
- 成本,
- 生成报表的成本变高
- 监控和故障排除较复杂,需要引入分布式可观测
- 安全,数据传输跨多服务,对安全性提出了更高的要求。
- 测试成本变大
- 延迟,数据在微服务之间进行序列化传输反序列化,容易造成系统延迟问题
- 数据一致性挑战
微服务建模
合理划分微服务边界
领域驱动设计
- (未完待续)