前言

随着数字化转型的推进,越来越多的企业开始尝试基于微服务框架构建和重构自己的系统,微服务实施不仅仅是微服务框架的技术选型和服务拆分,它涉及到方方面面,是一个系统化的体系工程。

微服务架构不仅延续了分布式系统与SOA的特征,也汲取了DevOps、持续集成、持续交付等工程实践的成功经验,并正在借着云计算和容器化的春风开始其驰骋之旅。但是,微服务的落地并不像其概念描述的那样举重若轻,它不仅包括架构解耦,还涉及开发测试、部署运维、工程实践、团队合作与康威定律等多方面的因素,这些因素相辅相成,共同影响着如何高质量、快速地交付业务价值。

本文从架构演进、微服务拆分、接口契约测试,流水线构建到微服务实战,涵盖了微服务实施过程中的重要环节,是难得的系统化、全面介绍微服务的作品,非常值得大家认真研读。

 

 

目录

 

 

 

 

主要内容

本文一共分为3个部分,分别是基础篇、策略篇和实战篇。

基础篇为第1章,主要介绍微服务架构相关的基础知识。该章首先介绍软件架构的演进史;其次阐述了微服务出现的背景、定义、特征及落地时面临的挑战;同时分析了微服务与SOA、Serverless 的关系;最后介绍了微服务领域Service Mesh的兴起。阅读的重点为理解微服务的本质特征、挑战并了解Service Mesh。

 

策略篇包含第2章至第6章,主要介绍了微服务生态系统、微服务关键技术、微服务实施参考模型以及基于参考模型的实践,并在本篇最后的部分阐述了遗留系统改造的策略与案例。

第⒉章首先介绍了微服务生态系统,并围绕生态系统阐述微服务实现中涉及的接入层、业务层、支撑层及基础设施。同时,也强调了开发框架、交付流水线与工程实践的重要性。阅读的重点是理解微服务生态系统的核心,系统化地思考微服务架构的演进过程(不仅仅是服务拆分),并在演进中持续提升团队能力。

 

第3章介绍了实施微服务的核心技术点,包括服务设计、服务治理以及服务运维。在服务设计部分,探讨了服务划分时的通用原则与策略。同时,介绍了常用的服务设计模式,包括链式模式、聚合器模式、物化视图模式及CQRS模式等。另外,关于数据的一致性部分,也梳理了目前常用的分布式事务解决方案,2PC、3PC、TCC和Sagas.

在服务治理部分,介绍了服务的注册发现、负载均衡、配置管理以及容错设计。这些机制对于保障微服务系统的可用性、性能,防止服务雪崩等,有着非常重要的作用。

在服务运维部分,介绍了监控告警、调用链跟踪以及日志聚合。监控是获取反馈的基础,完善的监控机制能有效地提高运维效率。在调用链部分介绍了微服务分布式系统场景下对请求的追踪。在日志聚合部分介绍了如何汇聚日志,并通过索引等机制诊断问题。

 

第4章是策略篇的核心内容,本章从三个方向(团队与文化、架构与技术、工程与实践)、八个维度(全功能团队、敏捷实践、服务设计与实现、服务支撑组件、持续集成、测试管理、运维管理、部署管理)、五个阶段(初始阶段、已管理阶段、已定义阶段、量化管理阶段、持续优化阶段)介绍了什么是微服务参考模型,以及如何使用微服务参考模型。同时,通过定义结果类指标(用于衡量整体的优化效果,包括端到端的交付周期以及部署、运维的效率过程类指标和过程类指标(用于衡量微服务实施过程中局部的优化效果,包括开发、测试、持续集成、部署等各个局部环节的特定指标)来衡量团队改进效果,以逐渐提升团队实施微服务的成熟度。

 

第5章,本章基于参考模型的各个维度、笔者以往的经验以及业界的最佳实践,详细地介绍了参考模型每个维度下的实践。虽然在案例中使用了具体的技术和平台,但是相关的原则,如基础设施即代码、部署的原则等,和具体的技术、平台关系并不大,读者可以根据自己的情况,应用相同的原则来提升在各个维度上的微服务成熟度。

此外,在日常的工作中,无论是个人还是团队,都应该注意积累实践经验并在团队间分享。微服务的实施需要在架构、工程、组织能力上有质的提升,但是“质变”也是需要“量变”的积累才能发生的。

 

第6章本章介绍了遗留系统的特点、改造策略和场景,并结合一个实战案例进行了讲解。目的是帮助读者从以下方面掌握对遗留系统的微服务改造方法:

  • ·遗留系统是“需要被替代的系统”,往往存在类似的特征,如难于修改、学习和维护成本高、缺乏质量保障等。
  • ·通过直接重写并一次性替换遗留系统解决微服务改造问题是不现实的,可能会导致上线困难、影响面不可控、学习成本高等问题的产生。
  • ·对于遗留系统的改造过程,应当采取逐步替换而非一次性替换的策略。通常采用“演进式改造流程”和“绞杀者模式”来保证整个改造过程可控,并实现平滑过渡。

另外,对于遗留系统的改造需求,本章将其细分为三种场景,如新业务数据独立、新业务数据依赖以及现有业务服务化。通过对这些场景的分析,能有效地指导读者进行微服务的演进。

 

实战篇包含第7章至第13章,在前两部分的基础上,基于开源的微服务框架ServiceComb以及华为云ServiceStage设计和实现了SockShop系统,同时基于ServiceStage提供的流水线,将SockShop系统以持续交付的方式部署在公有云上。另外,使用ServiceStage提供的运维服务,对SockShop系统进行监控、告警和日志聚合。

第7章介绍了ServiceComb的特性、原理,注册中心的设计以及数据一致性解决方案Saga的设计。读者既可以学习到如何快速开始实施ServiceComb项目,也能深层次地了解其背后的设计原理与细节。

 

第8章本章介绍了华为云ServiceStage包含的主要服务以及其主要特性。其中CCE云容器引擎服务提供了服务运行的容器集群管理能力,CSE微服务引擎提供了微服务开发框架以及微服务治理能力,AOS编排服务提供了通过模板编排云上资源和应用系统的能力,APM应用性能管理服务提供了应用性能监控、日志聚合和告警能力,SWR则提供了软件仓库的能力。围绕ServiceStage提供的这些能力,用户可以快速且高效地开发、部署和运维服务。

 

第9章本章介绍了SockShop系统的主要需求以及SockWorks团队如何采用DDD的方式进行服务的划分及设计,并梳理了SockShop系统的架构图以及技术选型。此外,考虑到SockShop系统的部署模型,以及开发、测试、持续集成的需求。运维团队基于ServiceStage创建了这些环境。

 

第10章在本章中,SockWorks团队使用Java Chassis开发了第一个Catalogue服务,并基于微服务参考模型的相关实践,完成了服务的测试、打包以及发布。同时,利用ServiceStage的流水线功能,搭建了提交、构建、验证和发布的流水线,建立了顺畅的端到端的交付机制。经过如上的过程后,SockWorks团队的IT部门通过对结果类指标和过程类指标的收集,总结了第一阶段的收益。从结果类指标来看,周期时间大幅缩短,部署频率有所提高,每个迭代都可以完成新特性的部署。

 

第11章本章介绍了SockWorks的开发团队使用Java Chassis、Go Chassis、Nodejs等等框架实现SockShop系统的过程。在服务的实现过程中,限于篇幅关系,这里主要探讨了服务的接口定义以及模型设计。除此之外,本章还介绍了如何通过Mesher,使基于Nodejs 的用户界面服务(FrontEnd Service)接入注册中心,以及如何通过Pact测试来降低服务间集成测试的成本。

 

第12章介绍了SockShop系统的服务编排。通过使用定义好的TOSCA模版上,基于ServiceStage的编排服务,快速地进行SockShop系统的自动化部署。

 

第13章在本节中介绍了SockWorks的运维团队在SockShop系统上线后,如何利用ServiceStage提供的运维和服务治理来满足日常运维中对于监控、告警、微服务治理的需求。每个IT组织使用的基础设施平台可能不尽相同,但是服务监控、告警、中心化的日志服务、服务治理,应该是所有基础设施平台应当具备的能力。如果平台没有提供这样的能力,就需要通过开源或者商业的解决方案,来获得这种能力。

 

这份【微服务架构与实践第2版】共有515页,需要完整版的朋友,可以转发此文关注小编,扫码来获取!!

专家对本文的高度评价

 

本文适合学习的读者

本文不仅适合架构师、开发人员以及技术管理者阅读,也适合正在尝试向微服务架构迁移的团队或者个人。

希望本文能够在微服务落地的工作中对读者有所帮助。

也希望大家能够通过本文提升自己的技术深度和广度,好适应未来社会的发展,不断地走出一条属于自己的人生道路!