微服务知识

news2024/9/23 19:19:30

Spring Cloud Netfix:Eureka,Ribbon,Feign,Hystrix,Zuul | Gateway,Config

Spring Colud Alibaba:Nacos,Sentinel,Seata

Nacos通过Ribbon实现负载均衡,Ribbon中定义了负载均衡算法,基于这些算法从服务实例中获取一个实例为消费方的提供服务

Nacos1.x架构流程 

1:服务启动时,通过调用nacos regist api发起服务注册通知nacos可以正常提供服务

2:服务消费者在启动时拉取要用到的服务列表

3:消费者每10s拉取一次数据(为了保证udp广播推送消息后的可靠性)

4:Nacos服务检测到异常(服务上下线),会发送UDP协议给客户端进行更新

      UDP相对于TCP来说并不是可靠的协议,优点:快,耗时短,无需与目标服务建立长连接

5:客户端每5s定时发送心跳给服务端,维持健康状态检查

6:Nacos定时任务检测:每5s检查一次心跳信息来判断服务心跳状态是否正常(当前时间-上一次心跳时间),如超过15s则将节点设置为非健康状态进行广播,如30s未有心跳消息则将节点移除

7:集群数据同步任务使用协议:Distro(AP),Raft(CP)

Distro协议

1:naocs每个节点负责部分的写请求

2:每个节点把负责的新增数据同步给其他节点

3:每个节点定时发送自己负责数据的校验值到其他节点来保持数据一致性

4:每个节点独立处理读请求。及时从本地发出响应

5:新加入的Distro节点全量数据拉取(轮询所有Distro节点)

 Naocs配置中心长轮询机制

1.x

客户端轮询向服务端发出一个长连接请求,这个长连接30s超时,服务端收到客户端请求会先判断当前是否有配置更新,有则立即返回如果没有服务端会将这个请求hold29.5s加入队列,最后0.5s再次检测配置文件无论有无更新都进行正常返回。等待29.5s期间有配置更新提前结束并返回

2.x

服务端配置发生变更后,通过长连接通知客户端服务发生变化,客户端再拉取,并且额外增加定时任务每5s拉取一次

Nacos加载配置优先级

#作用:顺序
#${application.name}-${profile}.${file- extension}   nacos-config-prod.yaml
#${application.name}.${file-extension}   nacos-config.yaml
#${application.name}   nacos-config
#extensionConfigs  扩展配置文件
#sharedConfigs  多个微服务公共配置 redis

Nacos宕机服务或重启后读取配置信息

1:从内存读取,客户端获取配置中心的配置信息后,会在本地保存一份

2:先读取本地文件,如没有再远程拉取,拉取成功后写入本地快照,拉取失败则读取本地快照文件

Sentinel限流算法

1:计数器固定窗口算法

      通过维护一个单位时间内的计数值,每当一个请求通过将计数值加1,当计数值超过预先设定的阈值时,就拒绝单位时间内的其他请求。如单位时间已经结束,则将计数值清零,开始下一轮的计数

     缺点:临界值超过请求数问题无法解决

2:计数器滑动窗口算法

      将单位时间分成多格(格数越多,流量过度越平滑),每经过一个格的时间,就将窗口向前移动一格,并将经过的格子丢弃进行一个窗口的计数

     缺点:格数越多,统计越精确,但实现很难预判具体单位时间拆分的格数

3:漏桶算法

      以一个常量限制出口流量速率,因此漏桶算法可以平滑突发的流量。流量容器可以看做一个FIFO队列,当入口流量速率大于出口流量速率时,超出的流量会被丢弃

     缺点:限制了流出速率,所以不支持突发流出流量

4:令牌桶算法

      令牌桶算法漏桶中存放的是令牌不是流量

       以恒定速率往令牌桶里加入令牌,令牌桶被装满时,多余的令牌会被丢弃。当请求到来时先尝试从令牌桶中获取令牌(从令牌桶移除一个令牌),获取成功则请求放行,获取失败则拒绝请求

       令牌桶算法限制的是平均流量,因此其允许突发流量(只要令牌桶中有令牌,就不会被限流)

      

Sentinel服务熔断

熔断关闭状态:服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制

熔断开启状态:后续对服务接口的调用不再经过网络,直接执行本地的fallback方法

半熔断状态:尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。如成功率达到预期,说明服务已恢复,进入熔断关闭状态。如成功率很低,则重新进入熔断开启状态

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

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

相关文章

【java笔记】java多线程

目录 一、概念 1.1 什么是进程? 1.2 什么是线程? 1.3 什么事多线程? 1.4 进程和线程的关系 二、线程对象的生命周期 三、实现线程有两种方式 3.1 继承 java.lang.Thread,重写 run方法 3.2 实现 java.lang.Runnable 接口…

材料写作素材:关于“大”排比句40例

1.一轮思想政治“大督查”,一轮政策落实“大检查”,一次非公企业“大走访”,一次问题线索“大起底”,一批典型案例“大曝光”。 2.在重大风险挑战面前豁得出去、顶得上去,在重大困难考验面前迎难而上、敢于胜利&#…

【计网】WebSocket协议

目录 一、背景 二、WebSocket握手过程 三、SpringBoot中使用WebSocket协议 1、服务器 2、客户端 一、背景 一般的web开发以请求响应为主即客户端发送一个请求,服务器返回一个响应,这就使得类似聊天等需求基于HTTP协议进行实现时比较消费资源&#xf…

大数据之Hadoop分布式文件系统HDFS

目录: 一、介绍二、HDFS 设计原理三、原理图形介绍四、HDFS 常用 shell 命令五、HDFS相关JavaAPI 一、介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署…

厨电新十年,不可逆的行业分化与老板电器的数字进化

“人生就像滚雪球,最重要之事是发现湿雪和长长的山坡。”股神巴菲特的这句名言,让坡是否长、雪是否厚成为人们评价一个行业、一家公司的标准之一。 家电行业,厨电曾是最后一块“坡长雪厚”之地,投资者也对相关企业给出了相当的热…

FIR半带滤波器

FIR半带滤波器 半带滤波器原理: CIC滤波器是一种适合于工作在高采样率条件下的滤波器。 半带滤波器是一种非常适合于2倍抽取的FIR滤波器。 半带滤波器可以使2倍抽取的每秒乘法次数比一般线性相位的FIR滤波器减少近1/2。 半带滤波器是一种实现数字下变频的高效数…

暗藏的比特币白皮书已删除 苹果其实与Web3“格格不入”?

据悉,Apple已从其最新的Mac OS Ventura beta中删除了比特币白皮书,虽然该公司从未对白皮书的存在提供任何官方解释,但许多人猜测这是对加密货币日益增长的重要性的认可。 4月上旬,科技专家Andy Baio偶然发现,自己的Mac…

浅述 国产仪器 1652AM任意波形发生器

1652AM任意波形发生器是一款多通道、多功能的任意波形发生器。它在兼顾了输出信号高质量的同时,实现了高通道密度。它可与其它通用或专用模块化测试仪器构成综合测试系统或平台,支持众多解决方案,包括量子计算机调控信号生成、大规模MIMO信号…

活动目录(Active Directory)安全审计

延迟响应变化的影响可能会使原本应该微不足道的颠簸滚雪球变成无法弥补的损害。这在 Windows Active Directory 环境中更为重要,因为这种延迟造成的损害可能会使组织损失数百万美元!在这种情况下,需要一个警惕的警报系统,该系统可…

WPF学习

一、了解WPF的框架结构 (第一小节随便看下就可以,简单练习就行) 1、新建WPF项目 xmlns:XML的命名空间 Margin外边距:左上右下 HorizontalAlignment:水平位置 VerticalAlignment:垂直位置 2…

性能测试开始前的需求调研

之前的博客聊聊性能测试开始前的准备工作,聊了一些关于性能测试开始前要做的准备工作。这篇博客,来谈谈性能测试开始前的需求调研阶段,我们要做什么,关注那些Point。。。 一、基本信息 信息类型说明项目名称项目归属的业务线&am…

低代码应用开发平台,让数据管理更简单!

在数据管理越来越规范化的今天,低代码应用开发平台也获得了进步和发展的机会和空间。想要将企业内部的数据资源做好系统管理,从而为各个时期的经营决策提供强有力的证据和基础,低代码应用开发平台就是其中备受喜爱的工具。本文主要从它的特点…

重磅!阿里云云原生合作伙伴计划全新升级:加码核心权益,与伙伴共赢新未来

在今天的 2023 阿里云合作伙伴大会上,阿里云智能云原生应用平台运营&生态业务负责人王荣刚宣布: “阿里云云原生合作伙伴计划”全新升级。他表示: 云原生致力于帮助企业客户最大限度的减轻运维工作,更好的实现敏捷创新&#x…

MQTT 协议

MQTT 简介 MQTT是一种基于客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点得它对很多场景来说都是很有的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网…

RAC集群节点2异常时节点1的database实例无法提供服务问题的分析

在客户的数据库RAC集群环境中,节点2发生了异常,最终通过重启解决。在节点2发生异常的10分钟左右时间内,由于RAC集群节点2异常,此时节点1的database实例无法提供服务问题,程序操作报超时; 对此现象&#xf…

【Linux】-关于Linux的指令(中)

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录 前言一、man指令二、cp指令三、mv指令四、cat指令五、more和less指令六、hea…

【力扣-141】 环形链表 + 【力扣-142】 环形链表 II

🖊作者 : Djx_hmbb 📘专栏 : 数据结构 😆今日分享 : 霍桑效应(霍索恩效应) : 是指那些意识到自己正在被别人观察的个人具有改变自己行为的倾向。 霍桑效应告诉我们:从旁人的角度,善意的谎言和夸奖真的可以造就一个人&a…

线程的生命周期以及sleep()方法和wait()方法

三种休眠状态:Blocked,Waiting,Timed_Waiting 注意两个Blocked态是不一样的,上面的Blocked只要睡眠时间到了马上进入运行态,下面处于Blocked的线程还需要抢到锁才能进入运行态 sleep()和wait()方法: sleep…

【翻译一下官方文档】创建uniCloud服务空间并关联新建的uniapp项目

我将用图文的形式,把市面上优质的课程加以自己的理解,详细的把:创建一个uniCloud的应用,其中的每一步记录出来,方便大家写项目中,做到哪一步不会了,可以轻松翻看文章进行查阅。(此文…

论文笔记:An Interactive-Voting Based Map Matching Algorithm

2010 MDM 1 ST-matching的问题 论文笔记:Map-Matching for low-sampling-rate GPS trajectories(ST-matching)_UQI-LIUWJ的博客-CSDN博客 当轨迹很长,且车辆通过多线平行的道路时,ST-Matching的效果较差&#xff0c…