微服务之间的通讯安全-sentinel入门之规则持久化(代码片段)

caofanqi caofanqi     2023-04-19     190

关键词:

规则持久化

  现在我们配置的规则实际上是在内存中的,如果客户端应用配置中有控制台(dashboard),当流量经过客户端的时候,会把规则同步给控制台;同样当在控制台配置规则后,也会把规则推送给相应的客户端。规则都是存放在两边的内存中,一旦控制台或客户端重启,内存中的规则就消失了。如下图:

技术图片技术图片

  我们需要一个远程的配置中心,将规则都存放在里面,如下图,当控制台有规则变化时,将规则推送到远程配置中心进行持久化,如果远程配置中心有规则变化,可以推送给客户端,这样的话,不管是客户端还是控制台重启,都不会丢掉现有的规则配置。

技术图片

技术图片

远程配置中心支持的组件有很多,如:ZooKeeper 、Nacos 、Apollo 等,这里我们使用ZooKeeper 作为配置中心。

1.1、准备zookeeper,下载连接http://mirror.bit.edu.cn/apache/zookeeper/stable/

1.2、改造控制台

  1.2.1、下载或克隆Sentinel项目到本地 https://github.com/alibaba/Sentinel/tree/release-1.7 ,通过IDE打开sentinel-dashboard项目

  1.2.2、将pom中的zookeeper客户端curator依赖的scope去掉

技术图片

  1.2.3、将testjavacomalibabacspsentineldashboard ulezookeeper移动到mainjavacomalibabacspsentineldashboard ule下

技术图片

  1.2.4、将com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2中的DynamicRuleProvider、DynamicRulePublisher 引用的名字修改为zookeeper的

技术图片

   1.2.5、将sidebar.html中的dashboard.flowV1改为dashboard.flow

技术图片

   1.2.6、如果需改端口,或登陆的用户名和密码可以在application.properties中进行修改

技术图片

1.3、改造客户端

1.3.1、客户端pom添加配置数据源依赖sentinel-datasource-zookeeper,因为spring-cloud-starter-alibaba-sentinel中的sentinel为1.5.2,这是使用一样的

        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-zookeeper</artifactId>
            <version>1.5.2</version>
        </dependency>

1.3.2、配置Sentinel从Zookeeper中获取配置。

 技术图片

/**
 * 从远程配置中心获取规则,进行配置
 *
 * @author caofanqi
 * @date 2020/2/11 15:50
 */
@Component
public class SentinelConfig

    @Value("$sentinel.zookeeper.address")
    private String remoteAddress;

    @Value("$sentinel.zookeeper.path")
    private String path;

    @Value("$spring.application.name")
    private String appName;


    @PostConstruct
    public void loadRules()
        //流控规则数据源
        ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new ZookeeperDataSource<>(remoteAddress, path + "/" + appName,
                source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() ));
        FlowRuleManager.register2Property(flowRuleDataSource.getProperty());

        //....
    

1.4、测试

1.4.1、启动认证服务器、zk,sentinel控制台、客户端order服务,给order服务访问流量,登陆sentinel客户端,为createOrder设置流控规则

技术图片

1.4.2、通过zk客户端可以看到,规则已经持久化进去了

技术图片

1.4.3、重启sentinel控制台、客户端order服务,快速访问创建订单,流控生效

技术图片

 1.4.5、打开sentinel控制台,也可看到规则还在。

 

注意:以上,只实现了流控规则的持久化。例如降级规则、系统规则、热点规则等,都需要使用类似的方式,修改 com.alibaba.csp.sentinel.dashboard.controller 包中对应的Controller,才能实现持久化。

 

项目源码:https://github.com/caofanqi/study-security/tree/dev-sentinel4

springcloud微服务安全实战_6-1_微服务之间的通讯安全之概述

   到目前为止已经实现了一个基于微服务的,前后端分离(这里我用的jquery做的,并不是真的前后端分离,因为我不会vue和angular所以没用)的架构。在网关上做了限流、认证、审计、授权等安全机制,在前端应用上... 查看详情

springcloud微服务快速教程之springcloudalibaba--sentinel-限流熔断降级

0、前言  sentinel的限流、降级功能强大,可以在控制面板中任意制定规则,然后推送到微服务中;  可以根据URL单独制定规则,也可以根据资源名批量制定规则;  需要注意的地方是:1、GITHUB文件在国外的亚马逊服务器... 查看详情

微服务springcloudalibaba之sentinel篇,使用熔断器防止雪崩

...+配置中心的组合第三篇:微服务SpringCloudAlibaba之Sentinel篇,使用熔断器防止雪崩第四篇:SpringClou 查看详情

微服务之间的通讯安全-jwt优化之日志错误处理限流及jwt改造后执行流程梳理(代码片段)

  前面我们已经完成了通过JWT的认证和授权的改造,可以看到我们的代码中没有认证和授权的过滤器(Filter)了,基本上由SpringSecurity的过滤器来接管了,接下来我们来看一下怎么在SpringSecurity的过滤器链上加上我们自己的逻... 查看详情

配置容错组件sentinel(代码片段)

Sentinel内容一、服务熔断降级Sentinel1.高并发带来的问题2.服务器雪崩效应3.常见容错方案4.常见的容错组件二、Sentinel入门1.什么是Sentinel2.订单微服务集成Sentinel3.安装Sentinel控制台4.实现一个接口的限流5.Sentinel容错的维度6.Sentinel规... 查看详情

sentinel微服务组件sentinel控制台的规则配置(代码片段)

文章目录1.Sentinel控制台介绍2.实时监控3.簇点链路4.流控规则4.1流量控制4.2并发线程数4.3流控模式4.4流控效果5.降级规则5.1熔断策略5.2异常比例5.3异常数6.热点参数限流7.系统规则8.授权控制规则9.集群规则1.Sentinel控制台介绍Sentinel... 查看详情

sentinel微服务组件sentinel控制台的规则配置(代码片段)

文章目录1.Sentinel控制台介绍2.实时监控3.簇点链路4.流控规则4.1流量控制4.2并发线程数4.3流控模式4.4流控效果5.降级规则5.1熔断策略5.2异常比例5.3异常数6.热点参数限流7.系统规则8.授权控制规则9.集群规则1.Sentinel控制台介绍Sentinel... 查看详情

springcloud微服务springcloudalibabasentinel使用详解(代码片段)

...3.2.1什么是服务熔断3.2.2 服务熔断思考3.3 服务降级四、Sentinel介绍4.1 Sentinel是什么4.2 Sentinel主要特征4.2.1丰富的应用场景4.3  Sentinel与hystrix对比五、Sentinel各类流控规则5.1 规则种类5.1.1Sentinel支持的规则5.2  Sentinel流控规则5.2.... 查看详情

sentinel降级规则简介与实践

...我们详细的介绍了流量控制规则,这篇博文我们重点介绍Sentinel另外一个重要的使命:熔断降级。文章目录什么是熔断降级熔断降级设计理念对熔断降级规则整体认识熔断策略慢调用比例案例异常比例案例异常数案例总结代码示... 查看详情

sentinel微服务组件sentinel控制台的规则配置(代码片段)

文章目录1.Sentinel控制台介绍2.实时监控3.簇点链路4.流控规则4.1流量控制4.2并发线程数4.3流控模式4.4流控效果5.降级规则5.1熔断策略5.2异常比例5.3异常数6.热点参数限流7.系统规则8.授权控制规则9.集群规则1.Sentinel控制台介绍Sentinel... 查看详情

微服务-springcloud学习系列:熔断保护sentinel

Sentinel支持信号量隔离(不支持线程池隔离),多种熔断降级策略,支持QPS流量控制。Sentinel是Hystrix的替代方案。Sentinel的核心概念:资源,规则,检验规则是否生效。1.Sentinel的使用①安装管理控制台(去官网下载对应的jar包,... 查看详情

sentinel:微服务哨兵(代码片段)

1.Sentinel是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel具有以下特征:丰富的应用场景:Sentinel承接... 查看详情

sentinel分布式服务架构高可用流量防护组件之微服务保护(代码片段)

...10719093325250【3】熔断器【4】流量控制3.服务保护技术二、Sentinel流量控制1.Sentinel介绍2.Sentinel安装3.Jmeter测试【1】安装与启动【2】基本使用三、微服务整合Sentinel1.流量控制【1】什么是簇点链路【2】流控模式1)直接模式2& 查看详情

ali流量控制中间件sentinel

...接: https://blog.csdn.net/u012190514/article/details/81383698 Sentinel 是什么  随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量... 查看详情

微服务保护--sentinel(代码片段)

...崩问题解决办法二、服务保护技术的对比三、安装并整合Sentinel控制台四、限流规则簇点链路流控模式流控效果热点参数限流五、隔离和降级Feign整合Sentinel线程隔离熔断降级六、授权规则七、自定义异常结果八、规则持久化规则... 查看详情

sentinel介绍与微服务整合(代码片段)

文章目录1.Sentinel介绍和整合1.1Sentinel概念1.2Sentinel特性1.4Sentinel工作机制1.3Sentinel安装2.服务保护技术对比3.微服务整合Sentinel1.Sentinel介绍和整合1.1Sentinel概念随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentine... 查看详情

sentinel介绍与微服务整合(代码片段)

文章目录1.Sentinel介绍和整合1.1Sentinel概念1.2Sentinel特性1.4Sentinel工作机制1.3Sentinel安装2.服务保护技术对比3.微服务整合Sentinel1.Sentinel介绍和整合1.1Sentinel概念随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentine... 查看详情

sentinel介绍

...的流行,服务和服务之间的稳定性变得越来越重要。Sentinel作为一个流量控制组件,是如何从流量控制、熔断降级、系统自适应保护等多个维度来保障微服务的稳定性的。1.简介随着微服务的流行,服务和服务之间的... 查看详情