在当下的互联网应用中,业务体系发展的同时常常伴随着业务的不断变化,系统的用户体量和性能要求也不是传统行业所能够比拟的。以我参与开发的互联网应用为例,其背后所承载的业务功能复杂度、用户访问的并发量以及快速迭代的开发要求,已远远超出了传统单体系统的设计和开发要求。如何高效地实现系统的扩展性、伸缩性以及维护性,成为一个非常现实且亟待解决的问题。
面对这样的挑战,业界的普遍做法是引入服务拆分和集成的设计理念。而微服务架构已经成为这一设计理念下事实上的标准开发模式和最佳实践。它将传统的单体应用按照业务边界划分为小型的、可以独立部署的服务单元,服务之间遵循轻量级的交互协议进行集成,从而解决传统单体系统所面临的扩展性、伸缩性、维护性等一系列问题。
本书基于最新的Spring Cloud Alibaba微服务开发框架介绍构建企业级微服务架构的技术体系和工程实践。围绕日常开发过程中所涉及的各种开发需求,讨论Spring Cloud Alibaba框架所提供的各项解决方案和技术组件。同时,将基于这些技术组件构建一个案例系统并给出具体的实现过程和示例代码。
本书在结构上分为9章,每章都会在前一章演示的案例系统的基础上添加新的功能,从而实现从零开始打造一个完整的案例系统。具体来说,各章内容如下。
第1章:微服务架构与Spring Cloud Alibaba。本章从微服务架构的基本概念出发,引出Spring Cloud Alibaba微服务解决方案和技术组件。同时,介绍贯穿全书的案例系统,并对案例系统的业务场景和开发约定进行说明。
第2章:注册中心和Nacos。本章介绍微服务架构中的一个核心组件,即注册中心,针对注册中心的组成结构展开讨论,并引入Nacos这款主流的注册中心实现框架。针对Nacos,分别从服务注册和服务发现角度出发介绍它的使用方法,并对它的基本原理和高级特性进行分析。
第3章:远程调用和OpenFeign。一旦具备了服务注册和服务发现能力,下一步就是实现微服务架构中服务与服务之间的交互过程。本章首先梳理远程调用的技术组件,并引入OpenFeign这款Spring Cloud Alibaba中的透明化远程调用组件。远程调用是一个复杂的实现过程,本章也会围绕这一过程对OpenFeign的高级特性和使用技巧进行介绍。
第4章:负载均衡和Spring Cloud LoadBalancer。一旦实现了服务与服务之间的远程调用,下一步就需要考虑集群环境下的负载均衡问题。本章首先对负载均衡的概念和常见算法展开讨论,并引入Spring Cloud LoadBalancer实现自动化的负载均衡机制。事实上,针对负载均衡,开发人员可以使用多种手段控制服务访问的路由,从而实现标签化路由等自定义的负载均衡效果。本章针对这类负载均衡的高级用法也做了详细的介绍。
第5章:配置中心和Nacos。本章讨论微服务架构中的一个常见应用场景,即配置管理。当面对多服务、多环境下的配置信息时,需要引入Nacos来实现集中化管理。Nacos在作为注册中心的同时也能够承担配置管理的角色,并提供了配置隔离、配置共享、灰度发布等一系列高级特性来简化配置管理的开发难度。
第6章:服务网关和Spring Cloud Gateway。当面对来自客户端的各种请求时,微服务架构需要在各个微服务之前搭建一个服务网关。在Spring Cloud Alibaba中,Spring Cloud Gateway就是这样一种服务网关。本章将阐述服务网关的组成结构和作用,并详细剖析Spring Cloud Gateway的配置方法、工作流程和实现原理,从而帮助你实现对Spring Cloud Gateway的定制化扩展,以满足复杂场景下的应用需求。
第7章:消息通信和RocketMQ。Spring Cloud Alibaba为开发人员提供了一款功能强大的消息中间件,即RocketMQ。相比其他消息中间件,RocketMQ具备一组特有的高级功能,包括延迟消息、顺序消息、消息过滤。在本章中,将使用RocketMQ实现消息发送和消息消费,并介绍该框架具备的高级功能。另外,消息可靠性对于任何一款消息中间件而言都是一项核心功能,本章也对RocketMQ所具备的消息可靠性方案进行了系统分析。
第8章:分布式事务和Seata。对于微服务架构而言,如何实现服务与服务之间的数据一致性一直是一项技术难题,而Seata框架为我们提供了解决方案。在Seata中内置了AT模式、TCC模式、Saga模式以及XA模式这四种主流的分布式事务实现模式,本章对这些模式进行了讨论,并给出了选型方法。同时,对于分布式事务而言,可靠事件模式也是一种非常主流的实现模式,本章基于上一章介绍的RocketMQ框架提供了这一模式的实现方案。
第9章:服务可用性和Sentinel。在本书的最后,讨论如何确保服务可用这一话题。Sentinel框架是Spring Cloud Alibaba所提供的专门用于打造高可用服务的开发框架。本章首先对服务不可用问题进行深入分析,并给出对应的解决方案。然后,通过引入Sentinel框架来阐述这些解决方案的实现方法和过程。针对Sentinel,重点对它所具备的两大功能——请求限流和服务降级进行讨论。同时,Sentinel是一款具有高度扩展性的开源框架,开发人员可以基于自身需求实现定制化的降级策略,本章也通过案例给出了对应的实现方案。
本书面向广大服务端开发人员,读者不需要有很高的技术水平,也不限于特定的开发语言,但熟悉Java领域的常见技术和框架并掌握一定的系统设计基本概念有助于更好地理解书中的内容。同时,本书也适用于对Spring Cloud Alibaba框架感兴趣的开发人员。通过本书的系统学习,读者将对Spring Cloud Alibaba框架所具备的技术体系和实现机制有全面深入的了解,为后续的工作和学习铺平道路。
感谢我的家人,特别是我的妻子章兰婷女士,在我占用大量晚上和周末时间写作的情况下,给予我极大的支持和理解。感谢以往以及现在公司的同事,身处业界领先的公司和团队中,我得到很多学习和成长的机会,没有平时大家的帮助,不可能有这本书的诞生。
由于水平和经验有限,书中难免有欠妥和错误之处,恳请读者批评指正,联系邮箱:1755982343@qq.com。
注意:本书提供视频教程,读者可通过扫描章末二维码查看对应主题的视频。
郑天民