屌的一批,阿里P8推荐的Spring Cloud实战笔记

news2024/11/15 2:18:32

Spring Cloud 前世今生

Spring Cloud体系由Spring 在2015年年初推出,至今已经五年多,其子项目在不断增加与完善,其所包含的功能点已经基本满足整个微服务体系的需求。加上Spring本身强大的技术后盾和活跃的技术社区氛围,Spring Cloud已经形成了一股势不可挡的力量,迅速扩张、覆盖至整个互联网技术公司。尝试调研使用并在生产环境落地Spring Cloud的互联网公司越来越多,Netflix公司也在不断迭代与完善其组件,源源不断地供给Spring Cloud更新的源泉。

Spring Cloud问世之前各大互联网公司都有自己的服务框架,大多数是在参考业内的基础上自主研发,导致各个公司重复造轮子,浪费了资源并降低了效率,一旦开发人员更替有很大可能停止维护又重新造个轮子。技术人员在更换工作的时候要重新熟悉新公司的整个技术体系,带来的成本也很高,像很多年前SSH一统江湖的时候每个公司都是SSH,在技术层面形成了大一统之势。利用SpringCloud,无技术体系切换的学习成本,由Apache、Spring等开源组织维护技术框架,互联网公司可以更多专注于自身公司的业务层面。

今天给大家分享一份《极简Spring Cloud实战》本书精巧实用、快速入门,资深Spring Cloud践行者经验集结,组件应用与原理分析结合,并以综合案例融合微服务和DevOps实践

如何阅读本书

本书分为三篇,共14章内容。

基础服务篇(第1~9章):本篇内容是实践微服务必备的知识点和技能,需要重点学习。

任务与消息篇(第10~13章):主要介绍消息处理以及任务流依赖处理方面的组件的使用及其实现原理。

微服务实战篇(第14章):本篇是基于Spring Cloud、Docker、OAuth2构建微服务的一个完整案例。

第一篇 基础服务篇

本篇将为读者介绍微服务架构的演进过程,带领读者了解什么是微服务,为什么需要微服务,以及微服务与Spring Cloud之间是什么关系,为什么要选择Spring Cloud来实现微服务而不是市面上现存的其他解决方案。了解之后,相信读者会有自己的答案。

第1章 微服务与Spring Cloud:第1章对微服务演进历程以及Spring Cloud 的全貌进行了提纲挈领的介绍,以期读者有全局性认知,使后面的学习不会碎片化。

第2章 服务发现: Eureka:Eureka是 Netflix开源的一款提供服务注册和发现的产品,提供了完整的服务注册和服务发现实现,也是Spring Cloud体系中最重要、最核心的组件之一。通俗讲,Eureka就是一个服务中心,将所有可以提供的服务都注册到它这里来管理,其他各调用者需要的时候去注册中心获取,然后服务调用方再向服务提供方发起调用,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。

第3章 配置中心:Config:Spring Could Config是一个提供了分布式配置管理功能的Spring Cloud子项目。在以往的单体应用中往往是代码与配置文件放在一个应用包中,但是随着系统的体量越来越大,我们会将系统分成多个服务,对于这么多服务的配置管理以及热生效等方面的支持将会越来越麻烦。Spring Cloud Config 完美解决了这些问题。

第4章 客户端负载均衡:Ribbon:Ribbon是一个基于HTTP和TCP客户端的负载均衡器。它可以在客户端配置ribbonServerList(服务端列表),然后轮询请求以实现负载均衡。它在联合Eureka使用时,ribbonServerList 会被
DiscoveryEnabledNIWSServerList重写,扩展成从Eureka注册中心获取服务端列表。同时它会用NIWSDiscoveryPing来取代IPing,它将职责委托给Eureka来确定服务端是否已经启动。

第5章 RESTful客户端:Feign:在实际开发过程中,尽管Eureka的注册发现和Ribbon的客户端负载均衡很强大,但是我们不可能每次都对URL进行远程调用,像拼参数这种事情会让每个开发人员痛苦不堪,而Feign将会解决这些问题。Feign是一个Web服务的客户端框架,它让 Web服务的客户端开发变得更容易。只需要使用Feign创建一个接口加上一个注解就行了。在使用Feign时,Spring Cloud还可以整合Ribbon和Eureka,为HTTP客户端提供负载均衡的能力。

第6章 熔断器:Hystrix:微服务架构中,一般存在着很多服务单元。这样就有可能某个单元因为网络原因或自身问题而出现故障或延迟,导致调用方的对外服务也出现延迟。如果此时调用方的请求不断增加,时间一长就会由于等待故障方响应而形成任务积压,最终导致调用方自身服务的瘫痪。为了解决这种问题,便出现了断路器(或称熔断器,Circuit Breaker)模式。

第7章 路由网关:Zuul:Spring Cloud体系中支持API Gateway落地的技术就是Zuul。Spring Cloud Zuul路由是微服务架构中不可或缺的一部分,提供动态路由、监控、弹性和安全等边缘服务。

第8章 网关新选择:Gateway:Spring Cloud Gateway是Spring官方基于Spring 5.0、Spring Boot 2.0和 Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix Zuul。其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如安全、监控/埋点和限流等。

第9章 调用链追踪:Spring Cloud Sleuth:主要介绍了Spring Cloud中注册中心的其他实现和快速调试、开发脚手架。

第10章 加密管理:Vault:通常项目中敏感配置信息一般需要进行加密处理,比如数据库密码等,但Spring Boot内置不提供加密支持,不能加密配置文件信息。HashiCorp Vault则可以解决这个问题,它提供集中管理密文和保护敏感数据的服务,而Spring Cloud Vault作为HashiCorp Vault的客户端,支持访问HashiCorp Vault内存储的数据,避免了在Spring Boot程序中存储敏感数据,为该场景提供了解决方案。它允许应用程序以透明的方式访问存储在Vault实例中的密文。比如API令牌、SSL证书和口令。它还可以负责处理用户的访问控制,具有撤销令牌、审计功能,跟踪用户等功能。

第11章 公共子项目:Spring Boot CLI是Spring Boot提供的一个命令行工具,它可以提供快速运行SpringBoot程序的功能,并支持插件功能,当我们为Spring Boot CLI安装上Spring Cloud插件时,它提供的命令行操作也可以用于Spring Cloud。我们可以支持Spring Cloud Config客户端对配置信息的加解密处理,甚至可以直接通过CLI在命令行上运行诸如Eureka、Zipkin、Config Server等服务。它为我们日常开发中调试搭建环境测试等场景提供了极大的便利。

第二篇 任务与消息篇

上一篇全面介绍了Spring Cloud生态中偏重于服务调用、服务治理、服务监控等方面的各个组件,接下来将进入一个新篇。这一篇将介绍Spring Cloud生态中有关消息总线、任务广播、批处理等方面的各个组件,同样非常实用。

第12章 消息驱动:Spring Cloud Stream:在企业级应用中处理非同步场景、消息通知、应用间解耦等场景经常会使用到消息中间件。我们可能已经使用过或者听过一些市面上常用的消息中间件,如ActiveMQ,RabbitMQ、MetaQ、kafka、 Redis 中的消息队列功能等。Spring Cloud Stream是一个构建消息驱动微服务的框架,基于Spring Integration并利用Spring Boot提供了自动配置,支持发布–订阅模型、消费者分组、数据分片等功能,提供极为方便的消息中间件使用体验。

第13章 消息总线:Spring Cloud Bus:Spring Cloud Bus通过轻量级消息代理连接各个分布的节点,以广播状态的变化(如配置变化)或者其他的消息指令。Spring Cloud Bus的一个核心思想是通过分布式的启动器对Spring Boot应用进行扩展,也可以用来建立多个应用之间的通信频道。目前唯一实现的方式是用AMQP消息代理作为通道队列,目前常用的有Kafka和RabbitMQ。

第14章 批处理:Spring Cloud Task:Spring Cloud Task是支持短生命周期的微服务Spring Cloud子项目,作用于定时任务、批处理一类的需求场景。

第三篇  微服务实战篇

前两篇我们已经把 Spring Cloud生态中的每一个组件都进行了梳理。本篇中将针对之前学习的各个组件进行综合实战,通过案例让大家更深刻地理解每个组件。我们还会介绍微服务体系下的持续性构建交付的理论,阐述在软件研发生产线上的流程工具。

第15章 利用Docker进行编排与整合:基于前面讲述的内容,我们将Spring Cloud 的各个组件整合成一个五脏俱全的小项目,通过Docker Compose进行编排、整合,达到实战练习的目的。

牛人点赞

我们迫切地希望Spring与各大技术公司能够形成一个良性的循环,使用者越多,技术社区越活跃,Spring Cloud的更新迭代速度越快,功能越完善、越稳定、越成熟,然后会带来更多的使用者。

由于篇幅限制,仅展示部分目录,想要获取这份资料的小伙伴【直接点击此处】即可获取哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

车载毫米波雷达中国市场有望在2025年实现30亿美元的市场规模

近日,专注于前沿科技领域的国际咨询机构ICV发布了全球车载毫米波雷达的市场研究报告,汽车毫米波(mmWave)雷达基于频率为77 GHz的电磁波,具有高精度和准确性,可用于目标检测。这种技术有着广泛的应用&#x…

解决方案丨票据集中在集团总部处理,如何解决实物票据管理难?

目前越来越多的企业都成立了财务共享中心,通过统一财务中心可以进行集中式、标准化、统一化管理,提升财务运营水平与效率、降低企业的整体运作成本、集团战略发展支撑。 如何确保财务共享中心稳健和高效运营,是很多企业建立共享中心后面的难…

【Leetcode每日一刷】动态规划:931. 下降路径最小和

博主简介:努力学习的22级计科生博主主页: 是瑶瑶子啦所属专栏: LeetCode每日一题–进击大厂 目录 一、动态规划套路二、分析1、dp数组含义2、确定递推公式(递推函数的实现)3、dp数组初始化(base case)4、遍历顺序 解题…

React面向组件编程

React面向组件编程 基本理解和使用组件三大核心属性1: state效果理解强烈注意 组件三大核心属性2: props效果理解作用编码操作 组件三大核心属性3: refs与事件处理效果理解编码2.4.4. 事件处理 收集表单数据效果理解 组件的生命周期(重要)效果理解生命周期流程图(旧…

《庖丁解牛Linux内核分析》课后实验:实验一:反汇编分析

实验内容 参照第 1.3 节,将如下 C 语言代码汇编成“.s”文件,并分析“.s”文件中的汇编代码 的执行过程,其中重点关注 EBP/ESP 寄存器、EAX 寄存器、EIP 寄存器和函数调用堆栈空 间在汇编代码的执行过程是如何变化的。 int g(int x) { return…

省钱!NewBing硬核新玩法;手把手教你训练AI模特;用AI替代同事的指南;B站最易上手AI绘画教程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『NewBing 的2种硬核新用法』阅读文档并回答问题 & AI绘图 社区同学分享了两种NewBing的新用法,不仅准确高效&#x…

2023年湖北省武汉安全员ABC报名时间考试通过率如何?启程别

2023年湖北省武汉安全员ABC报名时间考试通过率如何?启程别 都2023年了,建筑企业想要报考三类人员,不知道在哪里报名,具备什么样的条件才可以报考建筑安全员abc,什么时间报名考试等等一系列问题,启程别来给你们细细说明…

即时通讯源码自己开发好还是对接云服务好

随着科技的飞速发展,通信技术也日新月异。与此同时,即时通讯应用也越来越受欢迎。许多企业在构建应用程序时会遇到一个问题:使用即时通讯源码自己开发好还是对接云服务好?本文将探讨这两种方法的优缺点,并为您提供一些…

环境配置 | Win10 VSCode连接远程服务器里的docker容器

环境:win10, VS code, 远程服务器Ubuntu16.04(远程服务器上已经安装好了dockers), 1.VScode下载 网址:Download Visual Studio Code - Mac, Linux, Windows 下载后双击运行 2.VSCode上配置 STEP 1.点击vscode右边工具栏点击拓展…

《嵌入式系统的WEB开发》

硬件平台:RK1109/T31/RK3308 软件系统:Linux,Lighttpd/ Nginx, FCGI, HTML/JS 选择使用FCGI,除了使用C 开发调用系统资源方便外. FCGI 可以解决CGI 多入口的问题,统一的入口,对数据同步,都是比…

Python 基于 Django 的学生成绩管理系统,可视化界面(附源码,教程)

1简介 对于学生成绩管理系统,充分运用现代化的信息技术手段,对于学生成绩信息管理发展的趋势就是信息化,信息化时代下的信息管理,需要深化信息管理体制与手段的改革,充分运用信息化手段来全方位的进行学生成绩管理系统…

VTK交互功能-callback/observe模式-vtkCommand

前言:本博文为系列博文,尝试将vtk交互功能讲清楚,包括常用的接口分析、常用的交互逻辑以及常用的交互Widget。若各位小伙伴有需要请多多关注,也希望能给各位小伙伴有所帮助。vtkCommand作为callback/obseve交互模式的基类&#xf…

0201自动配置类的导入-自动装配原理-springboot2.7.x系列

1简介 Spring Boot是基于Spring框架的,它的原理也是基于Spring框架的。 Spring框架是一个非常强大的框架,它提供了一系列的模块来帮助开发人员构建企业级的应用程序。Spring框架的核心是控制反转(Inversion of Control,IoC&…

大数据技术之Spark Streaming概述

前言 数据处理延迟的长短 实时数据处理:毫秒级别离线数据处理:小时 or 天 数据处理的方式 流式(streaming)数据处理批量(batch)数据处理 spark Streaming也是基于sparkCore,所以底层的核心没有变…

FreeRTOS系统学习第一步:新建 FreeRTOS 工程—软件仿真

创建一个FreeRTOS系统工程 1.新建工程文件夹2.Keil新建工程2.1 New Project2.2 Select Device For Target2.3 Manage Run-Time Environment 3. 在 KEIL 工程里面新建文件组3.1在 KEIL 工程里面添加文件 4. 编写 main 函数5. 调试配置5.1 设置软件仿真5.2 修改时钟大小在时钟相关…

你是否线上有使用ThreadLocal,如果结合多线程,请慎用

随着业务的增加,数据量的增加,多线程的使用会越来越频繁,提升单机的处理能力。 前些日子我们线上出现了一个比较严重的故障,这个故障是多线程使用不当引起的,挺有代表性的,所以分享给大家,希望…

前端学习笔记:CSS的引入,元素选择器

这是本人学习的总结,主要学习资料如下 马士兵教育 目录 1、引入CSS1.1、引入CSS的方式1.2、优先级 2、元素选择器2.1、基本选择器2.1.1、选择器2.1.2、优先级 2.2、关系选择器2.2.1、优先级 2.3、属性选择器2.4、伪类选择器 1、引入CSS 1.1、引入CSS的方式 第一个…

互斥锁深度理解与使用

大家好,我是易安! 我们知道一个或者多个操作在CPU执行的过程中不被中断的特性,称为“原子性”。理解这个特性有助于你分析并发编程Bug出现的原因,例如利用它可以分析出long型变量在32位机器上读写可能出现的诡异Bug,明明已经把变量…

SpringCloud--gateway 网关

在Spring Cloud中,使用Gateway网关访问服务可以有多种好处,包括但不限于以下几点: 统一入口管理:Gateway作为统一的服务入口,可以对所有的请求进行统一管理和控制,实现微服务集中管理。 动态路由&#xff…

056:cesium 七种方法设置颜色

第056个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置颜色,这里用到了7种方法,查看API,还有很多种方法 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共115行)相关API参考:专栏目标示例效果 配置…