在生产环境中使用 Sentinel

在这里插入图片描述

文章目录

          • 一、安装zookeeper
            • 1. linux环境
            • 2. windows环境
            • 2. 安装并启动zkui
          • 二、编译打包
            • 2.1. 拉取项目
            • 2.2. 启动
            • 2.3. 登录 sentinel
            • 2.4. 登录zkui
            • 2.5. 重启Sentinel
            • 2.6. 删除Sentinel的流控规则
          • 三、将客户端和zk打通
            • 3.1. 引入依赖
            • 3.2. 配置
            • 3.3. 启动springboot
            • 3.4. sentinel控制台+添加流控规则
            • 3.5. 登录zkui
          • 四、测试
            • 4.1. 请求
            • 4.2. 重启springboot项目
            • 4.3. Sentinel控制台
            • 4.4. zkui
            • 4.5. 分布式限流总结

分布式限流 Sentinel+Zookkeper
https://github.com/alibaba/Sentinel/wiki/在生产环境中使用-Sentinel

一、安装zookeeper
1. linux环境
# 正确版本
docker run -p 2181:2181 --restart always -d zookeeper:3.5.8

在这里插入图片描述

在这里插入图片描述
注:这个zookeeper版本建议使用3.5.8,curator4.x对应zookeeper版本3.5.x

2. windows环境

将zoo_sample.cfg重命名zoo.cfg:
在这里插入图片描述
双击启动zk
在这里插入图片描述

2. 安装并启动zkui

https://gblfy.blog.csdn.net/article/details/113803594

linux环境:

nohup java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &

windows环境

java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar >> msg.log

在这里插入图片描述
在这里插入图片描述

二、编译打包
2.1. 拉取项目
git clone git@github.com:jiajiangnan/Sentinel.git
cd Sentinel
mvn clean install -DskipTests

在这里插入图片描述
在这里插入图片描述

2.2. 启动
#进入编译后的目录
cd Sentinel-master\Sentinel-master\sentinel-dashboard\target# 第一种(推荐使用):sentinel启动本地连接zk 没任何问题
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -Ddatasource.provider=zookeeper -Ddatasource.provider.zookeeper.server-addr=localhost:2181 -jar sentinel-dashboard-1.8.0-zookeeper.jar

注:jar待补充
在这里插入图片描述

2.3. 登录 sentinel

账号/密码:sentinel/sentinel
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4. 登录zkui

在这里插入图片描述

2.5. 重启Sentinel

查看流控规则是否仍然存在
在这里插入图片描述

2.6. 删除Sentinel的流控规则

因为流控规则是Sentinel控制台同步zk的,预期效果,在Sentinel控制台删除流控规则后,zk的流控规则也会删除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
符合预期

三、将客户端和zk打通

https://github.com/alibaba/Sentinel/wiki/动态规则扩展

3.1. 引入依赖
       <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-zookeeper</artifactId></dependency>
3.2. 配置
package com.gblfy.distributedlimiter.config;import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;import java.util.List;@Component//添加到spring把容器让spring管理
public class ZookeeperDataSourceConfig {@Bean//启动加载此方法public void loadRules() {//zk服务端地址final String remoteAddress = "192.168.43.119:2181";//应用+keyNamefinal String path = "/limiter/sentinel-flow-rules";ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new ZookeeperDataSource<>(remoteAddress, path,source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));FlowRuleManager.register2Property(flowRuleDataSource.getProperty());}
}
3.3. 启动springboot

在这里插入图片描述

3.4. sentinel控制台+添加流控规则

在这里插入图片描述

在这里插入图片描述

3.5. 登录zkui

查看流控规则是否同步
在这里插入图片描述

四、测试
4.1. 请求

请求数量>1,预期会被限流

http://192.xxx.x.xxx:8082/sentinel

在这里插入图片描述

4.2. 重启springboot项目

lue

4.3. Sentinel控制台

查看流控规则是否仍然存在
在这里插入图片描述

4.4. zkui

在这里插入图片描述

4.5. 分布式限流总结

对于是否是分布式限流,明确的就是限流规则是否储存在外部的一个公用的存储中心。之前讲的Guava RateLimiter组件限流为什么不能做不到分布式呢?因为限流规则存在java应用内存里面的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript-浏览器控制台使用

基本语法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- JavaScript 严格区分大小写 --><script>// 1. 定义变量 变量类型 变量名 变量值var num 1;num …

看完就入门系列!吞吐量、消息持久化、负载均衡和持久化、伸缩性…… 你真的了解 Kafka 了吗?...

作者| liuhehe123来源| CSDN博客 责编| Carol出品| CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;封图| CSDN下载于视觉中国 无论是已经接触过 Kafka 还是刚入坑的小伙伴&#xff0c;都应该时不时回头了解一下 Kafka &#xff0c;有时候会有不少新收获。今天这份…

Alibaba Cloud Linux 2 开源后又有什么新动作?

阿里妹导读&#xff1a;2019 年 4 月&#xff0c;Alibaba Cloud Linux 2 (Aliyun Linux 2) 正式开源。时至今日&#xff0c;已经走过三个月的里程。在这段时间内&#xff0c;这个刚诞生不久的为阿里云 ECS 环境定制优化的 Linux 操作系统发行版的装机量稳步上升。本文将重点介绍…

一站式数据采集存储的利器:阿里云InfluxDB®️数据采集服务

背景 随着时序数据的飞速增长&#xff0c;时序数据库不仅需要解决系统的稳定性和性能问题&#xff0c;还需实现数据从采集到分析的链路打通&#xff0c;才能让时序数据真正产生价值。在时序数据采集领域&#xff0c;一直缺少自动化的采集工具。虽然用户可以使用一些开源的采集…

Serverless 风起云涌,为什么阿里、微软、AWS 纷纷拥抱开源 OAM?

作者 | 张磊&#xff0c;阿里云原生应用平台高级技术专家邓洪超&#xff0c;阿里云技术专家责编 | 唐小引头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;Serverless 这个词第一次被是 2012 年一篇名为《Why The Future of Software and …

K8S从懵圈到熟练 - 我们为什么会删除不了集群的命名空间?

阿里云售后技术团队的同学&#xff0c;每天都在处理各式各样千奇百怪的线上问题。常见的有&#xff0c;网络连接失败&#xff0c;服务器宕机&#xff0c;性能不达标&#xff0c;请求响应慢等。但如果要评选&#xff0c;什么问题看起来微不足道事实上却足以让人绞尽脑汁&#xf…

为什么技术人一定要懂点“可信计算”?

阿里妹导读&#xff1a;可信计算&#xff08;TrustedComputing&#xff0c;简称TC&#xff09;是一项由TCG(可信计算组)推动和开发的技术。可信的核心目标之一是保证系统和应用的完整性&#xff0c;从而确定系统或软件运行在设计目标期望的可信状态。可信和安全是相辅相成的&am…

很用心的为你写了 9 道 MySQL 面试题,建议收藏!

来源 | Java 建设者责编| Carol封图| CSDN下载于视觉中国 MySQL 也是作者本人正在学习的部分&#xff0c;后面会多输出 MySQL 的文章贡献给大家&#xff0c;毕竟 MySQL 涉及到数据存储、锁、磁盘寻道、分页等操作系统概念&#xff0c;而且互联网对 MySQL 的注重程度是不言而喻的…

OpenTelemetry-可观察性的新时代

有幸在2019KubeCon上海站听到Steve Flanders关于OpenTelemetry的演讲&#xff0c;之前Ops领域两个网红项目OpenTracing和OpenCensus终于走到了一起&#xff0c;可观察性统一的标准化已经扬帆起航。 这篇文章旨在抛砖引玉&#xff0c;希望能够和更多的同学一起交流可观察性相关的…

JavaScript-严格检查模式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--前提&#xff1a; IDEA需要设置支持ES6 语法use strict; 必须写在JavaScript 的第一行严格检查模式&#xff0c;预防JavaS…

我们为什么需要 SpringBoot?

作者 | 阿文&#xff0c;责编 | 郭芮头图 | CSDN 下载自东方IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;任何先进技术的产生都不是凭空出现的&#xff0c;SpringBoot 也不例外&#xff0c;SpringBoot 是基于Spring 的基础上产生的。总所周知&#xff0c;Spri…

高德网络定位之“移动WiFi识别”

导读 随着时代的发展&#xff0c;近10年来位置产业蓬勃发展&#xff0c;定位能力逐渐从低精度走向高精度&#xff0c;从部分场景走向泛在定位。设备和场景的丰富&#xff0c;使得定位技术和能力也不断的优化更新。定位能力包括GNSS、DR&#xff08;航迹推算&#xff09;、MM&a…

JavaScript-字符串

字符串 正常字符串使用单引号 或者 双引号 包裹注意转义字符 \ \ \n \t \u4e2d \u#### Unicode字符 \x41 Ascll字符多行字符串编写 // tab 上面 esc下面的引号 let msg helloworld你好 console.log(msg)模板字符串 let name ht let age 5; let msg hello${name}你…

Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】

文章目录一、拉模式架构二、原理简述三、编写3.1 加依赖3.2 写代码3.3 配置四、优缺点分析五、你可能会有的疑问六、参考文档七、案例测试7.1. 添加流控规则7.2. 服务停止7.3. 重新启动服务7.4. 调用接口7.5. 查看流控规则本文实现基于拉模式的Alibaba Sentinel规则持久化。一、…

开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?

从用户的视角来感受一个开源项目的成长&#xff0c;是我们推出「开发者说」专栏的初衷&#xff0c;即在开发者进行开源项目选型时&#xff0c;提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿&#xff0c;本文是「开发者说」的第9篇&#xff0c;作者郑扬勇&#xff0…

面试时遇到「看门狗」脖子上挂着「时间轮」,我就问你怕不怕?

来源 | Why技术封图 | CSDN 下载于视觉中国之前写了一篇文章&#xff0c;有一个小节中写到这样一段话&#xff1a;于是就有读者来问了&#xff1a;老哥&#xff0c;看门狗介绍一下呗。面试的时候被问到了&#xff0c;没有回答上来。听到这个问题我脑海里首先浮现出了几个问题&…

海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解

前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。Tablestore在阿里云官网上有各种文档介绍&#xff0c;也发布了很多场景案例文章&#xff0c;这些文章收录在这个合集中《表格存储Tablestore权威指南》。值得一提的是&#xff0…

JavaScript-数组

数组 Array可以包含任意的数据类型 var arr [1,2,3,4,5,6] arr[0] // 取值 arr[0] 3 // 赋值长度 arr.length arr.length 10 // 长度是可变的注意&#xff1a;假如给arr.length 赋值&#xff0c;数组大小就会发生变化。如果赋值过小&#xff0c;元素就会丢失 获取指定字…

Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】

前面&#xff0c;已经为Sentinel实现了 基于拉模式的规则持久化 &#xff0c;本文来实现基于 推模式的规则持久化。 文章目录一、推模式架构图二、原理简述三、微服务改造3.1. 加依赖3.2. 添加配置四、Sentinel控制台改造五、编译 & 启动六、测试测试1&#xff1a;测试2&am…

现代IM系统中的消息系统架构 - 实现篇

序 消息类场景是表格存储&#xff08;Tablestore&#xff09;主推的方向之一&#xff0c;因其数据存储结构在消息类数据存储上具有天然优势。为了方便用户基于Tablestore为消息类场景建模&#xff0c;Tablestore封装Timeline模型&#xff0c;旨在让用户更快捷的实现消息类场景…