动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

系统学习Spring Cloud五大核心组件

08-11 17:29 331浏览
举报 T字号
  • 大字
  • 中字
  • 小字

毫无疑问,Spring Cloud是目前微服务架构领域的翘楚Spring Cloud作为中小型互联网公司福音,大大降低了开发的成本,因此,Spring Cloud越来越收广大开发人员的青睐。为了加深小伙伴们对spring cloud的了解,本文我们一起来系统学习Spring Cloud五大核心组件

Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。当然,这一切实现的前提就是Spring Cloud五大核心组件。

  • Spring Cloud Eureka

Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。

Eureka是基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。因此,我们称此服务为Eureka服务器。Eureka还带有一个基于Java的客户端组件Eureka Client,它使与服务的交互变得更加容易。客户端还具有一个内置的负载平衡器,可以执行基本的循环负载平衡。在Netflix,更复杂的负载均衡器将Eureka包装起来,以基于流量,资源使用,错误条件等多种因素提供加权负载均衡,以提供出色的弹性。简而言之,Eureka 就是一个服务发现框架。

二、Spring Cloud Config

Spring Cloud Config 为分布式系统中的外部化配置提供服务器和客户端支持。使用 Config 服务器,可以在中心位置管理所有环境中应用程序的外部属性,能将配置信息中央化保存。

简单来说,Spring Cloud Config 就是能将各个应用/系统/模块的配置文件存放到统一的地方然后进行管理(Git 或者 SVN)。

  • Spring Cloud Zuul

ZUUL 是从设备和 web 站点到 Netflix 流应用后端的所有请求的前门。作为边界服务应用,ZUUL 是为了实现动态路由、监视、弹性和安全性而构建的。它还具有根据情况将请求路由到多个 Amazon Auto Scaling Groups(亚马逊自动缩放组,亚马逊的一种云计算方式) 的能力。

一句话形容就是如果前端、移动端要调用后端系统,统一从 Zuul 网关进入,由 Zuul 网关转发请求给对应的服务。

  • Spring Cloud Hystrix

在微服务架构里,一个系统会有很多的服务。但如果系统处于高并发的场景下,大量请求涌过来的时候,系统就会出现多线程死锁的现象,最终导致系统崩溃。由于多服务之间相互调用,要是不做任何保护的话,某一个服务挂了,就会引起连锁反应,导致别的服务也挂。于是乎,Hystrix应运而生。

Hystrix 是隔离、熔断以及降级的一个框架,通过使用它能提高整个系统的弹性。说白了,Hystrix 会搞很多个小小的线程池,比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。每个线程池里的线程就仅仅用于请求那个服务。

其实这里所讲的熔断就是指的Hystrix 中的断路器模式,你可以使用简单的@HystrixCommand 注解来标注某个方法,这样Hystrix就会使用断路器来“包装”这个方法,每当调用时间超过指定时间时(默认为1000ms),断路器将会中断对这个方法的调用。

而降级是为了更好的用户体验,当一个方法调用异常时,通过执行另一种代码逻辑来给用户友好的回复。这也就对应着 Hystrix 的 后备处理模式。你可以通过设置fallbackMethod来给一个方法设置备用的代码逻辑。

五、Spring Cloud Ribbon

Ribbon是Netflix公司的一个开源的负载均衡项目,是一个客户端/进程内负载均衡器,运行在消费者端。其工作原理就是消费端获取到了所有的服务列表之后,在其内部使用负载均衡算法,进行对多个系统的调用。

举一个形象的例子,假设库存服务部署在了5台机器上,如下所示:192.168.169:9000

192.168.170:9000

192.168.171:9000

192.168.172:9000

192.168.173:9000

这时候的状况是Feign怎么知道该请求哪台机器呢?这时Spring Cloud Ribbon就派上用场了。它的作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法。简单来说,就是如果订单服务对库存服务发起10次请求,那就先让你请求第1台机器、然后是第2台机器、第3台机器、第4台机器、第5台机器,接着再来—个循环,第1台机器、第2台机器......以此类推。     

此外,Ribbon是和Feign以及Eureka紧密协作,完成工作的,具体如下:首先Ribbon会从 Eureka Client里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口号。然后Ribbon就可以使用默认的Round Robin算法,从中选择一台机器Feign就会针对这台机器,构造并发起请求。

随着近几年微服务架构和Docker容器概念的火爆,也会让Spring Cloud在未来越来越“云”化的软件开发风格中立有一席之地,然而Spring Cloud五大核心组件的,更使得Spring Cloud如虎添翼尤其是在五花八门的分布式解决方案中提供了标准化的、全站式的技术方案,意义可能会堪比当年Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。

0人推荐
共同学习,写下你的评论
0条评论
爱读书的姑娘
程序员爱读书的姑娘

12篇文章贡献56281字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消