DelegateConsistencyServiceImplのナコストーク

シーケンス

本稿では、DelegateConsistencyServiceImplのナコスを見ます

ConsistencyService

ナコス-1.1.3 /命名/ srcに/メイン/ javaの/ COM /アリババ/ナコス/命名/一貫性/ ConsistencyService.java

public interface ConsistencyService {

    /**
     * Put a data related to a key to Nacos cluster
     *
     * @param key   key of data, this key should be globally unique
     * @param value value of data
     * @throws NacosException
     * @see
     */
    void put(String key, Record value) throws NacosException;

    /**
     * Remove a data from Nacos cluster
     *
     * @param key key of data
     * @throws NacosException
     */
    void remove(String key) throws NacosException;

    /**
     * Get a data from Nacos cluster
     *
     * @param key key of data
     * @return data related to the key
     * @throws NacosException
     */
    Datum get(String key) throws NacosException;

    /**
     * Listen for changes of a data
     *
     * @param key      key of data
     * @param listener callback of data change
     * @throws NacosException
     */
    void listen(String key, RecordListener listener) throws NacosException;

    /**
     * Cancel listening of a data
     *
     * @param key      key of data
     * @param listener callback of data change
     * @throws NacosException
     */
    void unlisten(String key, RecordListener listener) throws NacosException;

    /**
     * Tell the status of this consistency service
     *
     * @return true if available
     */
    boolean isAvailable();
}
复制代码
  • ConsistencyService定义了、UNLISTENを、取得、削除聞き、置く、isAvailable方法

DelegateConsistencyServiceImpl

ナコス-1.1.3 /命名/ srcに/メイン/ javaの/ COM /アリババ/ナコス/命名/一貫性/ DelegateConsistencyServiceImpl.java

@Service("consistencyDelegate")
public class DelegateConsistencyServiceImpl implements ConsistencyService {

    @Autowired
    private PersistentConsistencyService persistentConsistencyService;

    @Autowired
    private EphemeralConsistencyService ephemeralConsistencyService;

    @Override
    public void put(String key, Record value) throws NacosException {
        mapConsistencyService(key).put(key, value);
    }

    @Override
    public void remove(String key) throws NacosException {
        mapConsistencyService(key).remove(key);
    }

    @Override
    public Datum get(String key) throws NacosException {
        return mapConsistencyService(key).get(key);
    }

    @Override
    public void listen(String key, RecordListener listener) throws NacosException {

        // this special key is listened by both:
        if (KeyBuilder.SERVICE_META_KEY_PREFIX.equals(key)) {
            persistentConsistencyService.listen(key, listener);
            ephemeralConsistencyService.listen(key, listener);
            return;
        }

        mapConsistencyService(key).listen(key, listener);
    }

    @Override
    public void unlisten(String key, RecordListener listener) throws NacosException {
        mapConsistencyService(key).unlisten(key, listener);
    }

    @Override
    public boolean isAvailable() {
        return ephemeralConsistencyService.isAvailable() && persistentConsistencyService.isAvailable();
    }

    private ConsistencyService mapConsistencyService(String key) {
        return KeyBuilder.matchEphemeralKey(key) ? ephemeralConsistencyService : persistentConsistencyService;
    }
}
复制代码
  • DelegateConsistencyServiceImpl ConsistencyServiceは、インターフェイスを実装;置かれ、内部の方法はUNLISTEN mapConsistencyService使用される、聞く、取得、削除さらにpersistentConsistencyService ephemeralConsistencyServiceを決定するために使用される; isAvailableに入手可能である請求ephemeralConsistencyServiceの方法とpersistentConsistencyService

概要

ConsistencyService定義PUT、UNLISTEN、聞く、取得、isAvailable方法を取り除く; DelegateConsistencyServiceImplはConsistencyServiceインタフェースを実現;プットを、削除、取得、聞く、内部UNLISTEN方法はmapConsistencyServiceがephemeralConsistencyServiceさらにpersistentConsistencyServiceを使用して決定された使用;項のisAvailable方法ephemeralConsistencyServiceとpersistentConsistencyServiceが用意されています

ドキュメント

おすすめ

転載: juejin.im/post/5d74728b51882579df5800f8