Sentinel规则持久化--阿里云AHAS服务

标签: 微服务  阿里云  分布式  spring boot  java

刚开始学习sentinel时,感觉阿里的sentinel是真的,但是学着学着发现,当你的服务重启后,配置的规则全都没了;这样一来,重启一次服务配置一次规则,肯定头大,更别说要在生产环境中使用了。

搜集了很多sentinel持久化规则的资料,发现大部分资料介绍持久化有 拉模式, 再就是推模式,优点也有,缺点也有,个人觉得不是特别的友好,生产环境的话,先不说优缺点,改动的地方就特别多,所以不是那么 贴近生产环境。

好在阿里云的AHAS服务,可以托管我们的sentinel配置规则(当然不仅仅这些),接下来简单的介绍下如何接入AHAS服务

登录阿里云AHAS服务

访问 https://www.aliyun.com/product/ahas 并登录

点击开通免费版 并进入控制台

image-20200818144913298

免费版先玩玩吧 哈哈哈

配置应用防护

进入应用

image-20200818144944943

选择公网

image-20200818145142033

查看你的License

image-20200818145203798

接入服务

查看教程

image-20200818150711697

在pom中添加依赖

<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>spring-boot-starter-ahas-sentinel-client</artifactId>
  <version>1.6.4</version>
</dependency>

注意 如果引入过sentinel的starter,删除sentinel-starter依赖

添加yml

ahas:
  license: 你的license
  namespace: default
project:
  name: ${spring.application.name}  ##自定义,我这里是用的微服务名称

不过,要把之前的sentinel的配置全部注释或者删除

启动你的服务,访问一次你的接口,查看应用防护

image-20200818151427502

点进去,是是监控面板

image-20200818151507820

点击左侧 规则设置,就是我们熟悉的界面了

image-20200818151545608

添加一个流控规则测试下

image-20200818151620976

注意!! 接口名称填写 @SentinelResource的value值才能生效 自定义的 blockHandlerfallbackHandler

我写的接口


    @GetMapping("/testA")
    @SentinelResource(value = "testA", blockHandler = "testAHandler")
    public String testA() {
        return "----testA" ;
    }
     //自定义blockHandler 一定要传入 BlockException 否则不起效
    public String testAHandler(BlockException blockException){
        return  "testA blockException-----" ;
    }

当访问我写的接口,QPS > 1时

image-20200818152037168

blockHandler生效,配置完毕

关于fallbackHandler配置不在赘述,再就是降级规则,热点规则,系统规则等,都跟sentinel控制台配置规则差不多,也不在演示了

总之,在生产环境中使用sentinel,把规则托管在阿里云的AHAS服务,效率高也比较方便

版权声明:本文为xkuna原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xkuna/article/details/108078102

智能推荐

Sentinel配置规则持久化

前言 在上一篇,我们讲解了基于springboot与Sentinel的整合与使用,但是有个很明显的问题就是,一旦服务重启,当前配置的针对某个接口的规则就丢掉了,然后就需要重新再配一遍,这就很坑爹了,如果开发中需要配置的接口太多,这样岂不是让人疯掉 因此需要一个地方来保存dashboard中配置的规则,Sentinel提供了多种持久化的方案,可以集成redis,mysql等,这里为了演示方便,而且与...

Python+Selenium+Autolt选择本地文件上传至网站

如果网站有上传文件的功能,selenium不提供对本地元素的定位,如何使用python选择本地文件进行上传呢 可以使用Autolt工具上传文件: 1、下载网址:https://www.autoitscript.com/site/autoit/downloads/ 2、点击“Downlad ZIP”下载 3、解压缩下载的ZIP文件 4、打开脚本编辑器文件夹,有一个SciTE....

数据结构系列之一-线性表

数据结构系列--线性表 慧子和她的3D 慧子和她的3D      暑期工作搞不下去,不如趁着现在整块时间搞编程。学习资料书《大话数据结构》,前面两章的铺垫感性知识,看看过,从第三章开始正餐。 01 — 线性表 线性表:零个或多个数据元素的有限序列。用数学语言表达:       ...

Linux系统的远程操作练习

目录 一、将虚拟机Ubuntu系统的网络连接设置为“桥接模式”,并配置Ubuntu的IP、网关参数 二、在win10系统下用putty登录ubuntu系统 三、VNC server VNC viewer 思考 一、将虚拟机Ubuntu系统的网络连接设置为“桥接模式”,并配置Ubuntu的IP、网关参数 1.打开虚拟机,进入设置 点击网络适配器,选择桥...

ORACLE----TimeStamp(时间戳)自动更新

之前对id的自增长进行了设置,原以为时间戳的更新也类似,使用序列之类的,但最终发现跟序列没半毛钱关系。触发器是肯定要用的,但编写脚本也是需要的。 (1)创建触发器 图2中,我们要选择事件(即例子中的INSERT,UPDATE),触发时间(即INSERT,UPDATE事件的前或后,例子中是before),列(例子中为MODIFIED_DATE,为TimeStamp类型),新旧值(为系统默认值OLD和...

猜你喜欢

数字图像处理:对数变换

设置窗口大小的函数: namedWindow("窗口名", 0); resizeWindow("窗口名", width, height);...

LeetCode(剑指offer-tree)-面试题26. 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 树的遍历方式为:前序遍历 给定的树 A: 给定的树 B: 返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 1: 示例 2: 限制: 题源链接:https://leetcode-cn.com/problems/shu-de-z...

大数据笔记14:Zebra项目分析与实施

第14天——Zebra项目分析与实施 第一部分 Zebra项目概述 一、Zebra项目介绍 二、日志数据结构分析 三、数据以| 分割后,每个数据项的含义 四、Zebra项目整体架构 (一)技术架构 (二)工程架构 五、Zebra业务说明 六、Zebra项目设计思想 第二部分 Zebra项目实施过程 一、创建Maven项目ZebraProject 二、zebra_jobtra...

solr

概述         Solr是基于Lucene(Solr版本基本也是随着Lucene走)开发的一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引,也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果.(网上有个solr教...

Paddle2.0-通过DCGAN实现人脸生成

Paddle2.0-通过DCGAN实现人脸图像 本教程将通过一个示例对DCGAN进行介绍。在向其展示许多真实人脸照片(数据集:Celeb-A Face)后,我们将训练一个生成对抗网络(GAN)来产生新人脸。本文将对该实现进行详尽的解释,并阐明此模型的工作方式和原因。并不需要过多专业知识,但是可能需要新手花一些时间来理解的模型训练的实际情况。为了节省时间,请尽量选择GPU进行训练。 1 简介 本项目...