热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springcloudalibaba.2.2.xSentinel分布式系统的流量防卫兵的简介以及环境搭建

spring-cloud-alibaba.2.2.xSentinel分布式系统的流量防卫兵的简介以及环境搭建文章目录spring-cloud-alibaba.2.2.xSentin

spring-cloud-alibaba.2.2.x Sentinel分布式系统的流量防卫兵的简介以及环境搭建


文章目录

  • spring-cloud-alibaba.2.2.x Sentinel分布式系统的流量防卫兵的简介以及环境搭建
    • 1、Sentinel简介:分布式系统的流量防卫兵
    • 2、搭建sentinel的控制台服务
      • 2.1、环境准备
      • 2.2、启动服务器
    • 3.badger-spring-cloud-alibaba-sentinel sentinel服务的项目搭建
      • 3.1、maven的pom文件如下,就是一个普通的web的springboot项目,加入了`sentinel`的包
      • 3.2、yaml配置文件如下,基础配置
      • 3.3、主启动类、以及业务类
    • 4、项目启动,测试使用
      • 4.1、项目启动
      • 4.2、添加限流规则
      • 4.3、测试限流规则
      • 4.4、停止应用再启动


1、Sentinel简介:分布式系统的流量防卫兵

详细见github的文档https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D

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

Sentinel 具有以下特征:


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

Sentinel 的主要特性:


3.badger-spring-cloud-alibaba-sentinel sentinel服务的项目搭建


3.1、maven的pom文件如下,就是一个普通的web的springboot项目,加入了sentinel的包

这里主要演示sentinel的使用,也说明sentinel的使用,可以不依赖其他的外部条件,限流的工作实在客户端完成的;

上面的sentinel的控制台,只是做监控的展示,以及配置使用;

下一篇说下,规则数据的持久化配置;持久化配置理解了,就更加容易的理解这两句话的意思;

<project xmlns&#61;"http://maven.apache.org/POM/4.0.0" xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.2.4.RELEASEversion>parent><groupId>com.badgergroupId><artifactId>badger-spring-cloud-alibaba-sentinelartifactId><name>badger-spring-cloud-alibaba-sentinelname><description>服务熔断、限流description><properties><project.build.sourceEncoding>UTF-8project.build.sourceEncoding><java.version>1.8java.version><maven-jar-plugin.version>3.1.1maven-jar-plugin.version>properties><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-actuatorartifactId>dependency><dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-starter-alibaba-sentinelartifactId>dependency>dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-alibaba-dependenciesartifactId><version>2.2.1.RELEASEversion><type>pomtype><scope>importscope>dependency>dependencies>dependencyManagement><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins><finalName>badger-spring-cloud-alibaba-sentinelfinalName>build>
project>

3.2、yaml配置文件如下&#xff0c;基础配置

server:port: 9000
spring:application:name: badger-spring-cloud-alibaba-sentinelcloud:sentinel: transport:dashboard: 127.0.0.1:8080port: 8719
management:endpoints:web:exposure:include: &#39;*&#39;

3.3、主启动类、以及业务类

&#64;SpringBootApplication
public class SentinelApplication {public static void main(String[] args) throws Exception {SpringApplication.run(SentinelApplication.class, args);}&#64;RestControllerpublic class DemoController {&#64;GetMapping(value &#61; "/hello/{name}")&#64;SentinelResource(value &#61; "sayHello")public String apiHello(&#64;PathVariable String name) {return "Hello, " &#43; name;}}
}

4、项目启动&#xff0c;测试使用


4.1、项目启动

sentinel在上面已经启动&#xff0c;默认端口为8080&#xff1b;

启动应用badger-spring-cloud-alibaba-sentinel&#xff0c;端口为9000

由于sentinel为懒加载&#xff0c;调用接口http://localhost:9000/hello/abc


簇点链路可以看到&#xff0c;应用正常被sentinel监控到。


4.2、添加限流规则

对url为/hello/{name}做限流处理&#xff0c;点击流控设置&#xff0c;设置QPS&#xff0c;阈值为1&#xff0c;表示1秒内&#xff0c;只能有1个请求通过

新增成功后&#xff0c;在流控规则里&#xff0c;有一条新增的记录&#xff0c;也可以直接在流控规则的菜单下&#xff0c;新增对应的流控规则&#xff1b;


4.3、测试限流规则

快速多次调用http://localhost:9000/hello/abc

可以看到页面显示默认的限流异常信息

Blocked by Sentinel (flow limiting)

说明应用的接口&#xff0c;被限流成功。


4.4、停止应用再启动

停止应用badger-spring-cloud-alibaba-sentinel后&#xff1b;

再启动&#xff1b;

再调用对应的url接口&#xff0c;会发现流控规则里&#xff0c;上次新增的流控规则&#xff0c;没有了&#xff0c;说明配置的规则数据&#xff0c;没有持久化&#xff1b;

下一篇说下&#xff0c;规则数据的持久化配置&#xff1b;

详细见github的文档[https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D](


推荐阅读
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 5分钟学会 gRPC
    5分钟学会gRPC-介绍我猜测大部分长期使用Java的开发者应该较少会接触gRPC,毕竟在Java圈子里大部分使用的还是DubboSpringClound这两类服务框架。我也是 ... [详细]
  • 阿里首席架构师科普RPC框架
    RPC概念及分类RPC全称为RemoteProcedureCall,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 了解_Istio是啥?一文带你彻底了解!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Istio是啥?一文带你彻底了解!相关的知识,希望对你有一定的参考价值。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 微服务之总体架构篇
    一、单体架构存在的问题缺点:1、难以维护:当单体应用业务不断迭代后代码量非常臃肿,模整个项目非常复杂,每次更改代码都可能带来新的bug;2、部署项目麻烦:庞大之后项目部署效率 ... [详细]
author-avatar
洗吉精洗白菜_773
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有