简介:有赞在早期使用MySQL和codis后,因业务需求转向aerospike作为KV存储方案。随着业务增长,aerospike无法满足需求,有赞自研了基于开源技术的ZanKV分布式KV存储服务,以满足未来多年的业务需求。
在有赞的发展历程中,存储和缓存方案的选择与升级一直是技术团队关注的重点。早期,有赞主要依赖MySQL作为存储系统,codis作为缓存系统来支撑业务的发展。然而,随着业务的不断扩展和深化,团队发现MySQL在某些业务场景下并不适用,而codis作为缓存系统,也并不适合作为长期的存储解决方案。
面对这一挑战,有赞技术团队开始寻找一款高性能的NoSQL产品来补充现有的存储方案。在经过对多个开源产品的评估和对比后,团队最终选择了aerospike作为KV存储方案。aerospike作为一款成熟的商业化开源产品,以其稳定性和高性能在有赞的过渡时期发挥了重要作用,满足了大量的业务需求,并为团队解决了其他中间件问题提供了时间和空间。
然而,随着有赞业务的快速发展,单纯的aerospike集群逐渐开始无法满足越来越多样化的业务需求。尽管其性能和稳定性依然出色,但由于其索引必须加载到内存,对于日益增长的海量数据,存储成本会不断攀升。此外,更多的业务需求也决定了有赞需要更多类型的数据结构来支持业务的持续发展。
为了充分利用已有的aerospike集群,并满足未来多年的业务需求,有赞技术团队决定构建一个自研的分布式KV存储服务。在设计这样一个能满足未来多年发展的底层KV服务时,团队考虑了多个方面,包括使用有大厂背书且活跃的开源产品、避免完全依赖和耦合一个开源产品、避免使用过于复杂的技术栈增加后期运维成本等。
基于这些考虑,团队选择了使用Go语言开发自研的ZanKV分布式KV存储服务。ZanKV利用了高效的Go语言开发效率,减少了后期维护难度,并方便后期定制。同时,它还使用了大厂且成熟活跃的开源组件,如etcd raft和RocksDB等,以减少开发工作量。
在架构设计上,ZanKV采用了proxy屏蔽后端细节的方式,并使用广泛使用的redis协议作为对上层业务的接口。这种方式不仅充分利用了开源的redis客户端产品减少了开发工作量,还减少了业务的接入学习成本,并实现了对已经使用的aerospike集群和codis集群的平滑整合,减少了业务迁移工作量。
在内部实现上,ZanKV选择了RocksDB作为单机的高性能高可靠的KV存储引擎,并在其上构建了一个数据映射层来满足redis协议中丰富的数据结构需求。为了保证数据的可靠性,ZanKV还通过raft一致性协议将数据复制到多台机器上,确保多台机器副本数据的一致性。
此外,为了支持海量数据并实现无限扩展的目标,ZanKV还引入了raft group分区概念和前缀hash分区算法。这些技术的引入使得ZanKV能够通过不断增加raft分区的方法来实现同时并行处理多个raft复制的能力,并保证前缀相同的数据全局有序,满足一部分业务需求的同时,减少了开发成本,保证了系统能尽快上线。
考虑到有赞未来的业务会越来越多,ZanKV还引入了namespace的概念,以隔离不同业务并方便加入新的特性。通过namespace,有赞可以把一些核心的业务和非核心的业务隔离到不同的namespace里面,也可以将不兼容的新特性加到新的namespace给新业务用,而不会影响老的业务,从而实现平滑升级。
如今,ZanKV已经成功部署在有赞的生产环境中,并稳定运行。它不仅满足了有赞当前的业务需求,还为未来的业务发展提供了强有力的支撑。同时,ZanKV的成功部署也充分展示了有赞技术团队在分布式存储领域的实力和经验。
值得一提的是,在构建ZanKV的过程中,有赞技术团队也充分考虑了与现有系统的兼容性和整合性。通过与aerospike的AP系统结合,ZanKV的CP系统能够满足不同的需求,提供更丰富的数据结构,并支持更大的容量。在与aerospike结合使用的情况下,ZanKV能够在不损失性能需求的前提下大大减少存储成本。
展望未来,有赞将继续秉承开放、合作、创新的精神,不断探索和引入新的技术成果和开源产品来进一步扩展和优化ZanKV的服务能力。同时,有赞也将继续加强与开源社区的合作和交流,共同推动分布式存储技术的发展和进步。
在构建分布式KV存储服务的过程中,有赞技术团队也深刻体会到了开源技术的重要性和价值。通过利用开源技术,有赞不仅能够快速响应业务需求,降低开发成本,还能够享受到开源社区的技术支持和迭代更新。未来,有赞将继续关注和引入更多的开源技术,为业务发展提供更加强有力的技术支撑。
此外,在构建分布式存储服务的过程中,有赞也充分考虑了数据的安全性和可靠性。通过采用raft一致性协议和多个副本的数据存储方式,ZanKV能够保证数据的高可靠性和一致性。同时,有赞还采用了多种安全措施来保护数据的安全性和隐私性,确保用户数据的安全和合规。
在运维和监控方面,ZanKV也提供了完善的运维和监控工具。通过这些工具,运维人员可以实时监控系统的运行状态和性能指标,及时发现和处理潜在的问题和风险。同时,ZanKV还支持自动化的运维和部署,降低了运维成本和提高了运维效率。
总的来说,自研ZanKV分布式KV存储服务是有赞技术团队在分布式存储领域的一次重要尝试和创新。通过利用开源技术和自主研发相结合的方式,有赞成功构建了一个高性能、高可靠、可扩展的分布式KV存储服务,为业务的持续发展提供了强有力的支撑。未来,随着技术的不断进步和业务的发展需求,有赞将继续优化和扩展ZanKV的服务能力,为用户提供更加优质和高效的服务体验。例如,引入千帆大模型开发与服务平台提供的AI技术来优化数据存储和检索的效率,或者利用曦灵数字人进行智能化的运维和监控等,都是有赞未来可以考虑的技术升级方向。