首页 > 其他分享 >熔断与服务降级开源库Sentinel

熔断与服务降级开源库Sentinel

时间:2022-12-08 16:34:36浏览次数:39  
标签:服务 jar sentinel 开源 熔断 dashboard Sentinel 控制台


Sentinel 介绍

分布式系统中一个微服务需要依赖于很多的其他的服务,那么服务就会不可避免的失败。例如A服务依赖于B、C、D等很多的服务,当B服务不可用的时候,会一直阻塞或者异常,更不会去调用C服务和D服务。同时假设有其他的服务也依赖于B服务,也会碰到同样的问题,这就及有可能导致雪崩效应。

如下案例:一个用户通过通过web容器访问应用,他要先后调用A、H、I、P四个模块,一切看着都很美好。
由于某些原因,导致I服务不可用,与此同时我们没有快速处理,会导致该用户一直处于阻塞状态。
当其他用户做同样的请求,也会面临着同样的问题,tomcat支持的最大并发数是有限的,资源都是有限的,将整个服务器拖垮都是有可能的。

Sentinel是一个用于分布式系统的延迟和容错的开源库,在分布式系统中,许多依赖会不可避免的调用失败,例如超时,异常等,Hystrix能保证在一个依赖出现问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

断路器本身是一种开关装置,当某个服务单元发生故障后,通过断路器的故障监控(类似于保险丝),向调用者返回符合预期的,可处理的备选响应,而不是长时间的等待或者抛出无法处理的异常,这样就保证了服务调用的线程不会被长时间,不必要的占用,从而避免故障在分布式系统中的蔓延,乃至雪崩。

Sentinel在网络依赖服务出现高延迟或者失败时,为系统提供保护和控制;可以进行快速失败,缩短延迟等待时间;提供失败回退(Fallback)和相对优雅的服务降级机制;提供有效的服务容错监控、报警和运维控制手段。

Sentinel 具有以下特征:

丰富的应用场景:

Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。

完备的实时监控:

Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。

广泛的开源生态:

Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

完善的 SPI 扩展点:

Sentinel 提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。例如定制规则管理、适配数据源等。

安装

下载Sentinel服务端jar

访问官网:https://github.com/alibaba/Sentinel/releases
下载最新的版本 :sentinel-dashboard-1.8.2.jar

Linux 系统下载:

wget https://github.com/alibaba/Sentinel/releases/download/1.8.2/sentinel-dashboard-1.8.2.jar

启动Sentinel服务端后台管理

执行命令:

java -Dserver.port=8082 -jar sentinel-dashboard-1.8.2.jar

默认8080端口

可以修改端口启动:
nohup java -Dserver.port=8082 -jar sentinel-dashboard-1.8.2.jar>log_p.file 2>&1 &

上述命令中我们指定了一个JVM参数,-Dserver.port=8080 用于指定 Spring Boot 启动端口为 8080。

熔断与服务降级开源库Sentinel_java


如果需要自行配置,可以通过如下参数进行调整:

-Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel;
-Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel;
-Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;

Sentinel dashboard控制台启动配置项

这里启动的时候,也可以自己根据自己的需要自行配置:

-Dserver.port=8080:用于指定 Sentinel 控制台端口为 8080,如若8080端口冲突,可使用 -Dserver.port=新端口 进行设置。。
-Dcsp.sentinel.dashboard.server=localhost:8080:指定控制台地址和端口,会自动向该地址发送心跳包。地址格式为:hostIp:port,l配置成ocalhost:8080即监控自己
-Dproject.name=sentinel-dashboard:指定Sentinel控制台程序显示的名称
-Dcsp.sentinel.log.dir:指定Sentinel 日志文件目录,默认是:${user.home}/logs/csp/
-Dcsp.sentinel.api.port=xxxx:本地的 Sentinel 客户端端口(可选,默认是 8719,有冲突会尝试向后探测)。若启动多个应用,则需要通过 -Dcsp.sentinel.api.port=xxxx 指定客户端监控 API 的端口(默认是 8719)。
-Dcsp.sentinel.app.type=1:从 1.6.3 版本开始,控制台支持网关流控规则管理。启动参数以将您的服务标记为 API Gateway,在接入控制台时您的服务会自动注册为网关类型,然后您即可在控制台配置网关规则和 API 分组。

用户可以通过如下参数进行鉴权配置:
-Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel;
-Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel;
-Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;

访问 localhost:8082

​http://192.168.8.144:8082/#/login​

默认登录用户:sentinel
密码:sentinel

熔断与服务降级开源库Sentinel_jar_02


由于没有接入Sentinel客户端,所以这个仪表盘是空的。

Dockerfile

FROM java:8
MAINTAINER
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD sentinel-dashboard-1.8.0.jar app.jar
# 指定该镜像以什么样的用户去执行
USER nanlist
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]


标签:服务,jar,sentinel,开源,熔断,dashboard,Sentinel,控制台
From: https://blog.51cto.com/u_15906694/5922724

相关文章

  • 【开源库推荐】#4 Poi-办公文档处理库
    原文:【开源库推荐】#4Poi-办公文档处理库-Stars-One的杂货小窝github仓库apache/poiApachePOI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microso......
  • 收藏两个不错的开源国内测试框架
    1)项目简介:这是一个WebUI自动化测试框架,由webdriver中文社区创办人土豆(本人技术笔名)所创建,该web自动化测试框架是用java语言编写的,基于seleniumwebdriver的开源自动化......
  • ChatGPT 会开源吗?
    最近,我被一款叫做ChatGPT的人工智能(AI)聊天机器人,刷屏了。网上有人说它是搜索引擎杀手,还有人说它将取代程序员...最后,我还是没扛住铺天盖地的赞美,跑去注册了个账号,抱着......
  • 十大开源测试工具和框架
    免费的开源框架和工具由于其开源特性,现在逐渐成为自动化测试的首选解决方案。区别在于,你是喜欢使用类库编写一个全新的自动化测试框架,或者喜欢使用一个现成的工具。本文帮......
  • 我为何放弃程序开源
    说实话,我一直认为开源是正义的。直到我看了易经这本书以后,我想说,对我来说,我可能不适合开源这个领域。也就是说,以后,我的所有作品,没有意外的话,都会是闭源的。也就是说,只提供二......
  • atguigu7 秒杀_分布式锁/分布式信号量_MQ_Sentinel (seckill)
    0.前言0.1秒杀架构:0.2分布式下定时任务问题:引入分布式锁秒杀商品上架时,不能多个服务同时上架,防止重复上架秒杀时,不能多个服务同时秒杀成功,防止重复秒杀0.3秒杀系统关注......
  • 开源web自定义表单有哪几个特点?
    目前,市场正在蓬勃发展中,作为企业,采用传统表单的弊端也逐渐显现出来,面临比较大的问题就是办公效率得不到提升。在各行各业正积极筹备朝着数字化方向转型的背景下,采用开源web......
  • SpringCloud-Hystrix (熔断、降级、监控)
    Hystrix:服务熔断分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免失败!1服务雪崩​ 多个微服务之间调用的时......
  • 大数据数仓体系中如何玩转各种开源工具或技术
    在从离线到实时化发展的过程中,大数据领域出现了很多优秀的系统以应对各种不同的分析和查询场景。1.比如我们可以将实时的数据归档到像Hive这样的离线数仓里进行数据的离线......
  • 一个人坚持了五年的开源项目 - 开发管理方面可完全替代GitLab
    简介:大家好,我是枫哥,......