京东如何使用Vitess管理超大规模数据库
挑战
作为中国最大的零售商,京东的电子商务业务为三亿多活跃客户提供服务。“几年前,随着我们的数据变得越来越广泛,我们的MySQL数据库变得越来越大,导致性能下降,运营和维护成本上升。”京东零售首席架构师刘海锋表示:“我们需要一个解决方案,使我们能够轻松快速地扩展MySQL,方便操作和维护,并降低硬件和运维成本。”
解决方案
京东使用Vitess对大规模数据库服务进行可伸缩的管理,并支持MySQL服务在线扩容。“我们在Kubernetes的容器环境中运行MySQL数据库,并使用Vitess进行可伸缩的集群管理和处理大量复杂的事务数据。”海锋说。
影响
通过Vitess,京东看到了数据库集群的扩展性方面的改进,资源利用率和效率的提高,以及操作和运维职能的自动化也降低了运维和资源成本。
一些数据
超过三亿活跃电子商务客户
成千上万的MySQL容器
数以百万计的数据库表,数以万亿计的记录
作为中国最大的零售商和全球收入第三大的互联网公司,京东的电子商务业务为三亿多活跃客户提供服务。
该公司还拥有中国最大的电子商务物流基础设施,覆盖了中国99%的人口,实现了90%以上的订单在同一天或第二天送达。
“这几年京东数据库服务最大的变化是,我们的数据变得更加广泛,我们的MySQL数据库变得更大,直接导致了性能的,运营和维护成本提高,”京东零售首席架构师刘海锋,领导技术基础设施部门,负责推动基于容器基础设施的创新以及发展超大型,容器化,基于Kubernetes的平台,赋能京东所有方面的业务。他表示:“我们需要一个解决方案,使我们能够轻松快速地扩展MySQL,方便操作和维护,并降低硬件和维护成本。”
该公司以前使用JProxy,一个基于cobar而改造的数据库中间件系统来管理MySQL数据库。经过全面的评估,海锋说:“我们最终选择了Vitess,因为它是最适合解决我们面临的最大挑战:大规模数据库服务的可伸缩管理,以及支持MySQL中复杂事务数据的在线扩展。我们现在使用Kubernetes在容器化环境中运行MySQL数据库,并使用Vitess进行可伸缩的集群管理和处理大量复杂的事务数据。”
作为Vitess的早期采用者 – 同时也是全球规模最大、最复杂的vitess使用者之一 – 也面临着一些挑战。海锋说:“重新分片的过程最初是手工的,性能很差,编排器在拥有5000多个实例的大型集群中可能会失败。”
为了确保Vitess能够在京东的规模下工作,海锋的团队进行了大量的改进和更改,包括bug修复和新的功能和特性。他们还为该公司的JDOS Kubernetes平台开发了性能优化和自动化管理工具。其中包括:
- JTransfer是一个在线数据同步和传输工具,可以实时将数据从京东的传统MySQL数据库迁移到Vitess集群。Vitess中的所有拓扑信息都存储在etcd中。
- BinLake是一个MySQL binlog服务平台,以无状态集群化服务实时收集Vitess和传统MySQL数据库服务中的binlog,并将收集到的Binlog发布到消息队列服务(JMQ)。与Vitess集成后,“BinLake以集群的形式提供智能的、高可用、自动扩展的binlog收集服务,”海锋说:“如果在Vitess中有重新分片或故障转移,Binlake将自动调整binlog采集的目标数据库实例。”
- Mole是一个带有GUI控制台的Vitess管理系统,它改进了Vitess服务管理。“有了Mole,我们可以很容易地创建、重新分割、监视和备份Vitess的keyspace空间。”海锋说。
“我们的大部分改进都回馈到Vitess代码库,社区中的其他开发者可以从中受益。”海锋说。
“我们最终选择了Vitess,因为它是最适合解决我们面临的最大挑战的解决方案:大规模数据库服务的可伸缩管理。”
— 京东零售首席架构师刘海锋
通过Vitess,京东看到了数据库集群的可伸缩性和弹性方面的改进。资源利用率和效率的提高,以及操作和运维职能的自动化也导致了劳动力和资源成本的降低。
此外,“Vitess帮助团队提高了他们在可伸缩管理和弹性数据库领域的技术知识和实力,”海锋说:“Vitess是一个CNCF项目的事实意味着我们可以从与最活跃、增长最快的开源社区中的大量开发者和最终用户的合作中获益。通过CNCF的支持,Vitess可以获得越来越多的关注,吸引更多的终端用户,并将开发者聚集到项目中。这对Vitess及其终端用户非常有益,这对我们很重要。”
海锋和他的团队对Vitess的未来感到兴奋。除了将系统迁移到新发布的Vitess 3.0(海锋称之为“重大改进”),他们还在为最新版本开发一些通用功能,并开发一个更完整的操作和维护监控系统。
“Vitess是一个CNCF项目的事实意味着我们可以从与最活跃、增长最快的开源社区中的大量开发者和最终用户的合作中获益。”
— 京东零售首席架构师刘海锋
对于其他考虑使用Vitess的组织,海锋建议:“当Vitess与Kubernetes协同使用时,它可以产生最大的价值。在使用Vitess之前,有必要进行更多的测试和研究,以确定Vitess是否适合你的业务,并更好地理解你可能需要进行哪些调整,才能将其集成到现有系统中。”
对于京东来说,Kubernetes、Vitess和其它云原生技术已经改变了游戏规则。“现代服务平台需要可伸缩、高效和敏捷。”海锋说:“云原生技术非常适合处理这些不断变化的环境。它为软件服务提供了灵活性、效率、可伸缩性、独立性、持续集成和交付,所有这些都进一步提高了软件服务的质量和资源效率。Kubernetes已经成为事实上的标准,云原生是未来的必然选择。”