数字货币与数据库,底层到底怎么衔接
数字货币和数据库,很多人觉得是两件事。但做过底层架构就知道,交易跑不跑得通数字货币与数据库,底层到底怎么衔接,全压在数据库选型上。
数字货币每笔交易都要校验、上链、写入。数据库最要命的不是吞吐量,是高并发下的强一致性写入。交易所高峰期每秒几万笔订单,P99延迟一旦超个位数毫秒,撮合引擎直接卡死。
用MySQL做账务,分库分表搞到后面就乱。数字货币账本天生是链式结构,追加写、不可篡改,跟增删改查的逻辑天然冲突。硬套的话,回滚和更新全变成负担,性能白损耗一半。
现在主流做法是分层。底层用分布式键值存储扛交易写入,比如RocksDB或CockroachDB做共识节点存储;上面叠一层关系型库处理查询和风控报表。两层解耦,扩容各管各的。
去年帮银行做数字货币试点,踩了个坑:链上数据和链下库放同一机房,网络一抖,同步延迟飙到两百毫秒数字货币与数据库,对账直接报错。独立出同步通道后压到十毫秒才稳。数据库选型不只是选产品,部署拓扑和容灾策略才是决定生死的东西。

