zoukankan      html  css  js  c++  java
  • 双剑合璧Nacos结合Sentinel实现流量安全控制(一):Sentinel是什么?Sentinel核心库和控制台

    Alibaba Sentinel 是一款高性能且轻量级的流量控制、熔断降级解决方案。是面向分布式服务架构的高可用流量控制组件。

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

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

    一、Sentinel 是什么

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

    Sentinel 具有以下特征:

    • 「丰富的应用场景」:

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

    • 「完备的实时监控」:

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

    • 「广泛的开源生态」:

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

    • 「完善的 SPI 扩展点」:

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

    • 「Sentinel 主要特征」

    在这里插入图片描述

    • 「Sentinel 开源生态」
      在这里插入图片描述

    Sentinel 目前已经针对 Servlet、Dubbo、Spring Boot/Spring Cloud、gRPC 等进行了适配,用户只需引入相应依赖并进行简单配置即可非常方便地享受 Sentinel 的高可用流量防护能力。Sentinel 还为 Service Mesh 提供了集群流量防护的能力。未来 Sentinel 还会对更多常用框架进行适配。

    Sentinel 分为两个部分:

    核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。

    控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

     

    二、Sentinel 的历史

    2012 年,Sentinel 诞生,主要功能为入口流量控制。

    2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。

    2018 年,Sentinel 开源,并持续演进。

    2019 年,Sentinel 朝着多语言扩展的方向不断探索,推出 C++ 原生版本,同时针对 Service Mesh 场景也推出了 Envoy 集群流量控制支持,以解决 Service Mesh 架构下多语言限流的问题。

    2020 年,推出 Sentinel Go 版本,继续朝着云原生方向演进。

     

    三、Sentinel 核心

    Sentinel 的使用可以分为两个部分:

    核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 7 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配)。
    控制台(Dashboard):控制台主要负责管理推送规则、监控、集群限流分配管理、机器发现等。

     

    四、Sentinel 控制台

    Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。

    官网文档:https://github.com/alibaba/Sentinel/wiki/控制台

    4.1 获取控制台

    您可以从 release 页面 下载最新版本的控制台 jar 包。

    您也可以从最新版本的源码自行构建 Sentinel 控制台:

    下载 控制台 工程
    使用以下命令将代码打包成一个 fat jar: mvn clean package

    4.2 启动控制台

    启动命令如下,本文使用的是目前最新 1.7.2 版本:

    java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.2.jar
    • 「注意」:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。

    其中 -Dserver.port=8080 用于指定 Sentinel 控制台端口为 8080。

    从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的「登录」功能,默认用户名和密码都是 sentinel。可以参考 鉴权模块文档 配置用户名和密码。

    注:若您的应用为 Spring Boot 或 Spring Cloud 应用,您可以通过 Spring 配置文件来指定配置,详情请参考 Spring Cloud Alibaba Sentinel 文档。

    为了方便启动,可以编写一个启动脚本 run.bat:

    java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.2.jar
    pause

    4.3 访问

    访问:http://localhost:8080/

    在这里插入图片描述

    输入默认用户名和密码 sentinel 点击登录。至此控制台就安装完成了。

    在这里插入图片描述
    原作者:哈喽沃德先生,请关注 哈喽沃德先生公众号,如要获取**springcloud alibaba微服务架构视频教程**,请点加粗部分文字。

  • 相关阅读:
    Django源码解析(1):启动程序
    python之importlib模块
    Django中间件:CsrfViewMiddleware
    Django的admin组件
    Linux学习之CentOS--CentOS6.4下Mysql数据库的安装与配置【转】
    C#读取Xml【转】
    在eclipse导入项目的步骤【转】
    Spring学习(一)——Spring中的依赖注入简介【转】
    Spring学习(二)——Spring中的AOP的初步理解[转]
    Spring之AOP
  • 原文地址:https://www.cnblogs.com/shsxt/p/13423344.html
Copyright © 2011-2022 走看看