Springcloud的几大神兽,你会了吗?

Springcloud几大组件笔记总结

一、 Eureka

使用场景: 微服务架构的各个服务系统部分可能分布在多台机器上,Eureka的作用就是使各个服务直接能够相互调用。
原理:每个服务都集成了一个Eureka Client组件,这个组件将当前的服务信息和端口号发送给Eureka Server服务注册与发现中心。Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号。反过来,Eureka Client可以拉取注册中心的注册表,了解其他服务的端口服务。

二、 Feign

Feign的使用很简单,有以下几步:

1、添加依赖

2、启动类添加 @EnableFeignClients 注解支持

3、建立Client接口,并在接口中定义需调用的服务方法

4、使用Client接口。

用注解定义一个 FeignClient接口,然后调用那个接口就可以了。人家Feign Client会在底层根据你的注解,跟你指定的服务建立连接、构造请求、发起靕求、获取响应、解析响应,等等。 最后还需要在服务消费模块这里的主启动类开启我们的Feign,并且扫描我们另一个模块下的Feign服务。
具体代码步骤:

  1. 启动类添加 @EnableFeignClients 注解支持。

  2. 在创建的FeignClient接口中,我们@FeignClient后面的name是我们微服务模块注册的服务名字。(使我们需要调用的接口在服务注册中心注册的名字)。抽象方法的注解、方法签名要和提供服务的方法完全一致。即接口中对应的@PostMapping("/")和@GetMapping("/")为需要调用的接口中的映射地址。

  3. 然后创建相应的服务消费模块Controller层,将Feign的service注入实例,就可以调用了。
    下面是消费者调用feign接口实现服务请求的流程图:

    在这里插入图片描述

具体学习地址:https://www.cnblogs.com/CryFace/p/13667536.html.
详细代码解释:https://blog.csdn.net/antma/article/details/81317707.

三、 Ribbon(rest+ribbon)

在用到负载均衡之前,先要到eureka中获取相关的服务,所以我们这一块依然需要用到eureka,但eureka中已经内置集成了ribbon,所以在pom文件中,并不需要显示引入ribbon的依赖。
Ribbon配合RestTemplate 来消费者到生产服务的负载均衡。
相关步骤:
1)配置类中,在获取RestTemplate对象的时候加入Ribbon的配置信息。

@Bean(name = "ribbonRestTemplate")
@LoadBalanced(负载均衡)
RestTemplate ribbonRestTemplate() {
    return new RestTemplate();
}

2)创建要消费的消费方,并且注册到eurka注册中心。
restTemplate中的方法可以通过url消费注册中心的相关服务,访问了不同的端口的服务实例。(负载均衡)

负载均衡:服务消费者调用服务生产者的访问频率是平均的。
在消费者访问多个服务的接口时候,服务是交替循环被消费的。
默认负载均衡算法是轮询算法,一个服务有多台机器上运行时按顺序每次请求分发到各个服务器上。

Ribbon和Feign调用其他服务的前提是这些服务在Eureka服务注册中心注册过了,且必须要知道服务在注册中心注册的名字。
两者之间的区别:http://blog.sina.com.cn/s/blog_1645e034e0102ygav.html

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

ribbon和feigin以及eureka搭配使用流程图:

在这里插入图片描述

四、 Hystrix:

解决微服务架构中恐怖的服务雪崩问题
具体针对于消费者对服务请求失败的熔断、隔离、降级。
针对于每个服务安排了一个个线程池,每个服务的调用请求不会相互调用影响。
具体服务上添加fallback方法或者类

1)简单整合Hystrix
在消费者请求服务的方法上加@HystrixCommand(fallbackMethod = “getDefaultUser”)
然后写出回调方法

  @HystrixCommand(fallbackMethod = "")
    @RequestMapping("/sayHello")
    public String getUser() {
        return restTemplate.getForObject("http://user-api/sayHello", String.class);
    }

    private String getDefaultUser() {
        System.out.println("熔断,默认回调函数");
        return "{\"username\":\"admin\",\"age\":\"-1\"}";
    }

2)基于Feign使用Hystrix
2.1 引入依赖
2.2 在消费者的属性配置文件中添加:
feign:
hystrix:
enabled: true
2.3 在Feign接口中的注解中添加fallback类
@FeignClient(value = “user-api”, fallback = UserClientFallback.class)
2.4 添加fallback回调类
UserClientFallback回调类:

package com.cjs.example.fallback;

import com.cjs.example.service.UserClient;
import org.springframework.stereotype.Component;

@Component
public class UserClientFallback implements UserClient {
    @Override
    public String sayHello() {
        return "Oh! Error!!!";
    }
}

学习网站1: https://www.cnblogs.com/lfalex0831/p/9199459.html.
学习网站2:https://www.cnblogs.com/cjsblog/p/9687458.html.

五、 Gateway

对于浏览器到服务器的请求做统一的降级、限流、认证授权、安全,然后网关转发请求给对应的服务

总结:springcloud的总体流程:

1)每个服务之间会有一个Eureka Client组件,这些组件会注册到Eureka Server中心的注册表。注册表中包含了各个服务的端口和名字。反过来,各个服务也会在Eureka Server中发现拉取其他的服务。
2)服务之间调用的过程中可以采取两种方式:基于Ribbon+rest实现通信 基于Feign实现
基于Ribbon+rest会实现负载均衡,消费者会从多个服务中选择一种服务进行消费。
基于Feign的动态代理机制,创建相关的接口类FeignClient,调用此接口于指定的某个服务进行建立连接。
3)熔断机制Hystrix
针对于每个服务出现故障而出现整体服务功能雪崩的情况,使用Hystrix的服务熔断,降级和隔离。
针对于每个服务安排了一个个线程池,每个服务的调用请求不会相互调用影响。
基于Ribbon,在调用具体方法接口的上面添加@HystrixCommand(fallbackMethod = “***”),在添加具体的回调处理方法。
基于Feign,在FeignClient接口类的注解添加fallback回调类,实现服务的熔断降级处理
4)Gateway
对于前段的请求用网关统一进行降级、限流、认证授权、安全,然后把这些请求转发给对应的服务。

转载springcloud框架总结网站:https://blog.csdn.net/qq_42046105/article/details/83793787.
注:个人总结,欢迎改正。

原文地址:https://blog.csdn.net/qq_41986693/article/details/112304419

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Nacos 中的参数有很多,如:命名空间、分组名、服务名、保护阈值、服务路由类型、临时实例等,那这些参数都是什么意思?又该如何设置?接下来我们一起来盘它。 1.命名空间 在 Nacos 中通过命名空间(Namespace)+ 分组(Group)+服务名(Name)可以定位到一个唯一的服务实例。 命名
Nacos 支持两种 HTTP 服务请求,一个是 REST Template,另一个是 Feign Client。之前的文章咱们介绍过 Rest Template 的调用方式,主要是通过 Ribbon(负载均衡) + RestTemplate 实现 HTTP 服务调用的,请求的核心代码是这样的: @
Nacos 是 Spring Cloud Alibaba 中一个重要的组成部分,它提供了两个重要的功能:服务注册与发现和统一的配置中心功能。 服务注册与发现功能解决了微服务集群中,调用者和服务提供者连接管理和请求转发的功能,让程序的开发者无需过多的关注服务提供者的稳定性和健康程度以及调用地址,因为这
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:服务注册中心(服务注册和发现)功能,和统一配置中心功能。 Nac
在 Nacos 的路由策略中有 3 个比较重要的内容:权重、保护阈值和就近访问。因为这 3 个内容都是彼此独立的,所以今天我们就单独拎出“保护阈值”来详细聊聊。 保护阈值 保护阈值(ProtectThreshold):为了防止因过多实例故障,导致所有流量全部流入剩余健康实例,继而造成流量压力将剩余健
前两天遇到了一个问题,Nacos 中的永久服务删除不了,折腾了一番,最后还是顺利解决了。以下是原因分析和解决方案,建议先收藏,以备不时之需。 临时实例和持久化实例是 Nacos 1.0.0 中新增了一个特性。临时实例和持久化实例最大的区别是健康检查的方式:临时实例使用客户端主动上报的健康检查模式,而
Spring Cloud Alibaba 技术体系中的 Nacos,提供了两个重要的功能:注册中心(服务注册与发现)功能和配置中心功能。 其中注册中心解决了微服务调用中,服务提供者和服务调用者的解耦,让程序开发者可以无需过多的关注服务提供者和调用者的运行细节,只需要通过 Nacos 的注册中心就可以
负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使用不同负载均衡策略的场景确实是存在的,所以客
本篇文章为大家展示了如何解决Spring Cloud 服务冲突问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、背景...
本篇内容主要讲解“spring cloud服务的注册与发现怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spri...
本篇内容介绍了“Dubbo怎么实现Spring Cloud服务治理 ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处...
本篇内容主要讲解“SpringCloud相关面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringCloud相...
如何分析Spring Cloud Ribbon、Spring Cloud Feign以及断路器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希
这篇文章主要讲解了“springcloud微服务的组成部分有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“s...
这篇文章主要讲解了“SpringCloud的OpenFeign项目怎么创建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习...
本篇内容主要讲解“spring cloud oauth3整合JWT后获取用户信息不全怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带...
怎样解析微服务架构SpringCloud,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。...
这篇文章主要介绍spring cloud中API网关的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、服务网关简介1、外观模式客户端...
本篇内容介绍了“Spring Cloud微服务的相关问题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处...
本文小编为大家详细介绍“spring cloud config整合gitlab如何搭建分布式的配置中心”,内容详细,步骤清晰,细节处理妥当,希望这篇“spring cloud config整合gi...