3、spring cloud 五大组件

这篇具有很好参考价值的文章主要介绍了3、spring cloud 五大组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、服务注册中心

        服务注册中心是一个不进行任何业务处理,单独部署出来提供给其它服务进行服务注册以及服务发现,对服务的健康状态进行检测以及管理的。常见的服务注册中心包括Eureka、Zookeeper、Consul、Nacos等。

CAP定理:CAP定理又称CAP原则,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性) 分区容忍性(P),就是高可用性,一个节点崩了,并不影响其它的节点

1.1 Eureka

        Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。Eureka集群是去中心化方式的集群,集群中保证了只要有一个服务存活,就可以提供服务,这种方式无法保证数据的一致性。(文章后续会给出分布式系统中的CAP原理的解释)

        它主要由两个部分组成:

        服务端:主要是提供服务注册中心,可集群部署。

        客户端:向服务注册中心注册自身服务,进行心跳交互,从服务端获取注册列表,从而消费注册列表中的存活服务。

3、spring cloud 五大组件

 Eureka通过启动多个服务端并进行互相注册来实现集群部署

1.2 Zookeeper

        与dubbo一样,spring cloud也可以使用zookeeper作为服务注册中心,与Eureka不同的是,zookeeper是一种一主多从的集群方式,leader节点接收到数据的时候,同步数据到follower节点,只有超过一半以上的follower节点同步完成它才会返回写成功,这样的机制使得zk保证了CAP理论的C一致性原则。与Eureka不同,zk的leader节点宕机,会启动选举方式从follower节点中选取一个作为leader,这期间zk无法对外提供服务,无法保证CAP中的A可用性原则。

3、spring cloud 五大组件

 1.3 Consul

        Consul是使用GO语言编写的注册中心,基于Raft算法,与Zk类似,Consul提供强一致性的注册中心服务,也是主从同步的方式提供注册服务。

1.4 Nacos

       Nacos 是阿里的开源项目,nacos主要功能是服务发现和微服务的配置集中管理。根据官网的解释如下。

3、spring cloud 五大组件        

        Nacos和Zookeeper都可以作为配置中心,做一些可以实时变化的配置数据存储,然后实时更新线上数据。   作为注册中心,nacos支持两种方式的注册中心,持久化和非持久化存储服务信息,可以支持CP或是AP原则,当节点数据发生变化时,与ZK类似会主动发布给所有的服务节点,Eureka则需要服务节点主动去拉去,如果不主动拉去是不会进行推送的,这里拉取了网上大神对于几个注册中心的总结。

3、spring cloud 五大组件

 (如图片侵权,联系删除) 

二、负载均衡

2.1 什么是负载均衡

        负载均衡(load balancing)简称LB,在微服务架构体系一般称为进程内LB,是一种计算机技术,应用于多个计算机集群组中的网络、CPU、内存、磁盘或其它资源的一种分配策略,以达到最优的资源分配使用方式,提高资源使用效率,最大吞吐量,最小响应时间。

2.2 为什么要用负载均衡

        Spring cloud作为一个微服务架构,同一个服务会有多个服务提供者,在消费者进行消费的时候,就需要根据当前集群中的资源(cpu、内存等)来进行分配调用方案,或者遵循某一个负载策略来进行调用以规避某一个服务提供方因为调用过多导致服务器压力过大的情况。

2.3 常见的负载均衡组件

        Spring cloud最常见的负载均衡组件,Ribbon、Feign、OpenFeign

Ribbon是Netflix实现的一种客户端均衡工具,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的服务提供者,Ribbon会自动的基于某种负载策略(如轮询,随机等)去访问这些服务提供方。我们很容易使用Ribbon实现自定义的负载均衡算法。

Feign是Netflix开发的一代负载均衡客户端,内置的Ribbon,是对Ribbon的一种封装解决方案,Feign本身不支持Spring MVC的注解,使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务。Feign在2019年之后就不再进行更新。

OpenFeign是Spring cloud自己研发的二代负载均衡客户端,与feign一样都内置了Ribbon,在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等,OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

三、熔断降级

        作为一个优秀的开发者,当用户在访问我们的网站的时候,因为网络波动、功能bug、瞬间的高并发压力等导致了网页访问请求异常,我们不应将后端的异常结果展示到用户的眼前,应当提供一个友好界面或友好提示来提示用户当前服务暂不可用。Spring cloud作为一个优秀的微服务架构,就提供了服务熔断以及服务降级来为我们进行保驾护航。

3.1 什么是熔断?

        服务熔断类似于电路的保险丝,为了防止电压过高引起火灾,断开电路,过后重启后可继续使用。当服务的调用出现大量的超时或异常,这时就会断开服务的调用,返回一个友好提示,缓解服务的压力,待到一段时间之后进行尝试放行,如果这时服务无法使用将继续断开,服务可用时可将链路释放正常使用。

3.2 什么是降级?

        服务降级是当某个时间段的服务器因为并发过大等原因导致服务器压力剧增,根据业务情况以及流量针对一些服务或页面进行有策略的降级,以此来释放服务器资源,留给核心服务使用,保障核心任务的执行。服务降级可分为接口拒绝或限流等方式。

3.3 常见的熔断降级组件

        对于Spring cloud来讲,最常见的组件分别是Hystrix、Sentinel、resilience4j,其中Hystrix属于Netflix开发的组件,Sentinel属于阿里的开源项目,resilience4j在国外比较受欢迎,国内更多的开发者更喜欢使用Hystrix及Sentinel,近年来阿里体系的Sentinel会更受国内开发者青睐。

这里推荐一个博主对于Hystrix及Sentinel的一些比对文章,个人觉得写的很详细(Sentinel 对比 Hystrix(选型与简介)_MayMatrix的博客-CSDN博客_sentinel和hystrix)

四、路由网关

4.1 网关介绍

        Spring cloud作为一个微服务架构,如果没有一个统一的网关入口,那么所有的服务都需要对外暴露接口,安全上就得不到保障,其次对于身份验证、安全、过滤等都需要全部服务来实现,工作量巨大不讲,后续迭代更新更是繁杂,所以我们需要一个统一网关作为所有api的入口,进行统一化的过滤、身份验证等。

网关是为微服务框架提供一种简单而有效的统一的 API 路由管理方式,统一访问接口。

        Spring cloud的网关发展史可以说是一部爱恨情仇的肥皂剧了,感兴趣的朋友可以自行前去了解一下,这里就大概介绍一下,最开始Netflix推出第一代网关zuul1,后面随着Spring cloud的出现,开始引入Netflix的开源组件,其中就包含了上面讲的Hystrix、Eureka以及zuul1,后面使用过程中发现饿了zuul1存在性能问题,Netflix宣布对其进行优化,结果后面Netflix因为各种各样的原因跳票了,导致了后面Spring与Netflix之间后续分手了,所以Spring cloud推出了自己的网关gateway,虽然后面Netflix也推出了zuul2,可是Spring cloud还是主推自己的网关(毕竟亲儿子)。

        讲了这么多,就大概介绍一下zuul1、zuul2及gateway之间的区别吧。zuul1是BIO方式,zuul2与gateway是NIO。zuul2及gateway二者底层都是reactor模式,性能上比zuul1时代提高很多,所以zuul1不考虑。至于选择哪一个,可从自身架构的角度进行,gateway社区更加成熟,很多功能已经开发完善,直接配置就可以使用,zuul2则需要更多的开发才能完整实现一些特性功能,会更加灵活,且gateway支持nacos而zuul2不支持,对于国内开发者来讲gateway是更优的选择。

五、配置中心

5.1 配置中心

        微服务架构将业务分成一个个的子服务,每一个子服务的运行都离不开配置的支撑,在开发、测试、生产等环境下各个服务的配置都可能不一样,比如数据库、注册中心等。当子服务增多到一定量的时候,对配置文件的修改就变得越来越复杂,于是就出现了统一配置中心,可以通过配置中心,运行期间可以动态调整。例如根据各个微服务的负载状况,动态调整数据源连接池大小或者熔断阀值,并且调整时不停止微服务(配置修改后可以自动更新)

  • Spring cloud config

        Spring cloud自带的配置中心,与spring无缝衔接,支持git,但是无可视化操作界面,且配置生效非实时,需要重启或手动刷新。

  • Nacos Config

        Nacos Config是阿里技术栈里的一个组件,前面我们已经讲过它可以作为服务注册中心。其实它也集成了服务配置的功能,我们可以直接使用它作为服务配置中心,它提供了可视化界面进行操作,且实现可动态更新。文章来源地址https://www.toymoban.com/news/detail-416042.html

到了这里,关于3、spring cloud 五大组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Cloud】深入理解 Eureka 注册中心的原理、服务的注册与发现

    在微服务架构中,服务的注册与发现是至关重要的一环。为了实现这一目标,Eureka 注册中心应运而生。在本篇文章中,我们将深入理解 Eureka 注册中心的原理,以及探讨服务的注册与发现机制。 在微服务的协作中,服务之间的远程调用是常见的需求。然而,使用传统的 Rest

    2024年02月08日
    浏览(62)
  • Spring Cloud Eureka Service Registry 服务注册中心实践

    作者:禅与计算机程序设计艺术 在分布式微服务架构下,服务发现是保证应用可用的关键组件之一。在Spring Cloud体系中,服务发现中心通过Netflix Eureka实现。 本文将介绍Spring Cloud Eureka服务注册中心的机制、配置及使用方法,并通过实例对Eureka的功能及其局限性进行详细阐述

    2024年02月11日
    浏览(89)
  • Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册

    码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 本文将介绍如何在Spring Cloud微服务架构中,实现在Windows本地开发环境下禁用服务自动注册到Nacos注册中心,而在Linux服务器环境下则自动启用注册功能。这样的配置有助于开发者在本

    2024年03月18日
    浏览(118)
  • day10-Spring Cloud Alibaba Nacos-服务注册与配置中心

    官网:https://github.com/alibaba/nacos,Nacos官方中文手册 Nacos:Spring Cloud Alibaba服务注册与配置中心(非常详细) (biancheng.net) Spring Cloud Alibaba系列-一文读懂Nacos原理 - 掘金 (juejin.cn) Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服

    2024年02月08日
    浏览(57)
  • Spring Cloud中微服务已经启动,但是没有注册到nacos中心

    今天写了一个Spring Cloud模块,然后启动测试效果,结果一直报503或者401的错误,排查后发现是服务启动,但是没有注册到nacos中心。 这是后端已经启动模块:  这是nacos中心: 可以看出,这里模块没有注册到nacos中。 找了一下午的博客,发现那些不是说的spring-boot-starter-web起

    2024年02月10日
    浏览(54)
  • 特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

    Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中,搭建Eureka Server的方式还是非常简单的。只需要通过一个独立的maven工程即可搭建Eureka Server。  我们引入spring cloud的依赖和eureka的依赖。 注意spring cloud和springboot的版本要对应,不然容易出现各种奇怪的错误。 不知道spr

    2024年04月08日
    浏览(76)
  • Eureka:Spring Cloud服务注册与发现组件

    Eureka 一词来源于古希腊词汇,是“发现了”的意思。在软件领域,Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。 Spring Cloud 将 Eureka 与 Netflix 中的其他开源服务组件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后的组件全称为 Spr

    2024年02月03日
    浏览(62)
  • 微服务 Spring Cloud 2,一文讲透微服务核心架构(注册中心、服务通信、服务监控、服务追踪、服务治理)

    大家好,我是哪吒。 疫情已经过去一年了,可是,经济貌似还没有复苏的迹象,感觉更差了, 今年是过去十年最差的一年,却可能是未来十年最好的一年? 裁员风波,一波接一波,根本没有停下来的迹象。 失业了怎么办?找工作呀~ 这么卷了吗?初级程序员就要会微服务了

    2024年02月05日
    浏览(67)
  • 【Spring Cloud】深入探索 Nacos 注册中心的原理,服务的注册与发现,服务分层模型,负载均衡策略,微服务的权重设置,环境隔离

    在微服务架构中,服务注册中心是整个体系中的关键组件之一。它负责服务的注册、发现和管理,为微服务之间的通信提供了基础设施。在这方面,Nacos(Namespace Aware Clustered Object Storage)作为一种服务发现和配置管理系统,提供了丰富的功能,旨在简化微服务架构中的服务注

    2024年02月06日
    浏览(214)
  • Spring Cloud五大组件

    Spring Cloud是分布式微服务架构的一站式解决方案,在Spring Boot基础上能够轻松搭建微服务系统的架构。 现有Spring Cloud有两代实现: 一代:Spring Cloud Netflix,主要由: Eureka 、 Ribbon 、 Feign 、 Hystrix 、 Zuul|Gateway 、 Config 等组件组成。 二代:Spring Cloud Alibaba,主要由: Nacos 、

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包