spring-cloud-tencent icon indicating copy to clipboard operation
spring-cloud-tencent copied to clipboard

【需求认领】配置中心支持本地开发模式

Open lepdou opened this issue 3 years ago • 5 comments

What is the feature you want to add? 配置中心支持本地开发模式

Why do you want to add this feature? 在某些场景下,比如:

  1. 公司外网,连不上北极星服务
  2. 没有网络
  3. 为了研发配置互相隔离,直接使用本地的配置文件

需要支持直接读取本地的配置文件作为北极星的配置来源,而不是从北极星服务端读取。

How to implement this feature?

  1. Polaris-java 支持配置缓存到本地文件,这样初始化配置文件就非常方便,把缓存的配置文件作为基准版本,然后缓存的基础上修改配置即可。
  2. SCT 支持读取本地缓存的配置文件。 2.1 SCT 可以指定本地配置文件目录作为配置来源 2.2 SCT 监听根目录的配置变更,可以动态加载配置,并触发回调。 也就说,在SCT配置 API 层面,完全和远程模式一样

Additional context Add any other context or screenshots about the feature request here.

lepdou avatar Sep 15 '22 03:09 lepdou

这个我来试试

DoubleLuXu avatar Sep 15 '22 05:09 DoubleLuXu

@DoubleLuXu 感谢支持~

Polaris-java 支持配置缓存到本地文件,这样初始化配置文件就非常方便,把缓存的配置文件作为基准版本,然后缓存的基础上修改配置即可。 SCT 支持读取本地缓存的配置文件。 2.1 SCT 可以指定本地配置文件目录作为配置来源 2.2 SCT 监听根目录的配置变更,可以动态加载配置,并触发回调。 也就说,在SCT配置 API 层面,完全和远程模式一样

上面是我初步的想法,可能有些地方没考虑周全,有更好的实现。


目前北极星的一些治理规则会缓存到 polaris/backup/ 目录下,是不是也缓存到这个目录下,比如:

polaris/backup/config/${namespace}/${file_group}/${file_name}

image

然后在 polaris-java 里,如果连不上北极星服务的时候,可以 fallback 到本地缓存。这里可以新增一个配置开关,含义是当连不上北极星服务端时,是否fallback 到本地缓存。在有些场景下,为了高一致性,可能会关闭此功能。

同时也在 polaris-java 里实现监听 polaris/backup/config 目录的变更(通过目录的元信息判断?),触发回调事件。

这样的话,都在底层 polaris-java 实现,SCT 层面就不感知,只需要覆盖一些配置。

@DoubleLuXu 你这边有详细的设计之后,可以 issue 里写一下你的思路,我们讨论一下~

lepdou avatar Sep 15 '22 06:09 lepdou

北极星的一些治理规则会缓存到 polaris/backup/ 目录下,是不是也缓存到

sorry,我刚才有点事。 这个我现在的想法是:这个属于配置方式,在polaris-java实现,SCT配置覆盖即可 1,缓存目录默认使用 polaris/backup/config 然后可以指定自己的项目配置路径,可以在本地开发的时候方便点。 2,北极星连不上是否fallback到本地缓存可以添加一个配置开关。 3,根据配置监听目录文件的变更,类似nacos中缓存文件变更,使用一个后台任务定时去扫描配置路径文件的变化,发布变更事件去触发配置的重新加载。 以上是我目前的想法,然后我还没看polaris-java的代码,我这几天研究下,有问题的话可以指出 我看代码后有新的想法也会放在这理讨论一下

DoubleLuXu avatar Sep 15 '22 09:09 DoubleLuXu

北极星的一些治理规则会缓存到 polaris/backup/ 目录下,是不是也缓存到

sorry,我刚才有点事。 这个我现在的想法是:这个属于配置方式,在polaris-java实现,SCT配置覆盖即可 1,缓存目录默认使用 polaris/backup/config 然后可以指定自己的项目配置路径,可以在本地开发的时候方便点。 2,北极星连不上是否fallback到本地缓存可以添加一个配置开关。 3,根据配置监听目录文件的变更,类似nacos中缓存文件变更,使用一个后台任务定时去扫描配置路径文件的变化,发布变更事件去触发配置的重新加载。 以上是我目前的想法,然后我还没看polaris-java的代码,我这几天研究下,有问题的话可以指出 我看代码后有新的想法也会放在这理讨论一下

3的话不要使用定时任务,这个太容易出现问题,建议尝试java.nio.file.WatchService

CherryRum avatar Sep 15 '22 15:09 CherryRum

北极星的一些治理规则会缓存到 polaris/backup/ 目录下,是不是也缓存到

sorry,我刚才有点事。 这个我现在的想法是:这个属于配置方式,在polaris-java实现,SCT配置覆盖即可 1,缓存目录默认使用 polaris/backup/config 然后可以指定自己的项目配置路径,可以在本地开发的时候方便点。 2,北极星连不上是否fallback到本地缓存可以添加一个配置开关。 3,根据配置监听目录文件的变更,类似nacos中缓存文件变更,使用一个后台任务定时去扫描配置路径文件的变化,发布变更事件去触发配置的重新加载。 以上是我目前的想法,然后我还没看polaris-java的代码,我这几天研究下,有问题的话可以指出 我看代码后有新的想法也会放在这理讨论一下

3的话不要使用定时任务,这个太容易出现问题,建议尝试java.nio.file.WatchService

👌,我看了下WatchService 确实是更好的,感谢提醒

DoubleLuXu avatar Sep 16 '22 01:09 DoubleLuXu

#640

lepdou avatar Oct 13 '22 08:10 lepdou