Sentinel: 分布式系统的流量防卫兵(上)

简介: Sentinel: 分布式系统的流量防卫兵(上)

Sentinel 是什么?


Sentinel 具有以下特征:


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


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


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


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


Sentinel 的主要特性:


image.png


Sentinel 的开源生态:


image.png


我们大概叙述后开始整合我们的分布式项目,我这里里为一个简单分布式项目,注册中心为Nacos,一个服务提供者(user-center)和一个服务消费者(content-center)



image.png


可以看到我的content-center调用user-center/users服务


image.png


我们现在只启动content-center不启动user服务,可想而知肯定报错,我们来看


image.png


没错500,找不到user-center服务,我们现在整合Sentinel,首先加入两个依赖


<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


和actuator配合使用,可通过http://localhost:8010/actuator/sentinel端点进行查看


{
    "blockPage":null,
    "appName":"content-center",
    "consoleServer":"localhost:8333",
    "coldFactor":"3",
    "rules":{
        "systemRules":[
        ],
        "authorityRule":[
        ],
        "paramFlowRule":[
        ],
        "flowRules":[
        ],
        "degradeRules":[
        ]
    },
    "metricsFileCharset":"UTF-8",
    "filter":{
        "order":-2147483648,
        "urlPatterns":[
            "/*"
        ],
        "enabled":true
    },
    "totalMetricsFileCount":6,
    "datasource":{
    },
    "clientIp":"192.168.2.29",
    "clientPort":"8719",
    "logUsePid":false,
    "metricsFileSize":52428800,
    "logDir":"/Users/zhangguowei/logs/csp/",
    "heartbeatIntervalMs":10000
}


我们暂时先不要管这些是什么我们后面再详细阐述,从JSON的形式看不太方便,Sentinel为我们整合有UI界面


整合Sentinel可视化界面


下载 sentinel的jar包然后直接启动


https://github.com/alibaba/Sentinel/releases


image.png


账号密码默认为sentinel


在项目的yml中加入


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/content_center
    hikari:
      username: ***
      password: ******
      driver-class-name: com.mysql.cj.jdbc.Driver
  cloud:
    sentinel:
      transport:
        # 指向sentinel UI界面
        dashboard: localhost:8333
    nacos:
      discovery:
        # 指定nacos server的地址
        server-addr: localhost:8848
  application:
    # 服务名称尽量用-,不要用_,不要用特殊字符
    name: content-center
server:
  port: 8010
management:
  endpoints:
    web:
      exposure:
        include: "*"


这个时候我们继续刚刚的500再执行几次会看到


image.png



相关文章
|
9月前
|
SpringCloudAlibaba 监控 Dubbo
SpringCloudAliBaba篇 之 Sentinel:图解分布式系统的流量防卫兵(上)
SpringCloudAliBaba篇 之 Sentinel:图解分布式系统的流量防卫兵
166 0
|
5月前
|
监控 Java Nacos
【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(上)
【分布式流控组件 Sentinel 快速入门】——图文详解操作流程
140 0
【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(上)
|
9月前
|
缓存 SpringCloudAlibaba Linux
SpringCloudAliBaba篇 之 Sentinel:图解分布式系统的流量防卫兵(下)
SpringCloudAliBaba篇 之 Sentinel:图解分布式系统的流量防卫兵
79 0
|
5月前
|
监控 Dubbo Linux
【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(下)
【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(下)
110 0
|
5月前
|
算法 API 网络架构
【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(中)
【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(中)
103 0
|
7月前
|
运维 Java BI
千亿流量并发治理!Alibaba实战Sentinel笔记,为微服务保驾护航
随着微服务的发展及DDD领域驱动设计的兴起,越来越多的企业开始使用微服务架构。无论是项目重构,还是新项目的开发,即使项目初期没有多大的流量,但从长远考虑,企业也基本会优先使用微服务架构。但“鱼和熊掌不可兼得”,项目微服务化在提升开发效率及降低后期维护成本的同时,也加大了服务部署运维及问题排查的难度,并且容易导致服务崩溃出现级联效应,也就是“服务雪崩”。
|
8月前
|
SpringCloudAlibaba 监控 网络协议
SpringCloud Alibaba系列(三) Sentinel系统自适应限流
  Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。
122 0
|
10月前
|
SpringCloudAlibaba Go Sentinel
「SpringCloudAlibaba系列」分布式限流框架Sentinel基本引用|
分布式限流框架Sentinel基本引用 Sentinel的基本引用 使用Sentinel的核心库实现限流,主要分以下几个步骤: 定义资源 定义限流规则 校验规则是否生效
|
10月前
|
算法 Dubbo Java
Sentinel流量防卫兵
Sentinel流量防卫兵
|
10月前
|
存储 SpringCloudAlibaba 监控
系统高可用番外篇:浅析sentinel源码
Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从**限流、流量整形、熔断降级、系统负载保护、热点防护**等多个维度来帮助开发者保障微服务的稳定性。
104 0
系统高可用番外篇:浅析sentinel源码