《微服务架构设计模式》笔记1—概述、逃离单体地狱
一、概述
1、章节总述
-
第一章:
- 单体应用程序的弊端
- 微服务架构模式概述
-
第二章:
- 软件架构重要性
- 将应用程序分解服务集合的模式描述
- 分解过程中各种障碍解决方案
-
第三章:
- 微服务进程间通信的几种模式
- 异步和基于消息通信
-
第四章:
- 如何使用Saga模式维护服务间的数据一致性。
- Saga是通过传递异步消息的方式进行协调的一系列本地事务
-
第五章:
- 领域驱动设计(DDD)的聚合、领域事件等模式
- 使用上述模式为服务设计业务逻辑
-
第六章:
- 使用事件溯源模式开发业务逻辑
- 事件溯源模式是一种以事件为中心的设计思路,用来构建业务逻辑和持久化领域对象。
-
第七章:
- API组合模式、命令查询职责隔离模式(CQRS)
- 这两模式用来实现查询分散在多个服务中的数据。
-
第八章:
- 处理来自各种外部客户端请求的外部API模式
- 移动应用程序、JS应用程序、第三方程序
-
第九章:
- 微服务自动化测试技术(一)
- 测试概念、测试金字塔
- 测试套件中的每种测试类型的相对比例
- 如何编写构成测试金字塔基础的单元测试
-
第十章:
- 微服务自动化测试技术(二)
- 集成测试、消费者契约测试、组件测试等
-
第十一章:
- 开发生产就绪服务的各个方面
- 包括安全性、外部化配置模式和服务可观测行模式
- 服务可观测性模式包括日志聚合、应用指标和分布式追踪
-
第十二章:
- 可用于部署服务的各种部署模式
- 包括虚拟机、容器、serverless模式
- 使用服务网格的好处。
- 服务网格是微服务架构中处理服务间通信的一个网络软件层。
-
第十三章:
- 采用绞杀者模式(Strangler)模式逐步将单体架构重构为微服务架构。
- 绞杀者模式是指以服务形式实现新功能,从单体中提取模块将其转换为服务。
2、程序架构设计基础
- 三层架构
- Web应用程序设计
- 使用面向对象设计来开发业务逻辑
- 关系型数据库:SQL和ACID事务的概念
- 使用消息代理和REST API进行进程间通信
- 安全,包括身份验证和访问授权。
3、本书目的
读完本书后,你会理解和掌握如下知识:
- 微服务架构基本特点,好处、弊端,以及应该在什么情况下使用微服务架构。
- 分布式数据管理的架构模式。
- 针对微服务架构应用程序的有效测试策略
- 微服务架构应用程序的部署方式。
- 把单体应用重构为微服务架构的策略。
也会掌握如下技术:
- 使用微服务的架构模式来设计应用程序的架构
- 为服务开发业务逻辑
- 使用Saga在进程间维护数据的一致性。
- 实现跨服务的数据查询。
- 更高效的测试微服务架构应用程序。
- 开发生产环境就绪的应用程序,实现安全性、可配置性和可观测性。
- 把现有的单体应用重构为服务。
二、逃离单体地狱
1、单体架构特点
- 应用开发简单:IDE只需要构建一个单独应用程序
- 易于大规模更改:可以更改代码和数据库模式,构建部署。
- 测试相对直观简单。
- 部署简单:war包部署到Tomcat
- 横向扩展简单:运行多个实例,负载均衡调度。
2、单体地狱
- 单体服务的缺点
- 过度复杂性和庞大性使开发者很难理解它的全部,导致修复bug和实现新功能就变得困难和更耗时。
- 形成恶性循环,新的开发者在理解上出现偏差,更改时更容易出错,使得代码库更复杂难懂。
- 开发速度缓慢,IDE构建应用过于耗时,影响效率。
- 从代码提交到实际部署周期很长,容易出问题。
- 难以扩展:多模块再同