一、什么是springcloud,有什么作用
Spring Cloud 是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
Spring Cloud是一个全家桶式的技术栈,包含了很多组件。 。先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。
Eureka
Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。库存服务、仓储服务、积分服务中都有一个Eureka Client组件,Eureka Client这个组件专门负责将这个服务的信息注册到Eureka Server中(就是告诉Eureka Server,自己在哪台机器上,监听着哪个端口)。而Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。
订单服务里也有一个Eureka Client组件,这个Eureka Client组件会找Eureka Server问一下:库存服务在哪台机器啊?监听着哪个端口啊?仓储服务呢?积分服务呢?然后就可以把这些相关信息从Eureka Server的注册表中拉取到自己本地缓存起来。
Spring Cloud项目实例 www.fhadmin.org
总结:
Eureka Client:负责将这个服务的信息注册到Eureka Server中
Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号
Feign
Feign的一个关键机制就是使用了动态代理。
首先,如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理
接着你要是调用那个接口,本质就是会调用 Feign创建的动态代理,这是核心中的核心
Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址
最后针对这个地址,发起请求、解析响应
Ribbon
Ribbon的作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上。Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法。
Ribbon是和Feign以及Eureka紧密协作,完成工作的,具体如下:
首先Ribbon会从 Eureka Client里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口号。
然后Ribbon就可以使用默认的Round Robin算法,从中选择一台机器
Feign就会针对这台机器,构造并发起请求。
Hystrix
Hystrix会搞很多个小小的线程池,比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。每个线程池里的线程就仅仅用于请求那个服务。
降级:每次调用积分服务,你就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,你可以根据这些记录手工加一下积分。这个过程,就是所谓的降级。
Zuul
Zuul,也就是微服务网关。这个组件是负责网络路由的。所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务。有一个网关之后,还有很多好处,比如可以做统一的降级、限流、认证授权、安全,等等。
总结:
Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
相关推荐
Spring Cloud 学习笔记 本笔记主要介绍了从单体架构到微服务架构的演变过程,以及 Spring Cloud 中的微服务架构搭建。下面是本笔记的详细知识点总结: 一、单体架构 单体架构是指整个系统只有一个工程,打包往往...
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
SpringCloud学习手册是一个针对微服务架构的资源包,主要涵盖了SpringCloud的相关知识,适用于初学者。SpringCloud作为Java领域中的主流微服务框架,为开发者提供了构建分布式系统所需的工具和服务发现、配置管理、...
狂神springcloud学习笔记加代码 笔记可以看:https://www.kuangstudy.com/bbs/1374942542566551554#header4 视频链接:https://www.bilibili.com/video/BV1jJ411S7xr
在"springcloud学习资料"中,你可以找到一系列关于SpringBoot和SpringCloud的开发案例。这些案例涵盖了如何将SpringBoot用于实际项目,并结合SpringCloud实现微服务的各个关键组件。以下是一些可能涵盖的知识点: 1...
这个"SpringCloud学习代码"压缩包包含了多个关键组件的示例,让我们逐一深入探讨这些组件及其用法。 首先,Zuul是SpringCloud的一个边缘服务和API网关。它作为系统的统一入口,负责路由转发、动态过滤、安全控制等...
Spring Cloud是一套微服务架构下的分布式系统解决方案,提供了在分布式系统环境下快速构建一些常见模式的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...
SpringCloud学习总图可以让学习者清晰得从哪里学习各个阶段的知识
本压缩包"springcloud-learning-master.zip"是一个关于SpringCloud学习的资源合集,包含了一系列的例子和教程,适合想要深入理解和掌握SpringCloud技术的开发者。 首先,我们要了解SpringCloud的基础概念。Spring...
《SpringCloud视频学习》 SpringCloud作为微服务架构的重要实现框架,深受广大开发者的喜爱。本资源包含了两部关于SpringCloud的视频教程,由尚硅谷出品,内容详实且易于理解,是学习SpringCloud的理想资料。 一、...
Spring Cloud实战微服务。国内第一个Spring Cloud视频教程。
综上所述,"尚硅谷周阳老师SpringCloud学习源码"涵盖了SpringCloud的多个关键组件,通过学习这些源码,开发者能够深入理解微服务架构中的服务治理、API网关、断路器、配置中心、消息驱动等核心概念,进一步提升...
本资源包“springcloud学习代码资源”是针对SpringCloud进行深入学习的一个实践集合,包含了相关的代码示例和可能的项目结构,帮助开发者更好地理解和掌握SpringCloud的核心功能。 在SpringCloud的学习过程中,首先...
SpringCloud是中国Java开发者广泛...总的来说,这个压缩包提供了一个全面的SpringCloud学习和实践环境,通过这些示例,你可以深入理解SpringCloud的各个组件,掌握微服务架构的关键技术,并能够应用到实际项目中去。
【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。
springcloud学习视频一套,周立老师讲的,按照官方文档一步一步讲解的,随着互联网的迅速发展,传统架构已经无法满足我们持续集成、持续交付的需求。在这种现状下,诞生了微服务。 微服务是当前架构领域的热门话题。...
这个“springcloud学习资料.rar”压缩包很可能是为那些希望深入理解和掌握SpringCloud技术的人准备的资源集合。下面,我们将详细探讨SpringCloud的关键知识点。 1. **Eureka服务注册与发现**:Eureka是SpringCloud...
这个压缩包"springcloud学习文档.zip"包含的是关于2018年和2019年的Spring Cloud 搭建及实战的相关教程,这对于理解并掌握Spring Cloud这一微服务框架至关重要。 首先,让我们深入了解一下Spring Cloud的基础概念:...
在这个"springcloud学习demo.rar"中,我们可以看到一系列的子目录和文件,它们代表了SpringCloud的关键组件及其实践。 1. **Eureka**:Eureka是SpringCloud中的服务注册与发现组件。它允许各个微服务在启动时向...