书籍作者:京东商城基础架构部 | ISBN:9787121328657 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:8719 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《京东基础平台建设之路(全彩)》内容涵盖分布式存储、数据库、容器集群、服务框架、消息队列、异地多活、机器学 习等一系列经典技术话题,深入浅出地向读者展示了京东基础架构的搭建、演进、变革及发展 的完整画像,系统地阐述了京东重要阶段的技术进步历程及里程碑级别的技术突破,堪称是一 部“从入门到精通”的基础架构经典教材。作为过去几年里推进京东基础架构变革的技术实践者,我们乐于把自己的经验分享给更多的基础架构从业者或感兴趣的人,技术无止境,愿我们一路相伴共创奇迹。
京东商城基础架构部是京东商城的一级部门,专注于核心基础技术的自主研发与工程实施,涉及的技术有数据中心集群管理、数据库系统与分布式存储、电商中间件技术、商城整体架构提升、机器学习与知识工程,为618和双11大促作强有力的技术支撑,是京东商城的技术基石。
从无到有的架构建设之路,逐步解决业务痛点;
一线架构师的前线战报,为618、11.11保驾护航;
全面解析京东基础架构技术,承载亿级规模存储和流量的基础架构实践;
集诸多热点技术之大成:容器/数据库/存储/中间件/全链路军演/异地多活/电商中的机器学习应用。
很幸运地在2013年5月加入京东,更加幸运地遇到了一批优秀的同事,在接下来的4年半的时间里,兄弟们并肩作战,自主研发并持续建设了一系列核心基础架构系统。我们将这几年的工作成果及经验整理总结,写在书中分享出来,希望能给大家带来收获!
第1章“容器集群技术”,主要介绍数据中心操作系统JDOS,即容器集群管理平台。经历过物理机管理分配的各种痛苦后,我们在2014年8月启动了JDOS项目,做了一个简单、勇敢、并不艰难的决定:跨过VM时代,直接基于Docker做容器!而当时大部分公司是通过虚拟化技术提供私有云服务的。不走寻常路,使得我们团队在容器集群技术领域走在前面。从最初很小的规模,到管理几乎所有服务器;从仅调度应用容器,到统一集成中间件、存储和数据库服务;从很像VM的“胖容器”,到应用集群编排;从非常像IaaS,到更接近PaaS……总之,这4年的容器化集群管理技术实践,让我们亲眼见证、亲手推动了一系列变革。JDOS团队这4年只做这一件事情,一件事持续做,就做得很不平凡。JDOS团队当前着力推进“阿基米德项目”,即融合计算资源管理、统一在线与离线混部,预期在2018年全面上线并创造巨大的收益。
第2章“数据库技术”,主要介绍了弹性数据库系统的演进。历经SQL Server、Oracle、物理机部署MySQL,从2015年起我们逐步以“MySQL in Docker”作为数据库服务的主流方式。京东很可能是第一家普遍采用容器化MySQL交付的国内互联网公司。2016年秋,我们在此基础上立项实施弹性数据库项目(简称JED),目标是实现关系型数据库的弹性扩展能力。JED可以称为一套fully cloud-native NewSQL:运行于JDOS 2.0之上,完全容器化部署;具备scale up/down (通过容器技术本身)+ scale out/in(通过过滤复制协议)两种弹性伸缩能力,并且支持服务器与数据中心两个级别的扩展性;基于MySQL作为其存储与复制引擎,且兼容MySQL协议便于应用接入。JED站在JDOS肩膀上,吸收了京东文件系统JFS、缓存平台JIMDB等分布式存储系统的设计经验。从今年(2017年)618之后,JED就成为京东所有应用默认的数据库服务。
第3章“分布式存储技术”,主要介绍京东文件系统JFS及商品图片系统。JFS为解决海量小文件的分布式存储问题而生,亦为之量身定制。2013年我初到京东,当时订单文本、物流报文等BLOB主要存储在数据库中,导致扩展性受限只能定期删除;商品图片服务由一套开源系统搭建,稳定性与性能都不甚理想。于是披星戴月地开发了第一个系统——JFS,服务端用Go语言,客户端用Java语言,并在当年10月上线,陆续承载了OFC订单履约、WMS库房报文等业务的海量数据。2014年年初,基于JFS的新图片系统成功上线——按照历史图片迁移、数据校验、流量切换三步走,历时一个半月,顺利完成切换。我至今记得切换完成的那天晚上,跟几位兄弟击掌相庆的情景,胜利的喜悦总是让人记忆犹新。之后,JFS增加了大文件存储、元数据管理及S3兼容等功能;图片系统则在质量优化、透明压缩等方面不断提高。四年间,商品图片数目从数亿一路增长至数百亿,而JFS与图片系统一直稳定如初。
第4章“中间件技术”,主要介绍以服务框架JSF、消息队列JMQ、缓存平台JIMDB为代表的中间件技术体系。对国内任何一家电商公司来说,中间件系统都是一块核心的技术基石。质量则是中间件技术的生命线。我们在2014年年初自主研发服务框架JSF、消息队列JMQ、缓存平台JIMDB。每个系统差不多都是开发测试一年,推广完善一年。自2016年开始,整个中间件体系步入稳定期,使得业务开发团队能够完全专注于产品功能实现。中间件系统的自主可控能力,加上全托管式服务,大幅提升了产品研发效率。JSF几乎部署在京东的每个IP上,被每个Java应用程序所import;JMQ是订单、支付、履约、物流的数据管道,也是每次大促前军演性能比赛的第一名;JIMDB则从无到有,逐步发展到今天多个IDC数千台大内存服务器的部署规模,并存储京东商城几乎所有的动态内容——JIMDB是世界级的memory-asthe-new-disk NoSQL服务。
第5章“整体架构升级”主要介绍了“ForceBot :全链路军演机器人”和“异地多活”两部分内容。
◎ ForceBot :全链路军演机器人。每年618、双11两次大促的技术备战,是京东研发团队的重要工作,而其中一个关键环节就是做充分的、全面的压力测试来有效地发现性能瓶颈并指导资源规划。各个服务的独立压测既不能模拟真实线上的流量状况,也不能全链条覆盖各个环节;往年常用的订单后军演仅覆盖到订单后系统,而大促流量压力主要在订单前。基于数次大促备战经验,我们在2016年着手建设ForceBot,即全链路在线军演压测系统,并推动各个应用系统与基础系统改造来支持“forcebot=1”在线压测流量标识。ForceBot通过部署在各地CDN节点的机器人程序来模拟海量用户的实际行为,包括登录、浏览、搜索、点击、加购物车、下单提交、支付等购物全流程,向京东公网入口发起对应千万用户同时在线的巨大访问流量。2016年双11,ForceBot小试牛刀,初见效果;2017年618即全面实施,成为大促前备战工作的重要组成部分,也是资源规划与性能优化的主要手段。ForceBot使得如今的大促备战智能化、常态化。
◎ 广域分布架构,俗称“异地多活”。不同公司、不同技术团队,对所谓“异地多活”可能有不同理解。“异地多活”这个形象的词汇,描述的是工程结果的表象,并非动机或者目标。从我们的思考角度,做异地多活,主要出发点是什么?公司持续增长的各项业务使得我们需要不断去寻找更大的机房,但这在同一地区并不现实。核心目标是什么?实现数据中心粒度的容量扩展,即通过增加IDC提供资源弹性。相比之前的增加服务器来扩展某个系统,这是分布式架构的更高级形式:多地域多IDC分布式架构;从数据中心角度,实际上是多个不同地域、不同规格的数据中心,形成一个逻辑上更大的数据中心。至于更强的容灾能力和用户就近接入,则是异地多活的附加收益。在切身经历同城单机房、双机房、数次扩容机房之后,我们在2017年年初开始做项目规划,然后进行系统设计、技术改造,并在2017年10月完成第一期实施。异地多活架构升级,我们实施得并不算早,但是采用了与同行不同的技术方案:完全在中间件层面做改造,对应用系统完全透明。当然,弹性数据库JED也是实现商城广域分布架构的核心组件。
第6章“机器学习技术”主要介绍京东商城基础架构中的机器学习与知识工程。我个人非常相信:AI = Machine Learning + Knowledge Engineering。机器学习与知识工程会成为新的基础设施、所有应用共享的技术服务。自2016年8月,我和团队一起,积极开展针对商品图片的视觉计算相关研究、开发与应用;并着力建设针对商品数据的京东知识图谱,向上提供Knowledge as a Service优化原有业务并赋能创新产品。JDOS的大规模计算资源调度能力,特别是CPU/GPU统一服务,为机器学习、深度学习、数据挖掘和多模态数据清洗提供了强有力的底层支撑。此外,我们正在研发新一代图数据管理与计算系统——“波特”,旨在将知识图谱塑造为强大的知识计算引擎。很多激动人心的项目,都在积极进行之中。
以上所述这些工作,紧密联系、互相支撑,共同组成了京东商城的技术基础架构,大规模部署于京东多个数据中心的数万台物理服务器上,运行着无数的在线业务,并产生、存储、处理着海量的电商数据。在过去四五年的时间里,在不断迭代的研究、设计、开发、测试、维护、优化、升级的过程中,无论是我个人还是团队里的其他兄弟,都深刻感受到技术本身强大的力量。我们对互联网技术的热爱与憧憬,永远如初。
感谢中国互联网,特别是电商业务的高速发展,感谢京东集团过去几年里梦幻般的发展速度,给了我们这些技术从业者最好的舞台。感谢我们的家人、公司领导与同事的大力支持。最想感谢的,是奋斗在第一线的所有京东研发人员!
本书撰写在日常工作之余,时间仓促,不准确或遗漏之处在所难免,欢迎各位读者的批评与反馈。里面所介绍的各个项目或者系统,仍然在持续建设之中,后续的新成果,我们会通过各种方式与本书的读者分享和交流。
刘海锋
京东商城总架构师、基础架构部负责人
第1 章
容器集群技术
1.1 概述 3
1.2 JDOS 1.0:“胖容器”时代 3
1.3 JDOS 2.0:新一代应用容器引擎 9
1.4 JDOS 3.0:服务融合平台 15
1.5 JDOS 4.0:弹性数据计算 18
1.6 总结 22
第2 章
数据库技术
2.1 发展历程 25
2.2 BinLake日志订阅服务 27
2.3 弹性数据库 33
第3 章
分布式存储技术
3.1 JFS:京东文件系统 47
3.2 JIMDB:内存是新的磁盘 52
3.3 FBase:大表存储 60
3.4 Container File System 66
第4 章
中间件技术
4.1 服务框架 75
4.2 消息队列 88
4.3 JMQ复制技术解析 101
4.4 CallGraph:分布式服务跟踪系统 112
第5 章
整体架构升级
5.1 ForceBot :全链路军演机器人 125
5.2 异地多活 133
第6 章
机器学习技术
6.1 基于机器学习的商品数据治理 145
6.2 智能分单 155
6.3 列表页排序 156
6.4 语音识别与客服导航 159
6.5 商品上新助手 161