Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)

简介: Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)


Eureka

注册中心组件,主要是用来做服务注册和服务发现的
每个服务在创建时,指定注册地址(往哪个Eureka中进行注册),又做了服务集群操作,当某个服务器挂了之后,不会影响其它服务的正常使用

Ribbon

是客户端实现负载均衡的远程调用组件起到一个中间的作用
实现方式:
  第一种是:ribbon和RestTemplate相结合使用,请求路径传给RestTemlate,利用负载均衡轮训算法完成调用
  第二种是:ribbon和OpenFeign相结合使用(发起一个远程调用,同时完成负载均衡的任务)
实现原理:
  1.通过用 Eureka-Client来做服务发现
  2.通过RestTemplate来完成服务调用上面和eureka结合,下面和IRule,实现负载均衡eureka服务发现

Open Feign

Open Feign远程调用组件
Feign集成了ribbon(不懂的可以去看下ribbon实现原理,这里直接上图解)
实现方式:
  A服务Controller开启@EnableFeignClients,在A服务接口类中添加注解@FeignClient(value = "order-service")指定调用的服务名称,参数格式要求下方图中查看

Gateway

网关组件:根据微服务名称,创建动态路进行转发,实现动态路由功能
动态路由优点:
当服务注册时,不需要重启服务端,动态去做负载均衡、服务发现,只需要加上服务名称即可
Geteway 的核心逻辑:路由转发+执行过滤器链
Gateway是web网关,处理的是Http请求

Hystrix

保护服务组件:保护微服务不雪崩,提供了熔断功能,能够阻止分布式系统中联动故障
hystrix通常和Openfeign和ribbon一起使用
hystrix本质是:代理feign的请求,才能完成熔断效果
hystrix实现原理:
  指定熔断的类,注解:@FeignClient(value = "rent-car-service",fallback = CustomerRentFeignHystrix.class)

定义熔断类

调用熔断类

下面说下断路器实现流程,先来说下为什么要使用断路器?

在微服务分布式架构开发中,会有很多独立的服务,当A服务去调用B服务时,一次发现没有反应,当A服务疯狂调用时,
B服务还是没有响应,这是猜测可能是B服务挂了,断路器作用就是当A要访问B服务时,拦截器知道B服务当前的一个状态,
正常继续使用,如果挂了直接return,类同于Hystrix

Nacos-feign

动态服务发现,配置管理和服务管理的平台
注册中心和配置文件中心
有登录验证
可以通过命名空间的形式进行调用服务,避免Nacos中出现重名的服务名称
实现原理:
  1. nacos-client-a 通过feign结合ribbon发起远程调用info接口
  2. @EnableDiscoveryClient // 开启服务发现客户端()
  3. @FeignClient(value = "user-service")(要调用对象的服务名称)

向Nacos中注册服务时,需指定nacos地址和用户名和密码以及命名空间、组

Nacos-配置中心

默认读取nacos配置中心文件 yml配置

Nginx和GeteWay区别

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
Java 应用服务中间件 Nacos
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
625 0
|
10月前
|
负载均衡 Java Nacos
Spring Cloud五大组件
Spring Cloud五大组件
|
JSON Java 数据格式
三万字盘点Spring/Boot的那些常用扩展点(下)
Spring对于每个Java后端程序员来说肯定不陌生,日常开发和面试必备的。本文就来盘点Spring/SpringBoot常见的扩展点,同时也来看看常见的开源框架是如何基于这些扩展点跟Spring/SpringBoot整合的。 话不多说,直接进入正题。
|
监控 负载均衡 Java
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
本文图文详解 Spring Cloud 的五大核心组件,帮助深入理解和掌握微服务架构。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
27441 8
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
设计模式 监控 Java
解析Spring Cloud中的断路器模式原理
解析Spring Cloud中的断路器模式原理
|
负载均衡 Java API
Spring Cloud原理详解
Spring Cloud原理详解
311 0
springCloud之服务降级熔断Hystrix、OpenFeign
springCloud之服务降级熔断Hystrix、OpenFeign
1181 0
|
12月前
|
消息中间件 运维 Java
招行面试:RocketMQ、Kafka、RabbitMQ,如何选型?
45岁资深架构师尼恩针对一线互联网企业面试题,特别是招商银行的高阶Java后端面试题,进行了系统化梳理。本文重点讲解如何根据应用场景选择合适的消息中间件(如RabbitMQ、RocketMQ和Kafka),并对比三者的性能、功能、可靠性和运维复杂度,帮助求职者在面试中充分展示技术实力,实现“offer直提”。此外,尼恩还提供了《尼恩Java面试宝典PDF》等资源,助力求职者提升架构、设计、开发水平,应对高并发、分布式系统的挑战。更多内容及技术圣经系列PDF,请关注【技术自由圈】获取。