@Override
    synchronized public void registerConfigChangeWatcher(ConfigChangeWatcher watcher) {
        if (isStarted) {
            throw new IllegalStateException("Config Register has been started. Can't register new watcher.");
        }

        WatcherHolder holder = new WatcherHolder(watcher);
        if (singleConfigChangeWatcherRegister.containsKey(
            holder.getKey()) || groupConfigChangeWatcherRegister.containsKey(holder.getKey())) {
            throw new IllegalStateException("Duplicate register, watcher=" + watcher);
        }

        switch (holder.getWatcher().getWatchType()) {
            case SINGLE:
                singleConfigChangeWatcherRegister.put(holder.getKey(), holder);
                break;
            case GROUP:
                groupConfigChangeWatcherRegister.put(holder.getKey(), holder);
                break;
            default:
                throw new IllegalArgumentException(
                    "Unexpected watch type of ConfigChangeWatcher " + watcher.toString());
        }
    }
Implement Config Watcher register using a periodic sync task.
oap-server/server-configuration/configuration-api/src/main/java/org/apache/skywalking/oap/server/configuration/api/FetchingConfigWatcherRegister.java