大牛20年实战总结SpringCloud微服务分布式系统文档终于曝光了!

本文详细介绍了SpringCloud框架下的微服务组件,如断路器、限流器、API网关、配置管理、链路追踪、监控与权限验证,以及分布式系统的关键概念和技术实践。通过实例演示和理论阐述,帮助读者掌握微服务架构的开发与部署。
摘要由CSDN通过智能技术生成
  • 5.2入门实例

  • 5.3 Hystrix工作原理

  • 5.4 Hystrix实践

  • 5.5仪表盘

  • 5.6 Hystrix属性配置

大牛20年实战总结SpringCloud微服务分布式系统文档

**第6章新断路器———Resilience4j;**Resilience4j是一个轻量级的、易于使用的容错框架,它是受Netflix 的Hystrix 的启发,基于Java8和函数式编程设计的,所以在使用它的时候,可以看到大量的函数式编程设计。

  • 6.1断路器(CircuitBreaker)

  • 6.2限速器(RateLimiter)

  • 6.3舱壁隔离(Bulkhead)

  • 6.4重试器(Retry)

  • 6.5缓爱存(Cache)

  • 6.6时间限制器(TimeLimiter)

  • 6.7组件混用

  • 6.8使用Spring Boot 2的配置方式

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 7.1 OpenFeign的使用

  • 7.2配置Hystrix

  • 7.3使用Resilience4j调用OpenFeign接口

大牛20年实战总结SpringCloud微服务分布式系统文档

**第8章旧API网关———Zuul;**前面几章,我们学习了服务注册和发现(Eureka),通过它们,我们能够顺利地管理我们的服务;学习了服务之间的调用(Ribbon和 OpenFeign),让各个服务联系起来,通过共同协助来完企业业务逻辑;还学习了断路器(Hystrix和Resilience4j),它能尽可能地保护微服务之间的调用,通过熔断的方式来避兔服务依赖造成的雪崩。以上谈到的这些都是Spring Cloud微服务的核心组件。

本章开始让我们学习微服务最后的一个核心组件~—API网关。Netflix Zuul是一个API网关,它的主要功能是提供网关服务。

  • 8.1什么是网关

  • 8.2 Zuul入门实例

  • 8.3Zuul原理-过滤器

  • 8.4限流

  • 8.5动态路由

  • 8.6灰度发布(金丝雀发布)

  • 8.7使用Hystrix容断

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 9.1认识Gateway

  • 9.2断言(Predicate)

  • 9.3过滤器(Filter)概述

  • 9.4内置过滤器工厂

  • 9.5自定义过滤器

  • 9.6 Gateway知识补充

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 10.1入门实例—使用Git仓库

  • 10.2使用其他方式实现配置

  • 10.3服务端的使用详解

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 11.1链路追踪的基本概念

  • 11.2 Spring Cloud Sleuth和Zipkin

  • 11.3实例

  • 11.4持久化

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 12.1本章实例简介

  • 12.2 URL注册方式

  • 12.3服务发现注册方式

  • 12.4使用Spring Security保护Admin服务端

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 13.1生成ID的常见办法

  • 13.2自定义发号机制

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 14.1基础知识

  • 14.2开发环境搭建

  • 14.3分片算法

  • 14.4分片中间件ShardingSphere

大牛20年实战总结SpringCloud微服务分布式系统文档

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

分布式数据库事务比单机数据库事务要复杂得多,它涉及多个数据库节点之间的协作。在第1章中,我讲过BASE理论,在分布式数据库中,存在强一致性和弱一致性。所谓强一致性是指任何多个后续线程或者其他节点的访问都会返回最新值。弱一致性是指当用户对数据完成更新操作后,并不保证在后续线程或者其他节点马上访问到最新值,它只是通过某种方法来保证最后的一致性。强一致性的好处是,对于开发者来说比较友好,数据始终可以读取到最新值,但这种方式需要复杂的协议,并且需要牺牲很多的性能。弱一致性,对于开发者来说相对没有那么友好,无法保证读取的值是最新的,但是不需要引入复杂的协议,也不需要牺牲很多的性能。事实上,在发生一定的不一致的情况下,我们可以采取多种方式进行补救,用户的快速体验,往往比保证强一致性重要,所以在当今互联网的开发中,弱一致性占据了主导地位。而从微服务的角度来说,强一致性是不符合微服务的设计理念的,这些都会在本章进行讲解。

  • 15.1强─致性事务

  • 15.2弱—致性事务

  • 15.3分布式事务应用的实践理论

大牛20年实战总结SpringCloud微服务分布式系统文档

第16章分布式缓存——Redis;

  • 16.1 Redis的高可用

  • 16.2使用─致性哈希(ShardedJedis)

  • 16.3分布式缓存实践

大牛20年实战总结SpringCloud微服务分布式系统文档

**第17章分布式会话;**会话(session)是指客户端和服务器之间的交互过程中,由服务器端分配的一片内存空间,它用于存储客户端和服务端交互的数据,例如,典型的电商网站的购物车。这片内存空间是由对应的客户端和服务器共享的,它可以存储那些需要暂存的和常用的数据,以便后续快速方便地读出。在会话机制中,为了使浏览器和服务器能够对应起来,会使用一个字符串进行关联,例如,Tomcat中的sessionId。在单体系统中,因为服务器实例只有一个,所以只需要将用户的数据存入到自己的内存中就可以反复读出了。在分布式系统中,有多个服务器节点,这些节点甚至是跨服务的,如果会话信息只在一个节点上,就需要一定的机制来保证会话在多个服务节点之间能够共享,这便是本章要讨论的分布式会话。在分布式会话中,最重要的功能是安全验证,因为不同的用户会有不同的权限。

  • 17.1分布式会话的几种方式

  • 17.2黏性会话

  • 17.3服务器会话复制

  • 17.4使用缓存(spring-session-data-redis)

  • 17.5持久化到数据库

大牛20年实战总结SpringCloud微服务分布式系统文档

**第18章分布式系统权限验证;**在计算机系统中,权限往往也是很重要的一个部分。在单体系统中,权限往往很容易控制,但是在分布式系统中,则不然。因为在单体系统中往往只有一个节点,只要解决单点就可以了。但是分布式系统是多节点协作,不能一个节点验证通过后,另外一个节点却没有验证通过,所以本章将会讲述分布式系统的权限验证。实际上,在分布式会话中谈到的使用缓存存储会话(spring-session-data-redis),也能在一定程度上支持分布式的权限验证,不过一切还需要从最基础的 Spring Security开始讲起。因为这里涉及的内容较多,所以我还是新建了工程,且将其命名为chapter18,这样就可以根据需要新增对应的模块了。

  • 18.1 Spring Security

  • 18.2自定义微服务权限控制

  • 18.3 OAuth 2.0概述

  • 18.4 Spring Cloud Security

大牛20年实战总结SpringCloud微服务分布式系统文档

**第19章远程过程调用;**远程过程调用(Remote Procedure Call,RPC)是一种服务调用的方式,它在许多企业中也得到了很多的应用。事实上,在微服务中,推荐我们使用的是REST风格的调用,而非 RPC。那么为什么需要使用RPC?又如何使用呢?

  • 19.1远程过程调用

  • 19.2 Thrift简介

  • 19.3 RPC小结

大牛20年实战总结SpringCloud微服务分布式系统文档

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

  • 20.1微服务设计原则

  • 20.2高并发系统的一些优化经验

  • 20.3简易微服务系统实例

大牛20年实战总结SpringCloud微服务分布式系统文档

这份【SpringCloud微服务和分布式系统实践】 共有527页,需要完整版的朋友,可以一键三连+评论,扫码下方来获取!

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

[外链图片转存中…(img-WjrTACem-1713628643854)]

[外链图片转存中…(img-uS0rmOHh-1713628643854)]

[外链图片转存中…(img-qjobeCoi-1713628643854)]

[外链图片转存中…(img-ldu1qADd-1713628643854)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值