思考(八十八):使用 protobuf 自定义选项,做数据多版本管理

本文探讨了如何利用protobuf自定义选项进行数据多版本管理,以应对项目中数据结构随版本迭代而变化的情况。通过Etcd中WAL的Entry多版本管理案例,阐述了protobuf自定义选项的优势,包括避免DB中存储版本号,自动识别message的最大版本号,清晰定义协议版本。同时介绍了在versionpb中实践这种方法的示例和提供的API。
摘要由CSDN通过智能技术生成

数据多版本管理

项目在生产环境中,数据经版本多次迭代,数据结构也可能随之扩充

需要有方法,识别这种变化,来做数据版本升级等需求

常见的思路,如:DB 中数据带版本号,代码中数据结构定义也通过某种方式确定最新版本

最近看到 Etcd 中也提供了一种更为优雅的方式

借鉴做了下练习,并记录一二

Etcd 中 WAL 的 Entry 多版本管理

在 Etcd 版本迭代中 WAL 文件中的 Entry ,随着版本迭代,导致数据结构发生变化

Etcd 有这样的需求:自身代码中的 Entry 版本比 WAL 文件中的低时,视为错误,关闭服务

Etcd 使用 protobuf 自定义选项,来达成 Entry 的多版本定义

比如:

enum EntryType {
	option (versionpb.etcd_version_enum) = "3.0";

	EntryNormal       = 0;
	EntryConfChange   = 1; // corresponds to pb.ConfChange
	EntryConfChangeV2 = 2 [(version
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fananchong2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值