シーケンス
本稿では、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が用意されています