第一章 逃离单体地狱
1.2.1 单体应用缺点就是微服务优点
- 过度的复杂性
- 代码提交到部署周期长
- 难以扩展
- 缺乏故障隔离
- 难以迁移技术栈
1.2.2 企业应用架构设计基础知识
- 三层架构
- web应用程序设计
- 使用面向对象设计开发业务逻辑
- 关系型数据库:SQL和ACID事务的概念
- 使用消息代理和REST API进行进程间通信
- 安全,包括身份验证和访问授权
1.3.1 通过本书,可以掌握知识
- 什么时候使用微服务架构
- 分布式数据管理的架构模式
- 微服务架构应用的测试策略
- 微服务架构应用的部署方式
- 如何重构单体服务为微服务
1.3.2 通过本书,可以掌握技术
- 用微服务方式设计业务服务
- 微服务开发业务逻辑
- 使用saga在进程间维护数据一致性
- 实现跨服务的数据查询
- 更高效的测试微服务架构程序
- 微服务架构程序的安全、可配置、可观测
1.4.1 定义微服务X_Y_Z
- X: 多个实例间负载均衡(水平扩展)
- Y: 根据功能拆分(垂直切分、分库分表)
- Z:根据请求路由(分片 、水平切分)
1.6.2 模式包括
- 需求 forces
- 结果上下文 result context
- 相关模式 relate pattern
功能 | 相关模式 |
---|
服务拆分 2 | 根据业务能力/ 子域 |
通信 3 | 进程间通信机制、服务发现、外部API:客户端与服务端通信方式 |
| 可靠性:服务不可用时,如何保证服务间正常通信 |
| 事务消息:将消息发送、事件发布等与更新业务数据的数据库操作集成 |
事务管理的数据一致性 4-6 | 2PC, Saga |
查询数据 7 | API组合模式、CQRS |
部署方式 | 传统包部署,虚拟机,serverless平台 |
自动化测试 9-10 | 消费端驱动、服务组件测试 |
可观测模式 11 | 健康检查API、分布式追踪唯一ID、日志聚合、异常跟踪,指标、审计日志 |
解决基础设施和边界相关 11 | 基底模式处理基建相关,如可观测、服务发现、外部配置 |
安全相关 11 | 访问令牌模式 |
第三章 微服务进程间通信
3.1.1 交互方式
| 一对一 | 一对多 |
---|
同步 | 请求/响应 | - |
异步 | 异步请求/响应、单向通知 | 发布/订阅、发布/异步响应 |
3.1.3 API 设计
MAJOR, MINOR, PATCH三部分构成version
前向兼容:增加optional请求、响应参数
不兼容:version控制版本
3.1.4 消息格式
文本:自解释;XML,Json
二进制:IDL;Thrift,Protobuf,Avor
3.2 基于同步远程调用的通信
- REST API设计
定义资源
将操作映射为HTTP操作
3.2.3 断路器模式处理局部故障
- 开发鲁棒的远程调用代理
网络超时
限制客户端向服务端请求数量
断路器模式 - 从服务失效故障恢复: 返回缓存/错误
3.2.4 使用服务发现
- 应用层 服务注册表
- 平台层 DNS+VIP+VIP 名字
3.3 基于异步远程调用的通信