dashborad 支持持久化么?[阿里云消息队列MQ]

dashborad 支持持久化么?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. sentinel-dashboard默认使用内存存储数据,可以通过简单的配置,把数据源设置为nacos,实现持久化

  2. 我们知道,Sentinel dashboard默认是是没有持久化功能的,都是保存在内存中的,对于sentinel客户端同样如此,当在sentinel dashboard配置规则的时候,dashboard会获取对应应用配置的dashboard给应用传递消息的http,将规则通过HTTP请求发送给sentinel客户端,同样,sentinel客户端也是没有持久化的都是放在内存中的。 sentinel dashbord通过HTTP向sentinel客户端获取客户端的限流配置,而在dashboard更新配置之后则通过HTTP向sentinel客户端推送更新的限流配置。 sentinel dashboard和sentinel客户端两个都各自开启了HTTP服务用来通信,sentinel dashboard开启的是一个正常的web应用,比如默认用spingboot就是基于tomcat,而sentinel客户端同样也会开启端口,让dashbaoard请求发送消息给sentinel客户端,值只不过这个客户端是一个简易的HTTP实现,实现就是基于常规的ServerSocket去实现的。而不管是sentinel dashboard将规则推送给sentinel客户端,还是sentinel客户端将相关信息推送给sentinel dashboard,sentinel dashboatd和sentinel客户端都是保存在内存中的 如果sentinel-dashboard重启,或者sentinel客户端重启,两者数据都会丢失,这对于生产肯定是不行的,因此需要进行持久化。 查看相关源码之后,我觉得可以通过两种方式

    sentinel提供了DataSource方式,将需要保存的数据放在datasouce中,dashboard操作datasouce中数据,而sentinel客户端则从datasouce中拉取数据 这里我们以网上常说的基于Nacos为例来说明。

    Sentinel Datasource 在说这个之前,需要说下sentinel中的Datasource,可以理解为这是对sentinel配置存储的一个抽象, 我们以大家常见的spring cloud位列,说下这个是怎么生效的。 在sentinel spring cloud中,提供了SentinelProperties的配置类,其中有一个: private Map datasource = new TreeMap<>( String.CASE_INSENSITIVE_ORDER);则是配置Datasource的入口, 而DataSourcePropertiesConfiguration中有如下几种配置:

    public class DataSourcePropertiesConfiguration {private FileDataSourceProperties file;private NacosDataSourceProperties nacos;private ZookeeperDataSourceProperties zk;private ApolloDataSourceProperties apollo;private RedisDataSourceProperties redis;private ConsulDataSourceProperties consul;}