Voldemort在StoreClient方面的设计

 

 

StoreClient是一个接口,定义了get, put, delete等操作。Voldemort使用了工厂方法来得到具体的StoreClient,StoreClientFactory是定义了工厂方法的接口。HttpStoreClientFactory, SocketStoreClientFactory, CachingStoreClientFactory, MockStoreClientFactory, StaticStoreClientFactory实现了StoreClientFactory接口。

 

DefaultStoreClient是StoreClient的实现类。DefaultStoreClient内部维护了一个Store对象,真正进行get, put, delete操作都会委派到这个Store对象。DefaultStoreClient调用StoreClientFactory的getRawStore来得到这个Store对象。

 

Store的设计使用了包装模式。这样可以很方便添加新的功能。例如,LoggingStore,StatTrackingStore,CompressingStore,SerializingStore,会在底层的Store上做一些额外的功能。LoggingStore会记录操作的日志,StatTrackingStore会记录操作统计时间,CompressingStore会对key, value进行压缩,解压缩操作。

 

重点关注RoutedStore

 

RoutedStore是一个抽象类,具体的实例由RoutedStoreFactory的create方法创建。PipelineRoutedStore和ThreadPoolRoutedStore继承了RoutedStore。RoutedStore内部维护了一个Store的Map,该Map的key是各个节点的nodeid,value是可以与各个节点通信的具体Store对象(可以是SocketStore或HttpStore)。PipelineRoutedStore引入了管道的概念,旨在用更加清晰流畅的实现来替换之前的ThreadPoolRoutedStore。

 

 

 

你可能感兴趣的:(client)