基于Sentinel的微服务保护

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

前言

Sentinel是Alibaba开源的一款微服务流控组件,用于解决分布式应用场景下服务的稳定性问题。Sentinel具有丰富的应用场景,它基于流量提供一系列的服务保护措施,例如多线程秒杀情况下的系统承载,并发访问下的流量控制,实时熔断等。

Sentinel的特征

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
  • 完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

Sentinel解决雪崩问题

什么是雪崩

在分布式应用架构中,服务间的关系错综复杂,一个服务往往依赖多个其他服务,如果其中一个服务发生了故障,那么依赖于当前服务的服务也会被阻塞,以此类推下去,就算其他服务没有直接的依赖于故障服务,也会受到影响,最终导致雪崩,因此雪崩问题是指微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况

怎样解决雪崩问题

1.超时处理

为请求设定超时时间,当请求超过一定时间没有被响应时,直接返回错误信息。这种方式依然会占用一部分的时间。

2.舱壁模式

为每个业务逻辑设定一定线程数,这样一来,在服务阻塞的时候,就只会占用有限的资源,而不会将消耗全部资源。该模式也叫线程隔离。

3.断路器

由断路器统计业务执行的异常比例,如果超出阈值会熔断该业务,拦截访问该业务的一切请求

4.限流

限流是指限制业务访问的QPS,避免服务因为突增的流量而故障

QPS:每秒能够处理的请求数

总结

上述解决雪崩问题的措施可以分为两类:

1.预防

        限流就是一种预防措施,它在检测高并发访问时,采取措施,从而使当前服务不受影响

2.补救

        超时处理,线程隔离,熔断都是补救措施,这个时候服务已经受到了影响,后续操作只是将影响控制在一定范围内。

Sentinel安装使用

1.下载

sentinel官方提供了UI控制台,方便我们对系统做限流设置。可以在GitHub下载。

2.运行

将jar包放到任意非中文目录,执行命令:

java -jar sentinel-dashboard-1.8.1.jar

3.访问

访问http://localhost:8080页面,就可以看到sentinel的控制台了:

需要输入账号和密码,默认都是:sentinel

基于Sentinel的微服务保护,sentinel,微服务,架构

基于Sentinel的微服务保护,sentinel,微服务,架构

由于Sentinel采取懒加载,而我们还没有整合微服务,因此这个时候控制台上还什么都没有

Sentinel整合微服务

1.在pom文件中加入Sentinel依赖

基于Sentinel的微服务保护,sentinel,微服务,架构

2.修改application配置文件

基于Sentinel的微服务保护,sentinel,微服务,架构

这里如果是properties文件l应该是 spring.cloud.sentinel.transport.dashboard = localhost:8080,我上面也没写spring,是因为还有nacos在它上面

3.访问该服务中的任意端点

用postman发送请求,出发Sentinel监控

基于Sentinel的微服务保护,sentinel,微服务,架构

基于Sentinel的微服务保护,sentinel,微服务,架构

 流量控制

雪崩问题虽然有四种方案,但是限流是避免服务因突发的流量而发生故障,是对微服务雪崩问题的预防。所以这里主要说的就是流量控制啦。

簇点链路

刚刚我们在访问任意资源后,Sentinel控制台中就显示了一个调用信息,其中过程是 请求进入微服务后,首先访问DispatcherServlet,然后进入Controller,Service,Mapper,这样的调用链就叫做簇点链路。簇点链路中被监控的每一个接口都是一个资源。

基于Sentinel的微服务保护,sentinel,微服务,架构

 如果需要设置某项规则,可以点击链路后的按钮。

示例

step1:对我们刚刚访问过的资源,新增一条流控规则,设置QPS为5,即每秒最多响应5个请求

基于Sentinel的微服务保护,sentinel,微服务,架构

新增后可以在流控规则中查看到刚刚增加的流控规则

基于Sentinel的微服务保护,sentinel,微服务,架构

2、使用jmeter进行测试 

2.1先把jmeter跑起来,找到文件夹bin目录下的jmeter.bat双击就🆗了

基于Sentinel的微服务保护,sentinel,微服务,架构

2.2创建一个测试线程组

基于Sentinel的微服务保护,sentinel,微服务,架构

基于Sentinel的微服务保护,sentinel,微服务,架构

2.3右击线程组,创建HTTP请求

基于Sentinel的微服务保护,sentinel,微服务,架构

基于Sentinel的微服务保护,sentinel,微服务,架构

2.4右击线程组,创建结果树

基于Sentinel的微服务保护,sentinel,微服务,架构

2.5 Sentinel查看结果

基于Sentinel的微服务保护,sentinel,微服务,架构

 流控模式

        流控模式有三种,在设置流控规则的时候,可以点击高级选项进行设置

直接模式

        统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式

关联模式

        统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流

使用场景:比如用户支付时需要修改订单状态,同时用户要查询订单。查询和修改操作会争抢数据库锁,产生竞争。业务需求是优先支付和更新订单的业务,因此当修改订单业务触发阈值时,需要对查询订单业务限流。

链路模式

        统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流

使用场景:比如有查询订单和创建订单业务,两者都需要查询商品。针对从查询订单进入到查询商品的请求统计,并设置限流。

流控效果

在流控的高级选项中,还有一个流控效果选项:

流控效果是指请求达到流控阈值时应该采取的措施,包括三种:

快速失败
        达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。

warm up

        预热模式,对超出阈值的请求同样是拒绝并抛出异常。但这种模式阈值会动态变化,从一个较小值逐渐增加到最大阈值。在一个服务刚刚启动时,一切资源尚未初始化(冷启动),如果直接将QPS跑到最大值,可能导致服务瞬间宕机。而warm up也叫预热模式,是应对服务冷启动的一种方案。请求阈值初始值是 maxThreshold / coldFactor,持续指定时长后,逐渐提高到maxThreshold值。而coldFactor的默认值是3.

例如,我设置QPS的maxThreshold为10,预热时间为5秒,那么初始阈值就是 10 / 3 ,也就是3,然后在5秒后逐渐增长到10

排队等待

        让所有的请求按照先后次序排队执行,两个请求的间隔不能小于指定时长。当请求超过QPS阈值时,快速失败和warm up 会拒绝新的请求并抛出异常。而排队等待则是让所有请求进入一个队列中,然后按照阈值允许的时间间隔依次执行。后来的请求必须等待前面执行完成,如果请求预期的等待时间超出最大时长,则会被拒绝。

总结
关于Sentinel流控组件的介绍就到这里,感谢收看,再见啦~文章来源地址https://www.toymoban.com/news/detail-705551.html

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

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

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

相关文章

  • SpringCould微服务保护01——Sentinel组件下载并使用

    1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。 但是,依赖服务I的业务请求被阻塞

    2024年02月07日
    浏览(34)
  • 【SpringCloud】微服务保护(Sentinel)和分布式事务(Seata)

    建议学完该系列前篇 【SpringCloud】商城项目拆分微服务各个组件学习 然后再来看本文 然后学习 【RabbitMQ】交换机、队列、可靠性保证和延迟消息 在微服务远程调用的过程中,还存在几个问题需要解决。 首先是业务健壮性问题: 例如在之前的查询购物车列表业务中,购物车

    2024年01月25日
    浏览(47)
  • SpringCloud Alibaba - Sentinel 微服务保护解决雪崩问题、Hystrix 区别、安装及使用

    目录 一、Sentinel 1.1、背景:雪崩问题 1.2、雪崩问题的解决办法 1.2.1、超时处理 缺陷:为什么这里只是 “缓解” 雪崩问题,而不是百分之百解决了雪问题呢? 1.2.2、舱壁模式 缺陷:资源浪费 1.2.3、熔断降级 1.2.4、流量控制 误区:那是不是只用流量控制就可以,前面三种方法

    2024年02月07日
    浏览(23)
  • 基于Sentinel自研组件的系统限流、降级、负载保护最佳实践探索 | 京东云技术团队

    作者:京东物流 杨建民 Sentinel 以流量为切入点,从 流量控制 、 熔断降级 、 系统负载 保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景 :秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

    2024年02月05日
    浏览(35)
  • 微服务04 分布式搜索引擎 elasticsearch DSL数据聚合 自动补全 数据同步 集群 微服务保护 Sentinel

    聚合(aggregations)可以让我们极其 方便的实现对数据的统计、分析、运算 。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些 统计功能的比数据库的sql要方便的多,而且查询速度非常快 ,可以实现近

    2024年02月15日
    浏览(42)
  • 微服务-基于Docker安装Sentinel

    目录 1、拉取Sentinel镜像 2、构建Sentinel容器  3、访问Sentinel 代码: 实例: 代码: 实例:         打开游览器,访问 http://虚拟机IP:Sentinel服务端口号         即可访问服务,默认账号和密码都是:sentinel 例如:  

    2024年02月12日
    浏览(28)
  • 深入学习SpringCloud Alibaba微服务架构,揭秘Nacos、Sentinel、Seata等核心技术,助力构建高效系统!

    链接: https://pan.baidu.com/s/1hRN0R8VFcwjyCTWCEsz-8Q?pwd=j6ej 提取码: j6ej 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v4的分享 📚【第01阶段】课程简介:全面介绍课程内容,为你提供学习引导和目标规划,让你快速进入学习状态!💡 🔍【第02阶段】基

    2024年02月12日
    浏览(41)
  • 实战:Springboot集成Sentinel实现流量控制、熔断降级、负载保护

    前面的文章我们学习了Hystrix并和springboot项目进行了集成,实现服务的熔断降级、隔离措施。但是Hystrix对流量的控制不是很好,仅仅信号量也只能对指定的接口进行限流,至于保护机制Hystrix也只是达到指标进行熔断。那么,有没有一种中间件可以在兼容熔断降级的同时精准实

    2024年02月16日
    浏览(39)
  • SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel

    前言:作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成Sentinel 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的

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

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

    2024年02月06日
    浏览(71)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包