《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/Sentinel/install/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

1. 概述

Sentinel 的官方文档非常完善,所以本文会大量引用噢。

如果胖友对服务保障相关的中间件了解较少,可能本文看起来会看到蛮多新概念。不过问题不大,打怪升级多美好~

1.1 介绍

Sentinel 是什么?

FROM https://github.com/alibaba/Sentinel
轻量级的流量控制、熔断降级 Java 库。

FROM 《Sentinel 官方文档 —— 介绍》
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

1.2 功能

FROM 《Sentinel 官方文档 —— 介绍》

Sentinel 具有以下特征:

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

Sentinel 的主要特性:主要特性

1.3 组成

FROM 《Sentinel 官方文档 —— 介绍》

Sentinel 分为两个部分

  • 核心库(Java 客户端):不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
  • 控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

2. 控制台

在开始在项目中集成【Sentinel 客户端】之前,我们先来搭建【Sentinel 控制台】。

① 下载

打开 Sentinel 下载页面,选择想要的 Sentinel 版本。这里,我们选择 1.7.1 最新版本。

# 创建目录
$ mkdir -p /Users/yunai/Sentinel
$ cd /Users/yunai/Sentinel

# 下载
$ wget https://github.com/alibaba/Sentinel/releases/download/1.7.1/sentinel-dashboard-1.7.1.jar

咳咳咳,一个很单纯的 jar 包,有点尴尬,相比其它中间件来说。

② 启动

执行 nohup java -jar sentinel-dashboard-1.7.1.jar & 命令,后台启动 Sentinel 控制台。通过查看 nohup.out 日志输入,如果有如下内容,说明启动成功:

2020-01-28 01:24:26.945  INFO 56162 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-01-28 01:24:26.951 INFO 56162 --- [ main] c.a.c.s.dashboard.DashboardApplication : Started DashboardApplication in 3.044 seconds (JVM running for 3.525)

③ 访问 UI 界面

使用浏览器,访问 http://127.0.0.1:8080/ 地址,默认进入 Sentinel 登陆页。如下图所示:Sentinel 登陆页

使用默认的账号「sentinel / sentinel」进行登陆,进入 Sentinel 首页。如下图所示:Sentinel 首页

因为我们暂时没有应用接入到 Sentinel 中,所以暂时没有什么内容。稍后我们在「3. 集成到 Spring Boot」小节中,将 Spring Boot 集成 Sentinel 客户端,从而接入 Sentinel 控制台后,我们就可以看到 Sentinel 控制台的具体功能啦。

④ 配置

因为 Sentinel 控制台是基于 Spring Boot 实现,所以我们可以通过启动时的命令行参数,自定义配置。

  • --server.port:自定义服务器端口。默认为 8080 端口。
  • --auth.username--auth.password:自定义账号和密码。默认为「sentinel / sentinel」。
  • --logging.file:自定义日志文件。默认为 ${user.home}/logs/csp/sentinel-dashboard.log

至此,我们已经完成了 Sentinel 控制台的搭建。更多内容,胖友可以后续阅读《Sentinel 官方文档 —— 控制台》文章。

3. 集成到 Spring Boot

Sentinel 集成到 Spring Boot 项目中,可阅读《芋道 Spring Boot 服务容错 Sentinel》文章。

4. 集成到 Spring Cloud

Sentinel 集成到 Spring Cloud 项目中,可阅读《芋道 Spring Cloud Alibaba 服务容错 Sentinel 入门》文章。

5. 集成到 Dubbo

TODO

文章目录
  1. 1. 1. 概述
    1. 1.1. 1.1 介绍
    2. 1.2. 1.2 功能
    3. 1.3. 1.3 组成
  2. 2. 2. 控制台
  3. 3. 3. 集成到 Spring Boot
  4. 4. 4. 集成到 Spring Cloud
  5. 5. 5. 集成到 Dubbo