搜索
首页JavaJava基础Spring Cloud七大组件是什么
Spring Cloud七大组件是什么Apr 25, 2021 pm 05:43 PM
javaspring bootspring cloud

Spring Cloud七大组件:1、Eureka组件,描述了服务如何进行注册,注册到哪里;2、Ribbon组件;3、Feign组件,一个声明web服务客户端;4、Hystrix组件;5、Config组件;6、Zuul组件;7、Bus组件。

Spring Cloud七大组件是什么

本教程操作环境:windows7系统、java8版、DELL G3电脑。

Spring Cloud全家桶组件

在介绍Spring Cloud 全家桶之前,首先要介绍一下Netflix ,Netflix 是一个很伟大的公司,在Spring Cloud项目中占着重要的作用,Netflix 公司提供了包括Eureka、Hystrix、Zuul、Archaius等在内的很多组件,在微服务架构中至关重要,Spring在Netflix 的基础上,封装了一系列的组件,命名为:Spring Cloud Eureka、Spring Cloud Hystrix、Spring Cloud Zuul等,下边对各个组件进行分别得介绍:

(1)Spring Cloud Eureka

我们使用微服务,微服务的本质还是各种API接口的调用,那么我们怎么产生这些接口、产生了这些接口之后如何进行调用那?如何进行管理哪?

答案就是Spring Cloud Eureka,我们可以将自己定义的API 接口注册到Spring Cloud Eureka上,Eureka负责服务的注册于发现,如果学习过Zookeeper的话,就可以很好的理解,Eureka的角色和 Zookeeper的角色差不多,都是服务的注册和发现,构成Eureka体系的包括:服务注册中心、服务提供者、服务消费者。

这里写图片描述

上图中描述了(图片来源于网络):

1、两台Eureka服务注册中心构成的服务注册中心的主从复制集群;
2、然后服务提供者向注册中心进行注册、续约、下线服务等;
3、服务消费者Eureka注册中心拉去服务列表并维护在本地(这也是客户端发现模式的机制体现!);
4、然后服务消费者根据从Eureka服务注册中心获取的服务列表选取一个服务提供者进行消费服务。

(2)Spring Cloud Ribbon

在上Spring Cloud Eureka描述了服务如何进行注册,注册到哪里,服务消费者如何获取服务生产者的服务信息,但是Eureka只是维护了服务生产者、注册中心、服务消费者三者之间的关系,真正的服务消费者调用服务生产者提供的数据是通过Spring Cloud Ribbon来实现的。

在(1)中提到了服务消费者是将服务从注册中心获取服务生产者的服务列表并维护在本地的,这种客户端发现模式的方式是服务消费者选择合适的节点进行访问服务生产者提供的数据,这种选择合适节点的过程就是Spring Cloud Ribbon完成的。

Spring Cloud Ribbon客户端负载均衡器由此而来。

(3)Spring Cloud Feign

上述(1)、(2)中我们已经使用最简单的方式实现了服务的注册发现和服务的调用操作,如果具体的使用Ribbon调用服务的话,你就可以感受到使用Ribbon的方式还是有一些复杂,因此Spring Cloud Feign应运而生。

Spring Cloud Feign 是一个声明web服务客户端,这使得编写Web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。

简单的可以理解为:Spring Cloud Feign 的出现使得Eureka和Ribbon的使用更为简单。

(4)Spring Cloud Hystrix

我们在(1)、(2)、(3)中知道了使用Eureka进行服务的注册和发现,使用Ribbon实现服务的负载均衡调用,还知道了使用Feign可以简化我们的编码。但是,这些还不足以实现一个高可用的微服务架构。

例如:当有一个服务出现了故障,而服务的调用方不知道服务出现故障,若此时调用放的请求不断的增加,最后就会等待出现故障的依赖方 相应形成任务的积压,最终导致自身服务的瘫痪。

Spring Cloud Hystrix正是为了解决这种情况的,防止对某一故障服务持续进行访问。Hystrix的含义是:断路器,断路器本身是一种开关装置,用于我们家庭的电路保护,防止电流的过载,当线路中有电器发生短路的时候,断路器能够及时切换故障的电器,防止发生过载、发热甚至起火等严重后果。

(5)Spring Cloud Config

对于微服务还不是很多的时候,各种服务的配置管理起来还相对简单,但是当成百上千的微服务节点起来的时候,服务配置的管理变得会复杂起来。

分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件Spring Cloud Config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在Cpring Cloud Config 组件中,分两个角色,一是Config Server,二是Config Client。

Config Server用于配置属性的存储,存储的位置可以为Git仓库、SVN仓库、本地文件等,Config Client用于服务属性的读取。

这里写图片描述

(6)Spring Cloud Zuul

我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;通过Spring Cloud Config实现了应用多环境的外部化配置以及版本管理。为了使得服务集群更为健壮,使用Hystrix的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。

这里写图片描述

先来说说这样架构需要做的一些事儿以及存在的不足:

1、首先,破坏了服务无状态特点。为了保证对外服务的安全性,我们需要实现对服务访问的权限控制,而开放服务的权限控制机制将会贯穿并污染整个开放服务的业务逻辑,这会带来的最直接问题是,破坏了服务集群中REST API无状态的特点。从具体开发和测试的角度来说,在工作中除了要考虑实际的业务逻辑之外,还需要额外可续对接口访问的控制处理。

2、其次,无法直接复用既有接口。当我们需要对一个即有的集群内访问接口,实现外部服务访问时,我们不得不通过在原有接口上增加校验逻辑,或增加一个代理调用来实现权限控制,无法直接复用原有的接口。
面对类似上面的问题,我们要如何解决呢?下面进入本文的正题:服务网关!

为了解决上面这些问题,我们需要将权限控制这样的东西从我们的服务单元中抽离出去,而最适合这些逻辑的地方就是处于对外访问最前端的地方,我们需要一个更强大一些的均衡负载器,它就是本文将来介绍的:服务网关。

服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。

(7)Spring Cloud Bus

在(5)Spring Cloud Config中,我们知道的配置文件可以通过Config Server存储到Git等地方,通过Config Client进行读取,但是我们的配置文件不可能是一直不变的,当我们的配置文件放生变化的时候如何进行更新哪?

一种最简单的方式重新一下Config Client进行重新获取,但Spring Cloud绝对不会让你这样做的,Spring Cloud Bus正是提供一种操作使得我们在不关闭服务的情况下更新我们的配置。

Spring Cloud Bus官方意义:消息总线。

当然动态更新服务配置只是消息总线的一个用处,还有很多其他用处。

这里写图片描述

总结

Spring Cloud 的组件还不止这些,通过上边的口水话的介绍,应该可以大致有一定的了解,但是每一个组件的功能远不止上述介绍的那些,每一个组件还有很多其他的功能点,这里的介绍希望能够带大家入个门,不要对微服务这个这么大的概念有所畏惧。

更多编程相关知识,请访问:编程视频!!

以上是Spring Cloud七大组件是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Spring Cloud微服务架构部署与运维Spring Cloud微服务架构部署与运维Jun 23, 2023 am 08:19 AM

随着互联网的快速发展,企业级应用的复杂度日益增加。针对这种情况,微服务架构应运而生。它以模块化、独立部署、可扩展性高等特点,成为当今企业级应用开发的首选。作为一种优秀的微服务架构,SpringCloud在实际应用中展现出了极大的优势。本文将介绍SpringCloud微服务架构的部署与运维。一、部署SpringCloud微服务架构SpringCloud

Java语言中的Spring Cloud框架介绍Java语言中的Spring Cloud框架介绍Jun 09, 2023 pm 10:54 PM

Java语言中的SpringCloud框架介绍随着云计算和微服务的流行,SpringCloud框架成为了Java语言中构建云原生应用的首选框架之一。本文将介绍SpringCloud框架的概念和特点,以及如何使用SpringCloud构建微服务架构。SpringCloud简介SpringCloud框架是基于SpringBoot的微服务框架。它为

实现分布式锁的Spring Cloud微服务实践实现分布式锁的Spring Cloud微服务实践Jun 22, 2023 pm 11:28 PM

随着微服务架构的流行,越来越多的企业开发团队开始使用SpringCloud构建自己的微服务系统。在分布式环境下,实现分布式锁是一项重要的技术挑战。本文将介绍在SpringCloud框架下,如何实现分布式锁的微服务实践。首先,我们需要了解什么是分布式锁。分布式锁是一种用于保护共享资源的访问的技术,它可以保证在分布式环境下多个节点不会同时对同一资源进行修改或

基于Spring Cloud构建高性能的微服务架构基于Spring Cloud构建高性能的微服务架构Jun 22, 2023 pm 11:15 PM

随着互联网应用的不断发展,越来越多的企业和组织开始采用微服务架构来构建应用系统。相比于传统的单体应用架构,微服务架构可以提供更高的可扩展性、灵活性和稳定性,同时也可以更好地满足业务需求。基于SpringCloud框架,我们可以很方便地构建高性能的微服务架构。SpringCloud由Spring团队打造,是一个完整的微服务框架,提供了各种工具和组件,能够支

Spring Cloud微服务架构下的负载均衡算法优化Spring Cloud微服务架构下的负载均衡算法优化Jun 22, 2023 am 10:33 AM

随着微服务架构的流行,负载均衡算法的优化越来越受到关注。SpringCloud作为一个流行的微服务框架,在负载均衡方面也提供了多种算法。本文将介绍SpringCloud微服务架构下的负载均衡算法优化,探讨如何选择适合自己的负载均衡算法。一、什么是负载均衡在讨论负载均衡算法之前,先了解一下负载均衡的概念。负载均衡(LoadBalancing)是一种分摊网

Spring Cloud微服务架构与运维Spring Cloud微服务架构与运维Jun 22, 2023 am 10:36 AM

随着互联网技术的发展,微服务架构已经逐渐成为了互联网企业的主流技术选型。而SpringCloud作为一个开源的微服务架构解决方案,受到了越来越多企业的关注和采用。本文将围绕SpringCloud微服务架构与运维展开阐述,主要分为以下几个方面:SpringCloud微服务架构概述SpringCloud是一个开源的、轻量级的微服务框架,它提供了一系列的分

Spring Cloud微服务架构下的监控与告警实践Spring Cloud微服务架构下的监控与告警实践Jun 22, 2023 pm 03:04 PM

随着微服务架构的广泛应用,如何有效地监控和告警成为了开发人员和运维人员面临的问题之一。本文将重点介绍在SpringCloud微服务架构下实践监控和告警的具体方法。一、监控指标的选择在进行监控之前,首先需要确定需要监控的指标。常见的指标包括:CPU利用率、内存使用率、网络带宽、磁盘空间、HTTP请求的响应时间、服务调用的次数和延迟等。这些指标可通过各种监控工

改进Spring Cloud微服务的高并发处理性能改进Spring Cloud微服务的高并发处理性能Jun 22, 2023 pm 12:35 PM

随着互联网的迅猛发展,Web应用程序的性能和并发处理能力已经成为决定应用程序是否成功的关键因素之一。因此,保证系统的高可用和高并发处理能力越来越重要。SpringCloud是一种基于SpringBoot的微服务架构,它可以减少开发人员在构建高可用和高性能应用程序上的工作量。然而,在实际应用中,对于大规模和高并发的应用程序,SpringCloud的默认设

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版