本文分享自华为云社区《选择KV数据库最重要的是什么?》,作者:GaussDB 数据库 。
虽然最后我也没问清楚他们业务存啥(推测是这块业务数据比较机密),但确实业务本身对可靠性要求非常高,开源Redis自身的可靠性无法满足他们的要求,最终该用户选择使用GaussDB(for Redis数据库,当前数据量已经是2TB规模,一直稳定运行中。
问题1:自建开源Redis有丢数据和数据不一致的风险
另外,开源Redis主备节点采用异步复制的机制,故障倒换的时候有可能出现明显的数据不一致,像是分布式锁这类场景就会很尴尬:
问题2:“Cache+DB”的业务架构复杂
问题3:开源Redis分片故障不能提供服务,故障场景对业务影响比较大
社区开源的项目一般都引入了RocksDB存储引擎(这东西深的很),其实能把上层KV业务变得稳定许多,通过持久化存储介质替代内存的方式来弥补开源Redis的不足。但它们无法完美解决性能、兼容性和扩容的问题,更无法保证数据库的稳定可靠,还需要投入专门的人力进行搭建维护、调优等……最终综合算下来,成本并不低。
企业级特性1:采用内存+NVMe的存储方案,全量数据三副本持久化存储
业务架构变得简单,也减轻了多套数据库的运维成本。
企业级特性2:采用存算分离的架构,支持3AZ部署和N-1故障的超高可用
同样得益于存算分离的架构,GaussDB(for Redis将全量数据落盘到分布式存储池,最多支撑N-1故障,哪怕只剩下一个节点正常,也能通过接管所有分片,继续支撑业务运行。