• SpringCloud的五大组件简介


    一、注册中心Eureka

    每一个服务(订单服务、库存服务、积分服务…)中都会有一个Eureka Client组件,此组件就是负责将服务的信息注册到Eureka Server中(实质上是将服务的地址和端口暴露到Eureka Server注册中心上);

    Eureka Client:负责将服务的信息注册到Eureka Server中。
    Eureka Server:注册中心,其中有一个注册表,记录的有各个服务所在的机器和端口号。

    二、服务网关Zuul

    Zuul:就是微服务网关,主要是负责网络路由的。

    浏览器所有请求都需要经过网关,网关就会根据请求中的特征将请求转发后端的各个服务中。网关还可以做统一的降级,限流,认证授权…

    三、服务调用Feign

    Feign:服务调用。服务与服务之间的代码调用方式基于含有注解FeignClient自定义的接口。简化了构建服务之间网络连接等环节。FeignClient会根据接口配置到注册中心(本地缓存)找到对应的请求服务接口。

    Feign实际上使用了动态代理的方式,实现了服务调用。原理如下。

    a,如果我们在操作中对某个接口定义了@FeignClient注解,那么Feign就会针对这个接口创建一个动态代理。
    b,当我们调用此接口时,本质上就是调用Feign创建的动态代理
    c,Feign的动态代理就会根据接口上的@RequestMapping…等注解,动态的构造出要请求的服务地址。
    d,最后会针对这个地址,发起请求,解析响应。

    四、熔断器Hystrix

    熔断器,它是一个隔离,熔断以及降级的框架。

    订单服务调用积分服务,由于积分服务异常导致订单服务的请求都在调用积分服务时卡住几秒钟,高并发情况下,订单服务所有的线程都卡在请求积分服务侧,将导致订单服务异常。这就是服务雪崩。熔断器的存在就是需要在积分服务异常情况下,订单服务仍正常运行不会出现服务异常情况。

    隔离:服务与服务之间请求使用线程池,防止下游服务异常导致上游服务所有线程都卡住在请求该下游服务的卡顿环节。

    熔断:当订单服务请求积分服务时,若积分服务出现异常则及时熔断积分服务,订单服务再次请求积分服务时将直接走hystrix熔断器返回报错信息。

    降级:在订单服务请求走熔断器过程中,将该过程中请求记录下面,涉及到积分变更的数据存入数据库,后续人工处理好数据。

    五、负载均衡Ribbon

    Ribbon 的负载均衡在默认情况下使用的 Round Robin轮询算法。 指的就是当订单服务对积分服务发起了6次请求,那就会先请求第一台机器,接着是第二台…,不断的循环

    参考文献:https://blog.csdn.net/weixin_56702673/article/details/121186371

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    手把手带你写嵌入式物联网的第一个项目
    编译执行JAVA含中文字符串文件,终端输出乱码问题处理
    Springcloud2021+Nacos2.2+Dubbo3+Seata1.6实现分布式事务
    实施运维02
    C# OpenCvSharp 图片模糊检测(拉普拉斯算子)
    C++对象内存布局
    idea2020.1 安装 kubectl win10
    ChatGPT Prompting开发实战(五)
    基于遗传算法的自主式水下潜器路径规划问题附Matlab代码
    经验分享:判断字符串的显示宽度
  • 原文地址:https://blog.csdn.net/m0_67392931/article/details/126116415