京東(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方面,我們希望繼續完善分布式緩存和快速鍵值存儲的體系。京東的大規模分布式存儲體系是真正由業務規模驅動研發的存儲體系,我們希望對其不斷地進行改進甚至重構,從而保持系統的質量與活力。”劉海鋒說。