zenoh 存储复制以及校准
zenoh通过存储管理插件可以灵活的支持存储的处理(通过key_expr 配置存储位置,进行分片)同时对于处理的key 会自动进行持久化
但是如果是多个节点的就会存在一致性的问题,zenoh 提供了最总一致性语义可以进行数据的校准
参考配置
- zenoh 1.0.0 之后版本的
"plugins": {
"storage_manager": {
"storages": {
"replication-test": {
"key_expr": "test/replication/*",
"strip_prefix": "test/replication",
"volume": "memory",
// This field was named replica_config.
"replication": {
// This field was named publication_interval.
"interval": 10,
// This field was named delta.
"sub_intervals": 5,
"propagation_delay": 250,
// These fields did not exist before.
"hot": 6,
"warm": 30,
}
}
}
}
}
早期版本
{
plugins: {
storage_manager: {
storages: {
demo: {
key_expr: "demo/memory/**",
volume: "memory",
replica_config: {
publication_interval: 5,
propagation_delay: 200,
delta: 1000,
}
}
}
}
}
}
说明
配置复制校准策略可以实现数据的最终一致性,利用好配置策略可以实现数据访问的可靠性,内部zenoh 实际上包包含了long running 任务进行数据处理,详细的可以通过阅读源码学习
参考资料
plugins/zenoh-plugin-storage-manager/src/replication/service.rs
plugins/zenoh-plugin-storage-manager/src/replication/core.rs
https://zenoh.io/blog/2022-11-29-zenoh-alignment/
https://zenoh.io/blog/2024-10-21-zenoh-firesong/#storage-alignment-protocol