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博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day14-226.翻转二叉树+101. 对称二叉树+104.二叉树的最大深度

一、226.翻转二叉树 题目链接:https://leetcode.cn/problems/invert-binary-tree/ 文章讲解:https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 视频讲解&#xff1…

C++ —— unordered_set、unordered_map的介绍及使用

目录 unordered系列关联式容器 unordered_set的介绍 unordered_set的使用 unordered_set的定义方式 unordered_set接口的使用 unordered_multiset unordered_map的介绍 unordered_map的使用 unordered_map的定义方式 unordered_map接口的使用 unordered_multimap …

智慧校园发展趋势:2024年及未来教育科技展望

展望2024年及未来的教育科技领域,智慧校园的发展正引领着一场教育模式的深刻变革,其核心在于更深层次地融合技术与教育实践。随着人工智能技术的不断成熟,个性化学习将不再停留于表面,而是深入到每个学生的个性化需求之中。通过精…

密钥管理简介

首先我们要知道什么是密钥管理? 密钥管理是一种涉及生成、存储、使用和更新密钥的过程。 密钥的种类 我们知道,对称密码主要包括分组密码和序列密码。但有时也可以将杂凑函数和消息认证码划分为这一类,将它们的密钥称为对称密钥;…

白酒:酒文化的地域特色与差异

中国的白酒文化,作为一种深深植根于人们生活中的文化现象,其发展历程深受地域特色的影响,从而形成了丰富多样的地域特色与差异。云仓酒庄的豪迈白酒,作为中国白酒的品牌,其背后所蕴含的地域特色与差异更是值得我们去探…

在 Ubuntu 18.04.4 LTS上安装 netmap

文章目录 步骤运行配置文件编译安装使用netmap 步骤 sudo su sudo apt-get update sudo apt install build-essential sudo apt-get install -y git sudo apt-get install -y linux-headers-$(uname -r)rootVM-20-6-ubuntu:/home/ubuntu/netmap/LINUX# git clone https://gith…

外观模式(大话设计模式)C/C++版本

外观模式 C #include <iostream> using namespace std;class stock1 { public:void Sell(){cout << "股票1卖出" << endl;}void Buy(){cout << "股票1买入" << endl;} };class stock2 { public:void Sell(){cout << …

el-cascader 支持多层级,多选(可自定义限制数量),保留最后一级

多功能的 el-cascader 序言&#xff1a;最近遇到一个需求关于级联的&#xff0c;有点东西&#xff0c;这里是要获取某个产品类型下的产品&#xff0c;会存在产品类型和产品在同一级的情况&#xff0c;但是产品类型不能勾选&#xff1b; 情况1&#xff08;二级菜单是产品&…

【mysql】排错和调优

通用的一些排错方法。 1、查看进程信息 mysql> show full processlist;mysql> show processlist; 2、information_schema information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名&#xff0c;数据库的表&#xff0c;表栏的数据类型与访问权限等。…

DDP算法之反向传播(Backward Pass)

DDP算法反向传播 在DDP(Differential Dynamic Programming)算法中,反向传播(Backward Pass)是关键步骤之一。这个步骤的主要目的是通过动态规划递归地计算每个时间步上的值函数和控制策略,以便在前向传播(Forward Pass)中使用。 反向传播的目标 反向传播的主要目标是…

AD层次原理图绘制

一、在原理图中添加端口 二、添加层次图 三、更新层次图 四、也可以先画层次图&#xff0c;再绘制原理图&#xff0c;这里就不做演示了

vue3+ts 使用vue3-ace-editor实现Json编辑器

1、效果图 输入代码&#xff0c;点击格式化就出现以上效果&#xff0c;再点击压缩&#xff0c;是以下效果2、安装 npm i vue3-ace-editor 3、使用 新建aceConfig.js文件 // ace配置&#xff0c;使用动态加载来避免第一次加载开销 import ace from ace-builds// 导入不同的主…

快速定制新人入职,可以自动回答知识库问题的机器人 | Chatopera

定制智能对话机器人&#xff0c;比如我是 HR&#xff0c;想要做一个聊天机器人&#xff0c;帮助新人入职&#xff0c;自动回答知识库的问题。 注册 Chatopera 云服务 首先&#xff0c;您需要一个 Chatopera 云服务账户&#xff0c;然后根据下面四个步骤实现。 服务注册地址&…

UnityAPI学习之碰撞检测与触发检测

碰撞检测 发生碰撞检测的前提&#xff1a; 1. 碰撞的物体需要有Rigidbody组件和boxcllidder组件 2. 被碰撞的物体需要有boxcollider组件 示例1&#xff1a;被碰撞的物体拥有Rigidbody组件 两个物体会因为都具有刚体的组件而发生力的作用&#xff0c;如下图所示&#xff0c…

创建一个electron桌面备忘录

Sound Of Silence 1.创建electron项目命令&#xff1a; npm create quick-start/electron my-new-project 2选择&#xff1a;√ Select a framework: vue √ Add TypeScript? ... No √ Add Electron updater plugin? ... Yes √ Enable Electron download mirror proxy? .…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 身高差值排序(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

22种常用设计模式示例代码

文章目录 创建型模式结构型模式行为模式 仓库地址https://github.com/Xiamu-ssr/DesignPatternsPractice 参考教程 refactoringguru设计模式-目录 创建型模式 软件包复杂度流行度工厂方法factorymethod❄️⭐️⭐️⭐️抽象工厂abstractfactory❄️❄️⭐️⭐️⭐️生成器bui…

如何配置node.js环境

文章目录 step1. 下载node.js安装包step2. 创建node_global, node_cache文件夹step3.配置node环境变量step3. cmd窗口检查安装的node和npm版本号step4. 设置缓存路径\全局安装路径\下载镜像step5. 测试配置的nodejs环境 step1. 下载node.js安装包 下载地址&#xff1a;node.js…

application/x-www-form-urlencoded和json的区别

application/x-www-form-urlencoded 和 application/json 是两种不同的数据格式&#xff0c;常用于HTTP请求中传递数据。 它们各自的特点和使用场景如下&#xff1a; 1. application/x-www-form-urlencoded •特点&#xff1a;这是一种传统的表单提交时采用的编码类型&#x…