微服务--Sentinel(实现:服务高可用)

这篇具有很好参考价值的文章主要介绍了微服务--Sentinel(实现:服务高可用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内存溢出:OOM

服务器挂掉的原因:
1.激增流量打垮:

              1.流量突然飙升,导致CPU上升,出现挂机

               2.负载不均:比如一个实例长期未重启,导致磁盘写满降低响应时间等。

               3.线程池满,单点故障??

               4.激增流量打垮冷系统(数据库连接未创建,缓存未预热:比如说:党费缴纳:交党费那天给客户提醒,然后大量请求进来,缓存数据未预热,导致大量请求数据库,数据库访问时间变慢,导致同一节点数据库访问变慢,导致支付系统响应时间变慢

               5.消息传递速度过快,导致消息处理积压。(MQ)

2.被其他服务拖垮

              1.满SQL查询卡爆连接池

              2.第三方服务不响应,卡满线程池

              3.业务调用持续出现异常,产生大量副作用

3.异常处理
服务雪崩效应:因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程,叫做服务雪崩效应
容错机制:
1.超时机制(常用容错机制):

场景:服务提供者不可用导致消费者请求线程强制等待,造成系统资源耗尽

作用:一旦超时,就释放资源,一定程度抑制资源耗尽的问题

2.服务限流:

  服务达到QPS最大值,则进行限流,可直接拒绝:当前使用人数较多,请稍后再试。(nginx\mq、sentinel)

3.隔离:
4.服务熔断:

远程服务不稳定或网络抖动时暂时关闭,叫:服务熔断。

当依赖的服务有大量的超时时,会让新的请求再去访问根本没有意义,只会无畏的消耗现有资源。

   1.出现慢SQL,慢SQL导致应用越来越慢,最后整个应用卡挂了

  2.依赖第三方服务,第三方服务突然不响应,造成应用线程被挂在第三方应用上无法返回,最后自己线程耗尽,无法处理新的请求

   3.程序内部某个方法持续异常,这个时候调用这个方法毫无意义,而且影响主业务流程

5.服务降级(是服务熔断的兜底计划:有熔断就要服务降级)

    强依赖:如订单等,直接提示客户失败不作后续处理(如订单)

    弱依赖:可先记录一条数据,后续通过定时任务或者调度实现补偿机制(如积分)

降级策略:支持:基于响应时间和失败比率进行降级;

流量整形:支持慢启动,匀速器模式(压测时刚开始启动比较慢???是否与此相关?)

持久化:支持持久化:注册中心,放数据库(hystrix:放git,svn等文件内存中)

实现流控规则:
QPS:每秒的访问数:设置1;则一秒钟只能处理一次访问

线程数:设置1的话,一个线程在处理中,则下一个线程会流控,等前面处理完了再进行处理

@SentinelResource  注解:改善接口中资源定义和被流控降级后的处理方式

降级规则:(1s内执行n次,出现m次异常,就出发异常。

1.异常数:触发熔断策略:异常数,异常比例、慢调用比例

2.出发熔断最小请求书:

3、统计时长:默认1s

熔断持续时长:单位:秒,

一旦出发熔断,再次请求对应接口就会出发降级方法(降级方法:比如提示客户稍后再试)

10秒后--处于半开状态,如果第一次触发请求就异常,则会再次熔断。不会根据熔断设计规则熔断

流控模式:

1.直接

2.关联:关联资源

使用场景:下单:插入,影响查询(通过生成订单出发查询订单的限流)

3.链路:入口资源;流控效果:快速失败(直接报错);排队等待;warm up(慢慢处理)

链路默认为收敛方式:需要将配置修改为:false

场景:

针对激增流量处理:warm up(慢慢处理),党费的限流设置就可以设置成链路流控

针对脉冲流量处理:排队等待,

熔断降级策略:

1.慢调用比例

比例阈值0.1、最小请求数:10,最大RT,熔断时长。1秒钟10次请求,,如果一次出现慢调用时,触发降级规则:

2.异常比例

比例阈值:0.1 熔断时长 10s,最小请求数5;10次请求里面1次失败,则触发熔断降级

3.异常数

异常数:1,熔断时长:10s,最小请求数10;10次请求中一次异常,则触发熔断。

热点参数流控:热点流控规则

何为热点:即经常访问的数据;很多时候,我们希望统计某个热点数据中访问频次最高的数据,并对其访问进行限制。

常用场景:

         热点商品访问/操作控制

         用户/IP  防刷   (如秒杀)如防止暴力破解

实现原理:热点淘汰策略(LRU)+TOKEN Rucket流控

设置:限流模式:QPS模式,参数索引 0(第几个参数),单机阈值:10(所有参数值设置的公共阈值),统计窗口时长:1秒,是否集群;一秒钟之内的阈值为10

单机阈值:1.假设 参数大部分是热点参数,那单机阈值主要针对热点参数进行流控,后续额外针对普通流量进行流控;

          2.假设 参数大部分是普通参数,那单机阈值主要针对普通参数进行流控,后续额外针对热点流量进行流控;

编辑后出现高级选项:参数额外(与上面额外一个意思)项:参数类型,参数值;

系统保护规则(系统兜底方案)

阈值类型:load自适应、CPU使用率、入口QPS(入口平均访问量)、线程数、RT、LOAD

规则持久化sentinel+nacals(注册中心)

1.原始模式:重启后消失,不建议在生产使用

2.拉模式:pull模式

3.推模式:push模式:(生产常用)

一般做法:配置中心控制台/Sentinel控制台-->配置中心(NACOS注册中心)-->Sentinel数据源-->Sentinel

GATWAY整合sentinel

配置数据:网关流控规则:

API类型:ROUT ID/API 分组;API名称;针对请求属性:勾选后增加{参数属性:Client ip,Remote Host,Head,url 参数,Cookies;名称:;匹配属性;匹配模式:精确、子串、正则;匹配串:};阈值类型:QPS/线程数;QPS阈值间隔;流控方式:快速失败,匀速排队;Burst size;文章来源地址https://www.toymoban.com/news/detail-690352.html

到了这里,关于微服务--Sentinel(实现:服务高可用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • redis高可用之Sentinel模式

    Sentinel(哨岗、哨兵)是Redis的**高可用性(high availability) 解决方案 :由一个或多个Sentinel实例(instance)**组成的Sentinel系统 (system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升

    2024年01月24日
    浏览(37)
  • 【Redis】高可用之二:哨兵(sentinel)

     本文是Redis系列第5篇,前4篇欢迎移步  【Redis】不卡壳的 Redis 学习之路:从十大数据类型开始入手_AQin1012的博客-CSDN博客 关于Redis的数据类型,各个文章总有些小不同,我们这里讨论的是Redis 7.0,为确保准确,我们直接看官网。 https://blog.csdn.net/aqin1012/article/details/130365083 【

    2024年02月12日
    浏览(67)
  • 精华推荐 |【Redis技术探索】「底层架构原理」帮你彻底搞定Sentinel的实现原理运作机制

    最美好的生活方式是和一群志同道合的人,一起奔跑在理想的路上,回头有一路的故事,低头有坚定的脚步,抬头有清晰的远方! 👮‍ Sentinel出现的前提背景 在前面Redis技术系列的章节中,我们介绍了相关Redis持久化机制和Redis主从架构的探究。两者的相辅相成实现了Redis的

    2023年04月09日
    浏览(33)
  • 微服务学习3——利用sentinel实现服务器的容错

    1.Sentinel服务器容错 (本文参考黑马程序员项目) 个人仓库地址:https://gitee.com/jkangle/springboot-exercise.git 在服务器中,由于网络原因可能会出现线程阻塞的情况,当线程阻塞的时候如果有大量的请求涌入,就会造成当前的服务瘫痪,由于服务与服务之间的依赖关系,故障会出

    2024年02月13日
    浏览(44)
  • Redis高可用:哨兵机制(Redis Sentinel)详解

    目录 1.什么是哨兵机制(Redis Sentinel) 2.哨兵机制基本流程 3.哨兵获取主从服务器信息 4.多个哨兵进行通信 5.主观下线和客观下线 6.哨兵集群的选举 7.新主库的选出 8.故障的转移 9.基于pub/sub机制的客户端事件通知 Redis Sentinel,即Redis哨兵,在Redis 2.8版本开始引入。哨兵的核心

    2024年02月12日
    浏览(42)
  • 【SpringCloud Alibaba】(六)使用 Sentinel 实现服务限流与容错

    今天,我们就使用 Sentinel 实现接口的限流,并使用 Feign 整合 Sentinel 实现服务容错的功能,让我们体验下微服务使用了服务容错功能的效果。 因为内容仅仅围绕着 SpringCloud Alibaba技术栈展开,所以,这里我们使用的服务容错组件是阿里开源的 Sentinel。 当然,能够实现服务容错

    2024年02月14日
    浏览(48)
  • 【SpringCloud】11、Spring Cloud Gateway使用Sentinel实现服务限流

    1、关于 Sentinel Sentinel 是阿里巴巴开源的一个流量防卫防护组件,可以为微服务架构提供强大的流量防卫能力,包括流量控制、熔断降级等功能。Spring Cloud Gateway 与 Sentinel 结合,可以实现强大的限流功能。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近

    2024年02月01日
    浏览(57)
  • 复制架构,Redis Sentinel分析

    存储高可用,一般采用复制架构,复制架构,需要关注故障架构和状态决策2个要点 复制格式 格式 优点 缺点 举例 命令 数据量小 可能存在数据不一致 Mysql 的statement同步方式,按commit顺序同步,可能存在数据不一致 Redis 的 AOF,每个操作室幂等的。 MongoDB的oplog ,oplog中每个操

    2024年02月06日
    浏览(84)
  • 聊一聊服务治理三板斧:限流、熔断、降级和go-sentinel的实现

    我们知道,对于一个项目之初,我们不可能上来就按几千的并发去配置,为什么?两个方面,第一个是成本高。第二个是维护难度大。即便是天猫淘宝这种,也是采用的动态扩容的方式来应对双十一。那么一个项目如何应对突然的高并发,我们有哪些常用的措施和处理呢?我

    2024年01月19日
    浏览(46)
  • 一份详细 redis sentinel 哨兵架构搭建步骤<写于2023-04-06>

    redis 哨兵架构,其实是在 主从架构 基础上延伸的,sentinel 哨兵模式的 redis 实例,不提供读写操作的。实例相互之间,会感知到。 code: port 26379 daemonize yes # 改为后台启动 pidfile “/var/run/redis‐sentinel‐26379.pid” logfile “26379.log” dir “/usr/local/redis‐5.0.3/data” #sentinel monitor

    2023年04月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包