Pravega是一个开源的分布式流存储平台。其中,StateSynchronizer组件以stream为基础,对外提供一致性状态共享服务。StateSynchronizer允许一组进程同时读写同一共享状态而不必担心一致性问题。本文以实现一个简单的共享字典应用为示例,演示StateSynchronizer相关API的使用。
API示例
示例实现1:SharedConfig(共享配置)
在深入StateSynchronizer的使用细节之前,先让我们看一个使用StateSynchronizer的示例。本章节示例全部来自Pravega官方文档 [1]。该示例的所有源代码都可以从Pravega-Samples的GitHub仓库 [2]下载获取。这个示例程序使用StateSynchronizer实现了Java的Map
(字典)数据结构,我们不妨将其称作“SharedMap(共享字典)”。我们以这个SharedMap为基础,实现了SharedConfig。SharedConfig允许一组进程一致性地读写一个共享的,由一组键/值对属性所构成的配置对象。除了示例代码之外,我们还提供了一个命令行小程序SharedConfigCLI,让读者可以方便地体验一下这个SharedConfig应用。该示例的整体架构如图 1所示。
命令行小程序SharedConfigCLI所支持的所有命令如下:
GET_ALL: 打印SharedConfig中的所有属性。
GET {key}: 打印给定键的属性值。
PUT {key}, {value}: 用给定的键/值对更新SharedConfig。如果存在旧值,则同时将其打印。
PUT_IF_ABCENT {key}, {value}: 用给定的键/值对更新SharedConfig,当且仅当该属性不存在。