京东(JD.com)自主研发的分布式文件系统、分布式缓存与高速键值(Key-value)存储服务已经成为其开展电商业务的基石。
作为中国最大的自营式电商企业,京东用十年的时间,积累了超过4047万活跃用户。2013年,京东的订单量达到3.222亿,成交总额(GMV)超千亿元。如今,京东已经成为全球PB级数据管理俱乐部的成员。而要对PB级的数据进行有效的存储与管理,稳健、高效的大规模分布式存储体系至关重要。
京东架构委员会主任、云平台首席架构师、系统技术部负责人 刘海锋
针对电商业务中海量小文件、大文件等数据分布式存储与管理的实际需求,京东从2013年7月开始着手自主研发分布式文件系统JFS,以及分布式的缓存与高速键值存储服务Jimdb,目前已经取得了阶段性的成果。据京东架构委员会主任、云平台首席架构师、系统技术部负责人刘海锋介绍,JFS(即Jingdong Filesystem)已经陆续实现了海量小文件、对象存储、块存储、新图片系统等功能,元数据的结构化存储以及与Hadoop的集成正处在研发阶段。
“京东每天的库房记录在十亿个数量级,商品图片总共有几十亿张。这些文件基本上都是KB级别的,关系型数据库不太擅长处理这些海量小文件,主要的问题是扩容困难,且需要定期删除。而使用开源存储系统也要面临维护工作繁重,需要定制化开发等问题。”刘海锋说。
反复考察后,京东从开源定制开发转向自行研发,希望以此实现系统的灵活可控(+本站微信networkworldweixin),并且获得长期、持续的技术收益。目前已经投入使用的JFS 1.0版本类Paxos算法的强一致性,以及无单点故障、无内存索引、透明压缩等功能,有300余个京东的业务应用在其上运行。
基于内存的键值存储方面,京东最早使用的是Redis。当独立的Redis实例积累到数千个,分散系统的管理难题也随之而来。“内存超标、启动慢、难扩展等问题驱动我们在原有Redis平台的基础上去创新。”刘海锋说。目前,京东内存键值存储系统Jimdb已经能够满足电商业务所需要的精确故障监测、自动故障切换、两级存储层次、在线纵向扩展和在线横向扩容等需求,该系统的协议、数据类型全面与Redis兼容。
“JFS和Jimdb仍处在持续研发的进程之中。在未来,我们希望基于JFS开发面向文件和对象的统一存储系统。Jimdb方面,我们希望继续完善分布式缓存和快速键值存储的体系。京东的大规模分布式存储体系是真正由业务规模驱动研发的存储体系,我们希望对其不断地进行改进甚至重构,从而保持系统的质量与活力。”刘海锋说。