写点什么

阿里 P8 推荐学习的 44 个微服务架构设计模式,真的太香了!

  • 2023-04-21
    湖南
  • 本文字数:2191 字

    阅读完需:约 7 分钟

本文的目标是让架构师和程序员学会使用微服务架构成功开发应用程序。


本文不仅讨论了微服务架构的好处,还描述了它们的弊端。读者将掌握如何在使用单体架构和使用微服务架构之间做出正确的权衡。


本文侧重于解释微服务架构的设计模式和其他概念。无论读者使用何种技术栈,我的目标都是让你们可以轻松读懂这本文。你只需要熟悉企业应用程序架构和设计的基础知识即可。特别是,需要了解三层架构、Web 应用程序设计、关系型数据库、使用消息和基于 REST 的进程间通信,以及应用程序安全性的基础知识等概念。本文的代码示例使用 Java 和 Spring 框架。为了充分利用它们,读者应该对 Spring 框架有所了解。

限于文章篇幅原因,就展示到这里了,有需要的小伙伴 点击这里凭本文截图即可获取!

内容概览

本文的内容主要由 13 部分组成。


第 1 章描述了所谓“单体地狱”的症状,当单体应用程序超出其架构时会出现这种问题,这可以通过采用微服务架构来规避。这一章还概述了微服务架构模式语言,这也是本文大部分内容的主题。本章导读

  • 单体地狱的特征,如何借助微服务架构逃离单体地狱

  • 微服务架构的基本特征,它的好处和弊端

  • 开发大型复杂应用时,如何借助微服务实现 DevOps 式开发风格

  • 微服务架构的模式语言及为什么使用它


第 2 章解释了为什么软件架构很重要,描述了可用于将应用程序分解为服务集合的模式,并解释了如何克服在此过程中遇到的各种障碍。

  • 理解软件架构,以及它为什么如此重要

  • 使用拆分模式中的业务能力模式和子域模式进行单体应用到服务的拆分

  • 使用领域驱动设计中的限界上下文概念来分解数据,并让服务拆分变得更容易

第 3 章介绍了微服务架构中强大的进程间通信的几种模式,解释了为什么异步和基于消息的通信通常是最佳选择。

  • 通信模式的具体应用:远程过程调用、断路器、客户端发现、自注册、服务端发现、第三方注册、异步消息、事务性发件箱、事务日志拖尾、轮询发布者

  • 进程间通信在微服务架构中的重要性定义和演化 API

  • 如何在各种进程间通信技术之间进行权衡

  • 使用异步消息对服务的好处

  • 把消息作为数据库事务的一部分可靠发送


第 4 章介绍如何使用 Saga 模式维护服务间的数据一致性。 Saga 是通过传递异步消息的方式进行协调的一系列本地事务。

  • 为什么分布式事务不适合现代应用程序

  • 使用 Saga 模式维护微服务架构的数据一致性

  • 使用协同和编排这两种方式来协调 Saga

  • 采用对策来解决缺乏隔离的问题


第 5 章介绍如何使用领域驱动设计(DDD)的聚合和领域事件等模式为服务设计业务逻辑。

  • 设计业务逻辑组织模式:事务脚本模式和领域建模模式

  • 使用领域驱动设计的聚合模式设计业务逻辑

  • 在微服务架构中应用领域事件模式


第 6 章以第 5 章为基础,解释了如何使用事件溯源模式开发业务逻辑,事件溯源模式是一种以事件为中心的设计思路,用来构建业务逻辑和持久化领域对象。

  • 使用事件溯源模式开发业务逻辑

  • 实现事件存储库

  • 整合 Saga 和基于事件溯源的业务逻辑

  • 使用事件溯源实现 Saga 编排器


第 7 章介绍如何使用 API 组合模式或命令查询职责隔离(CQRS)模式,这两个模式用来实现查询分散在多个服务中的数据。

  • 在微服务架构中查询数据的挑战

  • 何时以及如何使用 API 组合模式实现查询

  • 何时以及如何使用 CQRS 模式实现查询


第 8 章介绍了处理来自各种外部客户端请求的外部 API 模式,例如移动应用程序、基于浏览器的 JavaScript 应用程序和第三方应用程序。

  • 设计能够支持多种客户端的 API 的挑战

  • 使用 API Gateway 模式和后端前置模式

  • 设计和实现 API Gateway

  • 使用响应式编程来简化 API 组合

  • 使用 GraphQL 实现 API Gateway

第 9 章是关于微服务自动化测试技术的两章中的第一章,介绍了重要的测试概念,例如测试金字塔,描述了测试套件中每种测试类型的相对比例,还展示了如何编写构成测试金字塔基础的单元测试。

  • 微服务中有效的测试策略

  • 使用模拟(mock)和桩( stub)对软件中的元素执行隔离测试

  • 使用测试金字塔确定测试工作的重点

  • 对服务中的类执行单元测试

第 10 章以第 9 章为基础,描述了如何在测试金字塔中编写其他类型的测试,包括集成测试、消费者契约测试和组件测试等。

  • 在隔离环境中测试服务的技术。

  • 使用消费者驱动的契约测试编写快速且可靠的测试,用来验证服务间的通信。

  • 何时以及如何进行应用程序的端到端测试。

第 11 章介绍了开发生产就绪服务的各个方面,包括安全性、外部化配置模式和服务可观测性模式。服务可观测性模式包括日志聚合、应用指标和分布式追踪。

  • 开发安全的服务

  • 如何使用外部化配置模式

  • 如何使用可观测性模式

  • 健康检查 API

  • 日志聚合

  • 分布式跟踪

  • 异常跟踪

  • 应用程序指标

  • 审核日志记录

  • 通过使用微服务基底模式简化服务的开发

第 12 章介绍了可用于部署服务的各种部署模式,包括虚拟机、容器和 Serverless 模式。还介绍了使用服务网格的好处,服务网格是在微服务架构中处理服务间通信的一个网络软件层。

  • 四个关键部署模式,它们如何工作,以及它们的好处和弊端:

  • ●编程语言特定的发布包格式

  • ●将服务部署为虚拟机

  • ●将服务部署为容器

  • ●Serverless 部署

  • 使用 Kubernetes 部署服务

  • 使用服务网格把服务发布环节与服务部署环节分开

  • 使用 AWS L ambda 部署服务

  • 选择部署模式


第 13 章介绍了如何通过采用绞杀者( Strangler)模式逐步将单体架构重构为微服务架构,绞杀者模式是指以服务形式实现新功能,从单体中提取模块将其转换为服务。

  • 何时将单体应用迁移到微服务架构

  • 在将单体应用重构为微服务架构应用时,为什么使用增量方法至关重要

  • 将新功能实现为服务

  • 从单体中提取服务

  • 集成服务和单体

限于文章篇幅原因,就展示到这里了,有需要的小伙伴 点击这里凭本文截图即可获取!

用户头像

还未添加个人签名 2021-07-28 加入

公众号:该用户快成仙了

评论

发布
暂无评论
阿里P8推荐学习的44个微服务架构设计模式,真的太香了!_Java_做梦都在改BUG_InfoQ写作社区