微服务架构原理与开发实战!
前言微服务是一种架构模式,但也不仅仅是一种架构模式,还涵盖了 众多的软件开发方法和技术,又代表着敏捷的开发体系,提倡重构和 持续演进,对于开发、测试、运维等有着不同的要求。同时,它可能 还需要更加复杂的设计方法,更加轻量的协议,甚至还会影响组织或 团队的规模和结构,可能给团队带来技术栈的“爆炸”。在这个技术 浮躁的年代,对于已经成为主流的微服务架构,我们应该如何面对?微服务到底是什么,一直众说纷纭,我们只知道各大企业纷纷追 捧和实践微服务架构,有的项目可能使用了 Spring Cloud 就算是使用 微服务了,然后说微服务就是 Spring Cloud,有的系统可能越做越像 SOA,然后说微服务就是 SOA 的一种,还有的把自己的应用拆分,然后 觉得把应用拆分成小块就是微服务。并不是说以上说法都是错的,但 行业里确实还没有一个标准的试金石来验证微服务的好与坏,微服务 的“酸甜苦辣”可能只有用过了才知道。其实,每个新概念的出现都填补了一些空白领域,每个新技术的 产生都有它擅长解决的问题,每个语言的发明都有它专注处理的场 景。软件开发的世界就是这样,我们会遇到各式各样的麻烦,会蹚过 数不清的坑,会学习学不完的框架,甚至有的技术还没有搞清楚原理 就已经被淘汰了,但我们仍然乐此不疲。很多年前笔者就听说过“微服务”的概念,但一直没有合适的机 会和方法去系统地学习微服务,好在根据多年工作经验的积累,从不 同的项目实践中慢慢总结了一些微服务的经验。不敢说全部都是绝对 的权威理论,但大多都是从真实的实战场景出发,以解决问题为导向慢慢推演出的架构模。本篇旨在为广大读者介绍一个较为全面的微 服务开发体系。
讲解目录

主要内容
第 1 章 微服务概述微服务并不是一个新的概念,但从提出至今一直热度不减,而且 随着技术的不断创新,不同的技术团队会产生不同的理解,这也导致 了好像大家都在做微服务,也都想做好微服务,但具体的软件设计或 架构实践会有很多的不同,本章就深入探讨到底什么是微服务。

第 2 章 微服务架构设计微服务架构有两个难点:一是微服务架构本身核心组件的落地设 计,即技术实现;二是微服务在物理上的层次结构和拆分设计。这两 点是实现微服务架构设计成功的关键因素,本章将详细介绍微服务架 构的核心架构。

第 3 章 Spring Cloud 相关组件很多人都觉得使用了 Spring Cloud 就是用了微服务,虽然 Spring Cloud 并不能代表微服务的全部,但是通过学习 Spring Cloud,确实可 以更加深入地了解微服务的理念和实践,如海量服务的容错问题、雪 崩问题、配置和监控问题、日志追踪问题等,本章将介绍 Spring Cloud 的相关微服务组件,学习使用 Spring Cloud 解决这些问题的方 法。

第 4 章 契约测试微服务架构中最常见的就是远程调用,如服务和服务之间的远程 调用,前端和后端的远程调用,BFF 和服务的远程调用,等等。当系统 体量越来越大时,如何保证服务间调用关系的正确性?哪个接口会影 响到哪个调用者?这就需要一个自动的方法来帮助人们测试接口的可 靠性,这就是契约测试。

第 5 章 API 网关网关的英文是 Gateway,翻译为门、方法、通道、途径。网关就是 接口的通道或接口的大门,要想访问 API,就必须通过 API 网关,那为 什么要有 API 网关,这么做有什么作用呢?本章将详细介绍微服务架构 中 API 网关的作用和具体用法。

第 6 章 BFF 用于前端的后端随着前端技术的大爆发,面对逐渐复杂化的前端工程体系,越来 越多的企业开始采用前后端分离的开发模式。随着微服务模式的流 行,前后端的交互也变得越来越复杂,如大量接口的组合、复杂的配 置、重复的代码等问题使前后端的开发者饱受折磨。于是,一个新的模式诞生了,BFF 用于前端的后端。越来越多的项目开始采用 BFF 模 式,本章将详细介绍 BFF 模式的具体实践用法。

第 7 章 领域驱动设计近几年来,随着微服务的流行,一个新的软件设计方法逐渐流行 起来,这就是领域驱动设计。当我们有了众多的技术框架和架构模式 时,具体去落地实施一个微服务项目的难处似乎并不仅仅体现在软件 技术上,例如,我们该如何设计微服务的软件模型和划分服务职责? 本章将介绍领域驱动设计这一新兴的科学设计方法。

第 8 章 Docker 和 K8s 提到微服务,首先想到的是服务很小、职责很小,那如果是一个 庞大复杂的系统,我们必然会建立很多的微服务,而且服务都是可以 水平扩展的,在一些大型的互联网企业,一个服务的数量可能是成百 上千的,那么部署和管理这些服务就成了一个难题。本章将介绍服务 容器化部署的相关知识。

第 9 章 持续集成、部署与交付虽然第 8 章中提到了使用容器化技术的部署方式,但似乎和微服务 定义中的自动化没什么关系,本章将介绍自动化部署和快速交付的相 关概念与方法案例,同时思考微服务项目中需要自动化部署机制的原 因。

第 10 章 任务管理在软件开发过程中,无论是项目还是产品都有着自己的独特性, 不可能所有的项目都千篇一律,我们会遇到各种各样的场景,除了一 些宏观的架构和设计,微服务架构在技术细节上也有很多需要注意的 地方,如任务管理,当然这可能是一些分布式架构的特性,而不仅限 于微服务架构,本章将介绍一些微服务架构下任务管理的实践。

第 11 章 事务管理事务管理一直都是软件开发中的难点,即使很多优秀的框架能够 帮助我们处理一些简单的逻辑,如在单体式架构中使用 AOP 的事务管理框架来管理事务,但在微服务架构下,事务管理的需求与复杂度都比 单体式架构更高。那么,在微服务中应该如何管理事务呢?本章将介 绍事务管理的方式和方法。

第 12 章 传统架构的微服务转型之路虽然微服务的浪潮越来越热,但是软件工程这么多年来,还是产 生了大量传统架构的系统,面对已经存在了多年的老项目,系统性能 越来越差,想要扩展又显得捉襟见肘,想要做微服务架构转型也处处 受限,很多项目团队甚至直接选择丢弃老的系统,重新开发新的系 统。那么,当我们面对技术陈旧、业务庞杂、技术债众多的老旧系统 时,该如何实现微服务的转型呢?本章将告诉大家从现有传统架构向 微服务架构转型的思路和过程。


注:篇幅有限,资料已整理成文档,查看下方名片来进行获取!

评论