路线图
本书第一部分简单介绍了微服务,研究了微服务系统的特性和益处,以及开发过程中可能面临的挑战。
●第1章介绍微服务架构,分析微服务方案的优缺点,并解释微服务开发的关键原则,最后介绍微服务的设计和部署所面临的挑战(这也是全书都会涉及的内容)。
●第2章将把微服务方案运用到一个例子(SimpleBank)中。我们用微服务来设计一个新功能,并研究如何让这个功能达到可投入生产的状态。
第二部分研究微服务应用的架构和设计。
●第3章介绍微服务应用的四层架构:平台层、服务层、服务边界和客户端,旨在为读者提供一套通用的宏观模型,一个在理解任何一个具体的微服务系统的架构时都可以使用的模型。
●第4章介绍微服务设计中最困难的部分:如何决定服务的职责范围。本章将列出4种建模方式(分别按业务功能、用例、技术能力和易变性进行范围划分)。通过SimpleBank公司的例子,我们研究如何在边界都不清晰的情况下做出正确的设计决定。
●第5章探究如何在事务保证不再适用的分布式系统中编写业务逻辑。我们为读者介绍了几种不同的事务模式(如Saga)和查询模式(如API组合和CQRS)。
●第6章介绍可靠性。分布式系统要比单体应用更加脆弱。我们需要更加仔细地考虑微服务之间的通信,以避免出现可用性问题、停机和连锁故障。我们会通过一些Python代码示例探讨一些能够提升应用可恢复性的常见技术,如限流、断路器、健康检查和重试。
●第7章介绍如何设计一个可复用的微服务框架,以及在多个微服务间采用一致的方式来提升整个应用的质量和可靠性并减少新服务的开发时间。我们用Python代码给出了一些例子。
第三部分给出微服务部署的一些最佳实践。
●第8章强调微服务应用中自动化持续交付的重要性。在本章中,我们会把一个服务发布到生产环境——Google Compute Engine上。通过这个例子,读者可以了解不可变工件的重要性以及几种不同的微服务部署模式的优缺点。
●第9章介绍了Kubernetes。它是一个容器调度平台。“容器+像Kubernetes这样的调度器”是大规模运行微服务的很自然的搭配。通过使用Minikube,读者会学到如何将微服务打包并无缝地部署到Kubernetes上。
●第10章基于前面章节的示例用Jenkins来搭建一套端到端的交付流水线。读者可以用Jenkins和Groovy编写流水线脚本,然后可以通过这个脚本将新提交的代码快速可靠地发布到生产环境。本章还介绍将这些一贯的部署实践应用到微服务集群中的方法。
在本书最后一部分(第四部分),我们会研究微服务的可观测性以及微服务开发中“人”的因素。
●第11章用StatsD、Prometheus和Grafana收集和聚合数据,以此来生成仪表盘和告警信息,最终为微服务开发出一套监控系统。我们还会讨论关于告警管理和避免告警疲劳的好做法。
●第12章基于前面章节的工作增加日志和记录跟踪的内容。从微服务中获取的这些丰富、实时、可查询的数据可以让我们更好地了解这些服务的状态,更好地进行问题诊断,并在未来对其进行改进。本章中的例子用到了Elasticsearch、Kibana和Jaeger这些工具。
●最后,第13章会稍微调整一下方向,来研究微服务开发过程中“人”的因素。是“人”开发了这些软件:开发好的软件也就意味着有效的协作以及对开发方式的正确选择。我们会调查微服务团队高效工作的原理,还会探究微服务架构方案对良好的工程实践的心理影响和实际影响。