SpringCloud Netflix和SpringCloud Alibaba核心组件

1.SpringCloud Netflix组件

1.1 Netflix Eureka-服务注册发现

        Eureka 是一种用于服务发现 的组件,它是一个基于 REST 的服务,用于定位运行在 AWS 弹性计算云(EC2)中的中间层服务,以便它们可以相互通讯。

注册: 每个服务都向Eureka登记自己提供服务的元数据,包括服务的ip地址、端口号、版本号、通信协议等。

发现:eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后实现服务的请求访问。

1.2 Netflix Ribbon-客户端负载均衡

负载均衡分为服务器端负载均衡和客户端负载均衡

服务器端负载均衡:Nginx、F5等等,请求到达服务器之后由这些负载均衡器根据⼀定的算法将请求路由到⽬标服务器处理。

客户端负载均衡:Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡器,服务间发起请求的时候,基于Ribbon做负载均衡,从⼀个服务的多台机器中选择⼀台 (被调 用方的服务地址有多个),Ribbon也是通过发起http请求,来进行的调用,只不过是通过调用服务名的地址来实现的。Ribbon不用去具体请求服务实例的ip地址或域名了,但是每调用一个接口都还要手动去发起Http请求。

负载均衡策略参考:SpringCoud Ribbon配置和实现原理-CSDN博客

1.2.1 Feign远程调用组件

Feign是Netflix开发的⼀个轻量级RESTful的HTTP服务客户端,以Java接⼝注解的⽅式调⽤Http请求,类似于dubbo,服务消费者拿到服务提供者的接⼝,然后像调用本地接⼝⽅法⼀样去调用,实际发出的是远程的请求。

本质:封装了Http调用流程,更符合⾯向接口化的编程习惯,类似于Dubbo的服务调用,基于代理实现。

Feign = RestTemplate+Ribbon+Hystrix

 1.3 Netflix Hystrix-熔断器

 Hystrix 是一个用于处理分布式系统的延迟和容错的库,用于隔离访问远程服务,防止出现级联失败,解决了服务雪崩问题,从而提高系统的弹性。

Hystrix解决雪崩问题的手段:

服务熔断:当扇出链路的某个微服务不可⽤或者响应时间太⻓时,熔断该节点微服务的调⽤,进⾏服务的降级,快速返回错误的响应信息。当检测到该节点微服务调⽤响应正常后,恢复调⽤链路。

熔断的几种处理方式:

@HystrixCommand(commandProperties = {
            // 隔离策略,这个配置项默认是THREAD(线程),另外一个选项是SEMAPHORE(信号量),在信号量策略下无法使用超时时间设置。
            @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY, value = "THREAD"),
            // 单实例vivo接口最大并发请求数150,多处的直接拒绝
            @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS, value = "1"),
            // 线程超时时间,10秒
            @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS, value = "100"),
            //错误百分比条件,达到熔断器最小请求数后错误率达到百分之多少后打开熔断器
            @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "10"),
            //断容器最小请求数,达到这个值过后才开始计算是否打开熔断器
            @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "3"),
            // 默认5秒; 熔断器打开后多少秒后 熔断状态变成半熔断状态(对该微服务进行一次请求尝试,不成功则状态改成熔断,成功则关闭熔断器
            @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "5000")
    })

服务降级:当接口不可用、超时、错误率高于阈值时自动调用fallbackMethod指定的方法处理请求,称为服务降级,通过在@HystrixCommand注解上配置fallbackMethod参数指定降级后调用的方法,fallbackMethod方法可以直接返回错误,或者提供带缓存的高性能的实现等,如果fallbackMethod也不可用,会发生熔断报错返回。

服务限流:流量控制就是限制业务访问的 qps(每秒处理请求数量),避免服务因流量突增而故障.比如有一个微服务能承受的最大 qps 是 2,也就是每秒钟最多处理两个请求,但是现在有一百个请求涌过来了,那他不得被达成筛子了,但是 sentinel 会根据这个 qps 的限制,去处理请求然后释放(这就像是有大量的水要涌入的时候,会先经过一个漏斗,通过这个漏斗,将水的流量限制住),这个时候,就可以有效的避免出现故障(超出的请求会被拦截,默认会报错,但也可以配置成 排队等待、预热)。
线程隔离:Hystrix为每个服务调配一个小的线程池,如果线程池已满,调用这个服务将被立即拒绝

1.4 Netflix Zuul-服务网关

Zuul 是一种提供动态路由、监控、弹性、安全等功能的边缘服务。从2.2.10.RELEASE之后不再升级,SpringCloud改用Gateway作为网关。

1.4.1 GateWay核心

路由(route):最基础的部分,由⼀个ID、一个目标URL、⼀系列的断⾔(匹配条件判断)和 Filter过滤器(精细化控制)组成。如果断言为true,则匹配该路由。

断⾔(predicates):匹配Http请求中的所有内容(包括请求头、请求参数等)

过滤器(filter)请求之前或者之后执⾏业务逻辑。

Zuul、Gateway、Nginx的区别_zuul、gateway和nginx有什么区别-CSDN博客

1.5 Spring Cloud Config-配置中心

Spring Cloud Config 是一个使得分布式系统中的外部配置管理变得简单的系统,它是静态配置,配合springcloud bus实现动态配置

Spring Cloud Config 配置中心_spring-cloud-config-server-CSDN博客

2 SpringCloud Alibaba组件

2.1 .Nacos-服务注册发现和配置中心

一个更易于构建云原生应用的动态服务注册和发现、配置中心和服务管理平台。nacos-discovery 服务注册发现,nacos-config配置中心

2.2 Dubbo RPC--服务间通信

一种高性能的Java RPC框架,用于服务间通信。是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

2.3 Sentinel-熔断器

面向微服务架构的高可用流量控制组件,流量控制,服务熔断,服务限流。

2.4 RocketMQ

一种开源的分布式消息系统,消息队列

2.5 Seata

一种分布式事务解决方案。

3.Cloud Netfilx和Cloud alibaba对比

参考:

https://zhuanlan.zhihu.com/p/364330271?utm_id=0

SpringCloudAlibaba常用组件_springcloudalibaba组件-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/725126.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AMBA-CHI协议详解(三)

《AMBA 5 CHI Architecture Specification》 AMBA-CHI协议详解(一) AMBA-CHI协议详解(二) AMBA-CHI协议详解(三) AMBA-CHI协议详解(四) 文章目录 2.3.2 Write transactions2.3.2.1 …

【计算机网络体系结构】计算机网络体系结构实验-DNS模拟器实验

一、DNS模拟器实验 拓扑图 1. 服务器ip 2. 服务器填写记录 3. 客户端ip以及连接到DNS服务器 4. ping测试

《Fundamentals of Power Electronics》——绕组导体中的涡流

绕组导体中的涡流也会导致功率损耗。这可能导致铜耗大大超过上述公式预测的值。特殊的导体涡流机制被称为集肤效应和紧邻效应。这些机制在多层绕组的大电流导体中最为明显,特别是在高频变换器中。 下图说明了一个简单变压器绕组中的邻近效应。

Sqlite3数据库基本使用

一、基本概念 数据:能够输入计算机并能被计算机程序识别和处理的信息集合 数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS:位于用户与操作系统之间的一层数据管理软件,用于操纵和管理数据库 二、安装 在线…

Java 17的新特性

Java 17引入了多项新特性,以下是一些重要的更新: 增强的伪随机数生成器(JEP 356) Java 17为伪随机数生成器(PRNG)提供了新的接口类型和实现,包括可跳转的PRNG和另一类可拆分的PRNG算法&#xf…

06-操作元素

在前面的文章中重点介绍了一些元素的定位方法,定位到元素后,就需要操作元素了。本篇通过简单案例来介绍app应用中的一些常用操作。 一、案例介绍 下面列表中有四个字典,每个字典中的num1代表第一个操作数,num2代表第二个操作数&a…

LabVIEW电池管理系统测试平台

随着混合动力汽车技术的快速发展,对电池管理系统(BMS)的测试需求显著增加。利用LabVIEW软件开发了一款电池管理系统测试平台,通过模拟电池行为验证BMS的控制策略,从而降低成本、缩短开发周期,并提高整车的能…

js文件导出功能

效果图&#xff1a; 代码示例&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>html 表格导出道</title><script src"js/jquery-3.6.3.js"></script><st…

Qt打包成单独一个.exe文件运行

程序发布 1、首先找到你所运行的Qt编译器 2、然后去项目位置找到对应的release目录下的exe文件 3、将这个exe文件复制到一个单独的文件夹下&#xff0c;这里我放在E盘的demo下面 4、右键选择在终端打开PowerShell进入步骤1新建的demo目录内 5、windeployqt 项目名.exe windepl…

音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

PLC模拟量和数字量到底有什么区别?

PLC模拟量和数字量的区别 在工业自动化领域&#xff0c;可编程逻辑控制器&#xff08;PLC&#xff09;是控制各种机械设备和生产过程的核心组件。PLC通过处理模拟量和数字量来实现对工业过程的精确控制。了解模拟量和数字量的区别对于设计高效、可靠的自动化系统至关重要。 1. …

[面试题]消息队列

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列 什么是…

异构集成封装类型2D、2.1D、2.3D、2.5D和3D封装技术

异构集成封装类型&#xff1a;2D、2.1D、2.3D、2.5D和3D封装详解 简介随着摩尔定律的放缓&#xff0c;半导体行业越来越多地采用芯片设计和异构集成封装来继续推动性能的提高。这种方法是将大型硅芯片分割成多个较小的芯片&#xff0c;分别进行设计、制造和优化&#xff0c;然后…

如何通过自己编写Jmeter函数

在Jmeter的函数助手里&#xff0c;有很多内置的函数&#xff0c;比如Random、UUID、time等等。使用这些函数可以快速帮我们生成某些数据&#xff0c;进行一些逻辑处理。用起来非常的方便。 但是在实际接口测试过程中&#xff0c;有很多的需求&#xff0c;Jmeter内置的函数可能…

决策树概念

图例 概念 决策树基本上就是对经验的总结 决策树的构成&#xff0c;分为两个阶段。构造和剪枝 构造 概念 构造就是生成一颗完整的决策树。构造的过程就是选择什么属性作为节点的过程 构造过程&#xff0c;会存在3种节点 根节点&#xff1a;就是树的最顶端&#xff0c;最…

四十九、openlayers官网示例Immediate Rendering (Geographic)——在地图上绘制星空动画效果

官网demo地址&#xff1a; Immediate Rendering (Geographic) 首先先创建1000个随机点&#xff0c;创建点对象。 const n 1000;const geometries new Array(n);for (let i 0; i < n; i) {const lon 360 * Math.random() - 180;const lat 180 * Math.random() - 90;ge…

英伟达市值飙升,超越苹果微软并超过英国股市总市值

原标题&#xff1a;英伟达超越苹果微软市值&#xff0c;成为全球市值最高的企业 易采游戏网6月19日消息&#xff1a;近日&#xff0c;美国科技巨头英伟达市值的迅速增长引起了市场广泛关注。据最新数据显示&#xff0c;截至本周二收盘&#xff0c;英伟达的市场资本化已达到3.34…

PhantomReference 和 WeakReference 究竟有何不同

本文基于 OpenJDK17 进行讨论&#xff0c;垃圾回收器为 ZGC。 提示&#xff1a; 为了方便大家索引&#xff0c;特将在上篇文章 《以 ZGC 为例&#xff0c;谈一谈 JVM 是如何实现 Reference 语义的》 中讨论的众多主题独立出来。 PhantomReference 和 WeakReference 如果仅仅从概…

在二维空间中用椭圆表示不确定性

在二维空间中用椭圆表示不确定性 flyfish import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Ellipse# 生成示例数据 np.random.seed(0) data np.random.multivariate_normal([0, 0], [[4, 2], [2, 3]], size500)# 计算均值和协方差矩阵 …

Java15-API

目录 Math类 概述 常见方法 练习 System类 概述 常见方法 Runtime 概述 常见方法 Object类 概述 常见方法 一.演示toString方法 二.演示equals方法 三、对象克隆 分类&#xff1a; 浅克隆 深克隆&#xff1a; Objests类 概述 常见方法 BigInteger类 概…