阿里企业级微服务分布式系统开发共527页进阶架构笔记

开篇必水

分布式系统比单机系统复杂得多,但通过多年的发展,业界已经有了丰富的分布式系统理论,也有了许多优秀的组件。在分布式系统理论里,最近流行的微服务架构理论成了佼佼者,微服务的概念也成了当前分布式系统实现方案中的主流,显然,微服务架构成了分布式系统的一种形式。优秀的分布式系统组件早期主要以国内阿里巴巴的Dubbo(现今已经被Apache概括进入其孵化器)为主,后来从国外引入了Spring Boot和Spring Cloud,它们如今是微服务实现的主流方案。面试

为顺应技术的发展趋势,我对微服务进行了深刻的学习和研究,而且于2018年创做出版了《深刻浅出Spring Boot 2.x》。免费分享完整文档共441页点击便可获取学习资料、面试资料、PDF教程文档便可获取这两份学习资料哦。redis

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

为了更进一步地讲解微服务,知足当前企业搭建微服务系统的须要,我竭尽所能编写了这本关于Spring Cloud的书。虽然Spring Cloud可以有双搭P微服务系统,但微服务系统只是分布式系统的一种形式,它并不能解决分布式系统的全部问题,例如,分布式缓存、会话、数据库及其事务等,都不能经过Spring Cloud来有效处理。但这些问题又是企业实施微服务系统时必需要面对的,甚至是一些企业的难点和痛点。所以,本书在详细介绍Spring Cloud的基础上,还会对经常使用的分布式技术进行讲解,以知足企业的须要。spring

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

内容安排

本书基于一线企业的实际应用需求,介绍Spring Cloud微服务和经常使用的分布式系统。总体来讲,全书分为4个部分。数据库

第一部分:概述和基础(1~2章)

本部分将讲解分布式和微服务的基础知识和理念,而且简单介绍本书须要用到的基础知识。编程

第1章分布式和微服务概述缓存

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第2章技术基础:为了更好地介绍Spring Cloud,这里稍微介绍- .下Spring Boot和HTTP的REST风格。由于SpringCloud是以Spring Boot做为基石的,而各个服务系统又是经过REST风格的请求集成在-起的, 因此学习它们将有助于咱们深刻学习Spring Cloud。固然,若是你已经对它们很熟悉了,也能够跳过本章,直接学习第3章的内容。安全

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第二部分:Spring Cloud微服务(3~12章)

介绍Spring Cloud的各种组件,这是微服务的核心内容。介绍的组件包括服务注册和服务发现(Eureka)、服务调用(Ribbon 和OpenFeign)、断路器(Hystix 和Resilience4j)、网关(Zuul和Gateway)、配置(Config)、 全链路追踪(Sleuth)、 微服务的监控(Admin)等。springboot

第3章服务治理——Eureka:,Pivotal团队经过Spring Boot形式的封装将Nettlix公司开发的分布式系统组件封装了起来,其中就包括Eureka, Eureka是Spring Cloud的服务治理中心。在使用Spring Boot进行了二次封装后,Bureka 的使用就显得十分简易了。Eureka 做为一个微服务的治理中心,它是一个服务应用,能够接收其余服务的注册,也能够发现和治理服务实例。服务器

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第4章客户端负载均衡——Ribbon:Spring Cloud Netflix Ribbon是一种客户端负载均衡的组件,为了方便,在本书中都简称为Ribbon。在微服务架构中,咱们依照业务将系统进行切分,但一个实际的业务每每须要多个微服务经过相互协做来完成,因此各类微服务之间存在服务调用。session

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第5章断路器——Hystrix:Spring Cloud社区推荐开发者使用其余仍然活跃的开源项目,其中最推荐使用的是Resilience4J, 而且Spring Cloud社区也在加紧开发spring cloud-ircuitbreaker,来取代Hystrix。但这个项目还在开发中,并无发布,加之当前很多企业也在使用Hystrix, 而且技术是相通的,因此这里仍是决定介绍一下 Hystrix。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第6章新断路器——Resilience4j:Resilience4j是一个轻量级的、易于使用的容错框架,它是受Netflix的Hystrix的启发,基于Java8和函数式编程设计的,因此在使用它的时候,能够看到大量的函数式编程设计。它与Hystrix 相比有几个不一样点。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第7章声明式调用——OpenFeign:本书从第3章到第6章,介绍了微服务的核心内容:服务治理、服务调用(Ribbon)和熔断器(Hystrix和Resilience4j)。这些都是微服务的利器,只是从开发者的角度来讲,和咱们打交道最多的.是服务调用和熔断器。服务调用使得多个微服务能够经过相互调用,为同一个业务服务。熔断器则能够在很大的程度上保证服务调用。可是严格来说,Ribbon 使用REST请求方式编写仍是比较麻烦的,对于开发者也不算友好,所以在REST 请求方式的基础上,一些开发者 又提供了接口声明方式的调用,例如,咱们本章要介绍的GitHub OpenFeign就是这样的。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第8章旧API网关——Zuul:前面几章,咱们学习了服务注册和发现(Eureka), 经过它们,咱们可以顺利地管理咱们的服务;学习了服务之间的调用(Ribbon 和OpenFeign),让各个服务联系起来,经过共同协助来完企业业务逻辑;还学习了断路器(Hystrix和Resilience4j),它能尽量地保护微服务之间的调用,经过熔断的方式来避免服务依赖形成的雪崩。以上谈到的这些都是Spring Cloud微服务的核心组件。本章开始让咱们学习微服务最后的一一个核心组件一API 网关。Netflix Zuul是-一个API网关,它的主要功能是提供网关服务。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第9章新网关——Spring CloudGateway:在第8章中,咱们讲述了旧网关Netlix Zuul,而且告知读者,Zuul 1.x只是性能一-般的网关,加上Netlix Zuul 2.x版本常常不能如期发布,因此新版的Spring Cloud不打算捆绑Zul了。新版的Spring Cloud提供了新的网关给开发者使用,这即是Spring Cloud Gateway。为了简便,下 文在没有特别指明的状况下,将简称它为Gateway。Gateway 并不是是使用传统的Jakarta EE的Servlet容器,它是采用响应式编程的方式进行开发的。在Gateway中,须要Spring Boot和Spring WebFlux提供的基于Netty的运行环境。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第10章配置——Spring Cloud Config:Spring Cloud Config (为了方便,在不产生歧义时,全书都简称为Config)是一个支持微服务和分布式集中化提供配置的项目。微服务架构中的实例可能会很是多,若是一个个地更新配置,运维成本会十分大。为了简化配置的复杂性,一些开发者提出 了集中化管理配置的概念,也就是提供一个集中化的配置中心,让咱们能够统- -配置各个微服务实例。本章要讲的Config 就是出于这个目的设计的。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第11章Spring Cloud Sleuth全链路追踪:在前面的章节中,咱们学习了Eureka 服务治理中心,经过它能够管理各个服务,使得它们可以相互协做工做。可是随着业务变得复杂,服务也会复杂起来,加上每-一个服 务均可以有多个实例,一旦发生 问题,将很难查找问题的根源。为了解决这个问题,许多分布式开发者都开发了本身的链路监控组件,使得请求可以追踪到各个服务实例中,典型的如谷歌(Google)的Dapper、推特(Twitter)的Zipkin和阿里巴巴(Alibaba) 的EagleEye, 它们都是当前著名的链路追踪组件。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第12章微服务的监控——Spring Boot Admin:在一个优秀的分布式系统中,监控服务实例,及时发现实例存在的问题是十分重要的。SpringBoot Admin就提供了这样的功能,为了方便,在不引发歧义的状况下,下文将Spring Boot Admin简称为Admin。Admin 是一个监控平台,它能够检测各个Spring Boot应用,让运维和开发人员及时发现各个服务实例存在的问题。Admin 是一个 基于Spring Boot Actuator 的控制台,也就是它能够经过Spring Boot Actuator暴露的端点,来监测各个实例的运行情况。Admin 的用户界面(User Interface,UI)是采用AngularJs应用程序构建的。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第三部分:分布式技术(13~18章)

讲解分布式的其余知识,包括分布式发号机、分布式数据库、分布式缓存、分布式会话和权限等。

第13章生成惟一的ID——发号机制:在数据库(请注意,在本章中,若是没有特别说明,讲到的数据库就都是指关系数据库,而不包含相似Redis这样的非关系数据库)中,主键每每是一条记录的惟一标识,它具有惟- -性。 在单机的时候,只须要考虑单个数据库的问题,相对简单,但在分布式和微服务系统里,就相对困难了,由于它涉及多台机器之间的协做。那么如何保证在分布式或者微服务的多个节点下生成惟一的ID, 如何让ID具有- -定的可读性呢? 这就须要一个发 号机制来控制了。如何实现发号机制,即是本章要讨论的问题。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第14章分布式数据库技术:在第1章咱们谈过,互联网会员的增长和业务的复杂化,必然致使大数据的存储,这时使用单机数据库对数据存储和访问,就显得捉襟见肘了。而划分的方法在第1章也谈过,主要是水平、垂直以及混合分法。对分布式和微服务来讲,一种业务就可能有不少的数据,如交易,单数据库也颇有可能没法支撑,须要多个数据库节点进行支持,这种须要将数据库拆分为多节点进行存储的技术,即是本章须要的论的分布式数据库技术。为了更好地阐述分布式数据库的知识,咱们首先从分表、分库和分区这样的数据库知识开始讲述。不过本章咱们还不会讨论分布式事务的相关知识,这将会在下章进行讨论。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第15章分布式数据库事务:上一章中,咱们讨论了分布式数据库的知识,主要是分片技术。这一章让咱们来讨论分布式数据库事务,咱们知道在互联网的世界中,有些数据对一致性的要求是十分苛刻的,如商品的库存和用户的帐户资金,而这些却极有可能分别存储在不一样的数据库节点中,那么如何在多个数据库节点中保证这些数据的一致性,就是分布式数据库事务要解决的问题。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第16章分布式缓存——Redis:在当前互联网中,缓存系统通常由Redis来完成,因此后续咱们会集中讨论Redis, 就再也不讨论其余缓存系统了。本书采用的是Redis的5.0.5版本,若是采用别的版本,在配置项上会有少许不一样,不过也大同小异,不会有太大的问题。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第17章分布式会话:在分布式系统中,有多个服务器节点,这些节点甚至是跨服务的,若是会话信息只在一个节点上, 就须要- -定的机制来保证会话在多个服务节点之间可以共享,方即是本章要讨论的分布式会话。在分布式会话中,最重要的功能是安全验证,由于不一样的用户会有不一样的权限。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第18章分布式系统权限验证:本章会讲述分布式系统的权限验证。实际上,在分布式会话中谈到的使用缓存存储会话(springsession-data-redis),也能在必定程度 上支持分布式的权限验证,不过一切还 须要从最基础的Spring Security开始讲起。由于这里涉及的内容较多,因此我仍是新建了工程,且将其命名为chapter18,这样就能够根据须要新增对应的模块了。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第四部分:微服务系统实践(19~20章)

经过Apache Thrift 讲解远程过程调用(RPC),而且讲解在分布式中处理高并发的一些经常使用技巧,最后给出一个微服务实例。

第19章远程过程调用:远程过程调用(Remote Procedure Call, RPC)是-种服务调用的方式,它在许多企业中也获得了不少的应用。事实上,在微服务中,推荐咱们使用的是REST风格的调用,而非RPC。那么为何须要使用RPC?又如何使用呢?

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

第20章微服务设计和高并发实践:以上几章已经阐述了大部分搭建微服务的内容,本章主要讲微服务实践。在微服务中,要解决的大问题是高并发问题,这也是分布式中最受到关注的问题之一。

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记

 

由于这份《spring cloud微服务和分布式系统实战》和《深刻浅出springboot2.0》内容实在太多,两本书加起来一共971页,没有办法给你们所有展现出来,须要获取的小伙伴能够点击便可获取学习资料、面试资料、PDF教程文档

阿里P8根据企业需求讲解微服务分布式系统开发527页进阶笔记