暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式架构之Sentinel

youcongtech 2022-11-17
415

一、什么是Sentinel?

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。

二、Sentinel具有哪些特征?

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

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

  • 3.广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Apache Dubbo、gRPC、Quarkus 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。同时 Sentinel 提供 Java/Go/C++ 等多语言的原生实现。

  • 4.完善的 SPI 扩展机制:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

三、Sentinel的总体框架图是怎样的?

四、关于Sentinel的资料有哪些?

Sentinel官网:
https://sentinelguard.io/zh-cn/index.html

Github源代码:
https://github.com/alibaba/Sentinel

Sentinel Wiki:
https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D

Sentinel官方文档:
https://sentinelguard.io/zh-cn/docs/introduction.html

五、YC-Framework使用Sentinel主要是做什么的?

主要用于限流。限流是服务降级的一种。限流就是限制系统的输入和输出流量已达到保护系统的目的。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到的需要限制的阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处理,拒绝处理,或者部分拒绝处理等等。

限流的方案有不少,我将其分为两类:

  • 第一类,基于中间件的单一方式。

  • 第二类,基于中间件的混合方式。

1.基于中间件的单一方式

  • 1.Tomcat中使用maxThreads来实现限流。

  • 2.基于Nginx配置实现(limit_conn_zone、limit_req_zone、ngx_http_upstream_module等)。

2.基于中间件的混合方式

  • 1.SpringCloud Gateway+Sentinel实现限流(又称网关端限流,YC-Framework使用该方式)。

  • 2.Nginx+Lua+Redis实现限流。

  • 3.Java和Redis相结合实现限流(又称服务端限流控制)。

六、YC-Framework是如何结合网关使用Sentinel的?

启动网关服务(yc-gateway)、认证服务(yc-auth)、doc/run目录下sentinel-dashboard.jar等。对应的运行效果图如下:

Nacos配置文件内容(sentinel-gateway.json,这里配置的是流控规则):

    [
    {
    // 资源名
    "resource": "/yc-auth",
    // 针对来源,若为 default 则不区分调用来源
    "limitApp": "default",
    // 限流阈值类型(1:QPS;0:并发线程数)
    "grade": 1,
    // 阈值
    "count": 1,
    // 是否是集群模式
    "clusterMode": false,
    // 流控效果(0:快速失败;1:Warm Up(预热模式);2:排队等待)
    "controlBehavior": 0,
    // 流控模式(0:直接;1:关联;2:链路)
    "strategy": 0,
    // 预热时间(秒,预热模式需要此参数)
    "warmUpPeriodSec": 10,
    // 超时时间(排队等待模式需要此参数)
    "maxQueueingTimeMs": 500
    }
    ]


    除流控规则外还有降级规则、热点规则、系统规则、授权规则等,大家可按需使用。

    相关参考代码地址:
    https://github.com/developers-youcong/yc-framework/tree/main/yc-gateway

    YC-Framework官网:
    https://framework.youcongtech.com/

    YC-Framework Github源代码:
    https://github.com/developers-youcong/yc-framework

    YC-Framework Gitee源代码:
    https://gitee.com/developers-youcong/yc-framework

    以上源代码均已开源,开源不易,如果对你有帮助,不妨给个star,鼓励一下!!!











    文章转载自youcongtech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论