前言
最近几年软件开发方法层出不穷,微服务作为一种主流的架构模式一直热度不减。
为了帮助广大程序员们更好更快地理解微服务的概念,学习微服务在项目中的实践,本文全面阐述了微服务架构模式的特点、架构思路、设计理念、技术框架及具体的代码实战,以软件开发过程中遇到的各种疑难问题为切入点,逐步解析微服务架构是如何设计及解决这些问题的。
也是目前最新、也比较完善的一份微服务架构原理与开发实战文档。
大家先来看一下目录
限于文章篇幅原因,只能以截图的形式展示出来, 👇🏻 👇🏻 有需要的小伙伴可以文末获取 👇🏻 👇🏻
其次,看一下包含的内容
本文总共有470页,包含12章的内容,微服务概述微服务架构设计、Spring Cloud相关组件、契约测试、API网关、BFF用于前端的后端领域驱动设计、Docker和K8s、持续集成、部署与交付、任务管理、事务管理、传统架构的微服务转型之路。
微服务概述。微服务并不是一个新的概念,但从提出至今一直热度不减,而且随着技术的不断创新,不同的技术团队会产生不同的理解,这也导致了好像大家都在做微服务,也都想做好微服务,但具体的软件设计或架构实践会有很多的不同,本章就深入探讨到底什么是微服务。
微服务架构设计,微服务架构有两个难点:一是微服务架构本身核心组件的落地设计,即技术实现;二是微服务在物理上的层次结构和拆分设计。这两点是实现微服务架构设计成功的关键因素,本章将详细介绍微服务架构的核心架构。
Spring Cloud相关组件,很多人都觉得使用了Spring Cloud就是用了微服务,虽然SpringCloud并不能代表微服务的全部,但是通过学习Spring Cloud,确实可以更加深入地了解微服务的理念和实践,如海量服务的容错问题、雪崩问题、配置和监控问题、日志追踪问题等,本章将介绍SpringCloud的相关微服务组件,学习使用Spring Cloud解决这些问题的方法。
契约测试,微服务架构中最常见的就是远程调用,如服务和服务之间的远程调用,前端和后端的远程调用,BFF和服务的远程调用,等等。当系统体量越来越大时,如何保证服务间调用关系的正确性?哪个接口会影响到哪个调用者?这就需要一个自动的方法来帮助人们测试接口的可靠性,这就是契约测试。
API网关,网关的英文是Gateway,翻译为门、方法、通道、途径。网关就是接口的通道或接口的大门,要想访问API,就必须通过API网关,那为什么要有API网关,这么做有什么作用呢?本章将详细介绍微服务架构中API网关的作用和具体用法。
BFF用于前端的后端,随着前端技术的大爆发,面对逐渐复杂化的前端工程体系,越来越多的企业开始采用前后端分离的开发模式。随着微服务模式的流行,前后端的交互也变得越来越复杂,如大量接口的组合、复杂的配置、重复的代码等问题使前后端的开发者饱受折磨。于是,一个新的模式诞生了,BFF用于前端的后端。越来越多的项目开始采用BFF模式,本章将详细介绍BFF模式的具体实践用法。
领域驱动设计,近几年来,随着微服务的流行,一个新的软件设计方法逐渐流行起来,这就是领域驱动设计。当我们有了众多的技术框架和架构模式时,具体去落地实施一个微服务项目的难处似乎并不仅仅体现在软件技术上,例如,我们该如何设计微服务的软件模型和划分服务职责?
本章将介绍领域驱动设计这一新兴的科学设计方法。
Docker和K8s,提到微服务,首先想到的是服务很小、职责很小,那如果是一个庞大复杂的系统,我们必然会建立很多的微服务,而且服务都是可以水平扩展的,在一些大型的互联网企业,一个服务的数量可能是成百上千的,那么部署和管理这些服务就成了一个难题。本章将介绍服务容器化部署的相关知识。
持续集成、部署与交付,虽然第8章中提到了使用容器化技术的部署方式,但似乎和微服务定义中的自动化没什么关系,本章将介绍自动化部署和快速交付的相关概念与方法案例,同时思考微服务项目中需要自动化部署机制的原因。
任务管理,在软件开发过程中,无论是项目还是产品都有着自己的独特性,不可能所有的项目都千篇一律,我们会遇到各种各样的场景,除了一些宏观的架构和设计,微服务架构在技术细节上也有很多需要注意的地方,如任务管理,当然这可能是一些分布式架构的特性,而不仅限于微服务架构,本章将介绍一些微服务架构下任务管理的实践。
事务管理,事务管理一直都是软件开发中的难点,即使很多优秀的框架能够帮助我们处理一些简单的逻辑,如在单体式架构中使用AOP的事务管理框架来管理事务,但在微服务架构下,事务管理的需求与复杂度都比单体式架构更高。那么,在微服务中应该如何管理事务呢?本章将介绍事务管理的方式和方法。
传统架构的微服务转型之路,虽然微服务的浪潮越来越热,但是软件工程这么多年来,还是产生了大量传统架构的系统,面对已经存在了多年的老项目,系统性能越来越差,想要扩展又显得捉襟见肘,想要做微服务架构转型也处处受限,很多项目团队甚至直接选择丢弃老的系统,重新开发新的系统。那么,当我们面对技术陈旧、业务庞杂、技术债众多的老旧系统时,该如何实现微服务的转型呢?本章将告诉大家从现有传统架构向微服务架构转型的思路和过程。