Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

京东私有云建设:挑战与应对之道

  • 2015 年 4 月 07 日
  • 本文字数:4431 字

    阅读完需:约 15 分钟

去年的双十一过后,InfoQ 曾经采访过京东云平台首席架构师刘海锋。刘海锋,2013 年加入京东,担任云平台首席架构师、系统技术部负责人,主持建设存储、中间件、弹性计算等私有云技术体系。

3 月 31 日,在华为 ICT 巡展北京站的活动中,刘海锋分享了《京东基础云服务技术演进》。

基础云服务支撑着京东很多业务的发展。它可以分为三个层次,包括底层的存储服务,核心的中间件以及上层的弹性计算云,通过 API 以服务的形式支撑其他业务单元。下面我们分别来看一下。

存储是互联网公司最基础的东西。这也是开发团队花精力最多,持续迭代的一个技术方向。

挑战 1:非结构化存储

京东每天有千万级的商家上传图片,用户浏览完图片后会产生交易订单,需要很多文本来描述这些订单。另外京东有自己的库房,任何一份订单经过拆分,经过库房的流转,每一分订单又会产生几十份非结构化的数据,涉及商品的入库、出库、调拨等。商品送到客户手中之后,还有签单信息、银行小票,未来这些信息的电子化、和银行对账,又是很多非结构化的数据。

非结构化的数据越来越多,如何存储这些数据?商家的图片、交易的订单、库房的记录、电子签收的信息,这些数据都是非常关键的,而且这些数据有一个特点,量比较大,但每份数据一般都比较小。

JFS:Jingdong Filesystem

京东针对非结构化数据开发了大规模分布式存储系统 JFS(Jingdong Filesystem),支持 BLOBs/files/blocks。现在这个系统已经到了 3.0 版本,可以统一管理小的对象、大的文件以及私有云中可持久化的块设备。

技术方面,因为数据不能丢失,所以从一开始就讲究强一致的复制,使用了 Paxos 复制;在存储引擎以及各种数据模型上采用了统一的存储管理;随着规模的增大,到了几 PB 数据的时候,采用了 Reed-solomon 码来降低存储成本;元数据的管理和 Hadoop 的集成方面,目前也有不错的进展和落地的应用。

目前该系统已经在支撑京东商城的如下服务:

  • 图片服务
  • 订单履约
  • 物流数据交换
  • 电子签收
  • 内部云存储服务
  • 虚拟机与容器卷存储

挑战 2:越来越多的缓存

为保证快速响应,很多数据都会放到内存里,比如商品的价格,搜索推荐的结果等。越来越多的缓存,越来越多的大内存机器,不同的业务,如何管理它们也是很大的挑战。最早,很多小规模的公司可能会采用 Memcached、Redis 等,但当到了很大规模的时候,技术也会发生质变。

Jimdb:分布式缓存与高速 NoSQL

Jimdb 是京东研发的企业级 NoSQL 服务,能够统一做分布式的缓存,也能做高速的键值存储,完全兼容 Redis 的协议。与 Redis 相比,它有如下特性:

  • 精确故障检测与自动切换
  • RAM/SSD 混合存储
  • 在线横向扩容
  • 异步、同步、局部复制
  • 全自动化接入与管理

其中“全自动化接入与管理”这一点是最近半年的主要工作,目的是降低维护成本。

Jimdb 在京东部署了 3000 多台机器,都是大内存 + 固态硬盘的,支撑了京东的商品详情页、搜索、推荐、广告点击等很核心数据的快速访问。

下一代新存储平台

刘海锋的团队最近在做的事情是,更多考虑多数据中心的复制,让数据更加可靠,并且希望做统一的存储服务,实现 One Jingdong One Stroage,用一个系统抽象出文件、对象、表甚至缓存,能够在分布式的多个数据中心实现统一的复制存储底层的数据,在主 IDC 做缓存,甚至全量内存加速;向上支持在线服务、Hadoop,支持私有云内部的容器卷的管理等。

底层存储的上面就是各种中间件。

挑战:越来越多的消息传递

京东跟很多互联网公司不一样的地方是,除了北京和江苏的核心机房,在全国各地还有很多商品的库房,每个库房会有几十台服务器,相当于一个小型的数据中心,消息队列不仅要串联核心机房里的业务,还要驱动库房里的订单生产环节,跟业务存在很强的依赖关系。从订单管道,到核心机房,再到仓储库房,普遍是用消息队列驱动业务流程的。日均消息数超过百亿。

JMQ:Jingdong Message Queues

面对业务挑战,京东的消息队列系统经过了三代演进,于去年双十一之前上线了 JMQ 并完成切换。

JMQ 有如下特点:

  • 机房断电不丢消息

因为库房的网络环境是不稳定的,所以必须保证不丢消息。

  • 组提交技术

引入了数据库中经典的 group commit 技术,提高同步刷磁盘的写的性能。

  • 透明压缩
  • 灵活复制

挑战:越来越多的在线服务

电商系统内有很多服务。这些服务内部会互相调用,对外也要开放一些接口,供商家或者合作伙伴使用。

JSF:Jingdong Service Framework

京东在这方面的解决方案是 JSF 。可以做到运行时服务质量分析,提供了完善的服务治理功能。目前在京东已经接入了几万台服务器,更好地支持了内部的 SOA 化以及对外的服务开放。

弹性计算云是目前的主要工作。

挑战:越来越多的机器

任何一个高速发展的互联网公司,机器数量都是在成倍增加的。随着业务规模的增长,机器的数量也在不断增加。现在就要面对这样的场景:有很多数据中心,而每个数据中心内的机器又会被划分给不同的业务,比如有的机器处理交易,有的处理订单履约,有的处理搜索,有的处理图片等等,面对这么多机器,应该怎样管理,让研发团队的效率更高呢?

弹性计算云

该项目的愿景是在 IDC 的资源和业务系统之间建立一个桥梁,让业务与机器完全解耦,做到真正自动化维护,缩短产品开发到上线的流程,让工程师的精力更多放在产品的设计和研发上,而不必关注如何申请资源、如何上线;提高资源利用率和服务质量,让研发团队的生活更美好。

从公司整体来看,希望能够提高资源的利用率。因为很多机器是分散的,由各个业务团队使用,必然有很多机器是空闲的,统一管理必然能提高资源的利用率。

弹性计算云的整体架构如下图所示,分拆两层服务。底层是基础服务,实现软件定义数据中心。通过 OpenStack 和 Docker 的结合,实现容器化。JFS 实现可靠的存储。上层是平台服务,希望通过集成部署,实现资源的统一分配,业务不用关注自己到底部署到哪台机器上,并由平台根据业务量实现自动伸缩。

现在这个系统已经在部分业务中落地,大规模落地会在今年年完成。具体而言,像商品详情页、图片系统,就是弹性计算云支撑的,用户的每一次浏览,都有这个系统在做贡献,能够按访问流量自动调度资源。在流量高峰的时候,这两个服务会自动扩容。

做为总结,刘海锋总结了两点:

1. 业务发展推动基础架构的演进;

2. 技术的关键是团队。

在演讲之后,InfoQ 采访了刘海锋。

InfoQ:最近两年,容器技术,特别是 Docker 在业界非常火,可以介绍一下京东在这方面的实践经验吗?

刘海锋:刚才我在演讲中提到,我们希望在 IDC 的资源和业务系统之间建立一个桥梁,让业务与机器完全解耦,这是一个很复杂的工程,不是一个容器或者 Docker 就能解决的。弹性计算云分为两个层面,底层的基础服务更多是把机器做一个统一的虚拟化、容器化,上层的平台服务更多地要考虑怎么样去配合京东的业务,跟应用能够更顺畅地融合在一起。

举个例子,从最简单的部署角度来说。以前部署是这样的,一打好包了,在部署界面上选,选了三个机器,三个机器的 IP 分别是多少,然后部署。部署完成检查一遍就成功了。而接下来整个系统会做成这样,一个程序要上线了,要部署,点部署,系统给部署完成之后告诉开发者成功了,然后再说部署在哪里。不需要关心之前的那些环节,不需要层层的领导审批和运营部门审批。而是直接部署,部署位置由平台来统一控制。一开始分配很少的机器,随着流量的增大自动扩容。需要的量小的话,再自动缩容,节省出的机器再统一调度。这样可以提高公司的资源利用率,数据中心中都是公司的机器,而不再分你的我的。

我们用 Docker,更多的是考虑它比较适合公司内部的私有云环境,而且比较轻量。我们底层的平台,简单的理解是 Docker 和 OpenStack 的嫁接。我们用 OpenStack 去管理 Docker,比如给它分配一个独立的 IP 等。但是除了两个第三方平台,我们的底层平台要做到简单、可控、稳定,所以上面还有一个很强大的完全自研的一套平台和服务,能够统一的调度和控制,实现管理、监控和部署。

Docker 在这里面发挥了很重要的作用。另外我们也稍微做了一些改造,去掉了很多用不到的特性,让它稳定简单。

网络方面,用 Open vSwitch 给每个 Docker 容器分配一个 IP,这样每个容器看上去跟虚拟机或者物理机没什么区别,迁移业务的时候大家更容易接受,过渡更为平滑。

InfoQ:刚才您提到了 OpenStack 和 Docker 的嫁接,可以具体介绍一下其结构吗?

刘海锋:基础服务层面,核心有三点:OpenStack、Docker 和自研的 JFS 存储。OpenStack 和 Docker 在这里都是非常重要的组件。

先说 OpenStack。因为 OpenStack 变化比较快,我们没有那么多精力一直跟随。我们从 OpenStack 拆出了一个分支,经过定制,做了一个内部的分支,叫做 Jingdong Data Center OS。这方面的工作有两点。一方面是让它能跟 Docker 更好地配合;另一方面,我们加入了很多故障处理功能,应对物理机故障和容器故障。物理机故障的时候快速检测出来,快速报警,快速迁移上面的容器。

再说 Docker。网络和存储上都有些改造,比如可以支持 JFS mount 过来的目录。我们会把故障当成常态,物理机的硬件故障,像磁盘、内存和硬件方面的问题,所以对 OpenStack 做的改造主要是更好地应对故障,快速响应。

InfoQ:Docker 或者 OpenStack 方面的工作,会向开源社区反馈吗?

刘海锋:其实我们也有考虑。我们计划在今年年底或者明年年初的时候有些动作,目前还是希望把当前的工作做好。

InfoQ:社区的版本更新比较快,这方面如何 merge 自己的特性和新版本的特性呢?

刘海锋:外面比较好的我们也会吸收。实际上 OpenStack 更多是面向公有云设计的,从我们的需求来看,它比较臃肿,不是很好控制。所以我们做了裁剪,砍掉了很多公有云的功能。

InfoQ:这个会不会像你们的文件系统那样,在定制的过程中走向自研了?

刘海锋:这是有可能的。像 Docker 这样的项目,设计的时候考虑的是更为通用的目标,功能非常多,这会引入过多的复杂性,也引入一些问题,所以要做减法。而且就互联网公司的开发团队而言,基础架构是在业务的推动下不断演进的,而不是满足某种通用的需求。

InfoQ:现在弹性计算云的落地情况如何呢?

刘海锋:现在弹性计算云已经在支撑很多业务,像图片服务。很多边缘系统也在用。根据研发战略,我们希望今年大规模落地。

InfoQ:可以介绍一下公司其他业务在向私有云迁移的过程中都有哪些挑战吗?

刘海锋:挑战很多,我们很多精力也放在这上面。我们做了一个基础设施,会面对两类用户,像新的用户和新的产品,直接选择它就可以了;但像老的服务,可能占用的是物理机,资源利用率很低。迁移其实不仅是技术层面的问题。所以我们会有专门的项目经理团队去推动。另外我们有一些工具,方便旧业务的迁移。

此外,我们还需要在保证业务稳定的前提下追求规模,因为规模大了才有资源管理方面的优势,所以我们希望做到万台规模。我们每天都很谨慎,很小心,但是还是希望量上来。

在 4 月 23 日~25 日的 QCon 北京 2015 大会上,刘海锋将担任微服务架构专题的出品人。在该专题中,京东云平台高级架构师、JSF(Jingdong Service Framework)项目的负责人李鑫将分享京东的服务化框架实战。

2015 年 4 月 07 日 21:294583
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 121.6 次阅读, 收获喜欢 30 次。

关注

评论

发布
暂无评论
  • 平安健康的 Docker 应用与实践经验

    做为容器技术的代表,Docker已经逐渐获得了企业的认可。之前InfoQ就有报道过,国内的新浪微博、雪球网等互联网公司都在生产环境中成功使用了Docker。而对于一些传统公司,他们的IT设施薄弱、应用架构复杂,在拥抱Docker时,可能遇到的问题相对较多。为此,InfoQ采访了平安健康互联网技术平台资深架构师王延炯。另外,王延炯将在6月11日的PWorld 软件架构&平台创新大会上分享题为《基于Docker的开发、运维一体化实践》的主题演讲。

  • 京东 618:容器技法日趋娴熟,数个项目即将开源回馈社区

    容器技术火遍技术界,很多公司包括传统行业企业都已经从观望者转变为采用者。作为最早期采用容器技术的一批先锋者,京东从2015年的9千多实例扩大到如今容器作为业务上线默认选项,支撑全部业务运行以及中间件、数据库等。此外,在经历了从OpenStack到Kubernetes的迁移转变之后,京东容器引擎平台已经了从1.0迭代到2.0版本,并且于今年陆续开源数个项目。

  • 打造基于开源系统的公有云——文思海辉的 OpenStack 实践

    鹏博士电信传媒集团是上海A股上市公司,通过收购北京电信通长城宽带等子公司,目前,互联网接入及增值服务业务已占到鹏博士业务总额的95%以上。2012年底,鹏博士通过收购的北京息壤传媒文化有限公司开始对外提供公有云服务, 而支持这套公有云服务的软件是文思海辉的HSCloud,一套基于OpenStack的云计算管理系统。到2013年11月,该公有云平台上的实例数已经超过了一万个。 为了对这个OpenStack用户案例进行更深入的了解,InfoQ中文站编辑于近日跟文思海辉的云计算团队进行了沟通,包括文思海辉高级副总裁吴凯和多名主要的系统架构师。

  • 看京东如何玩转云数据库

    作为支撑百亿级数据量业务的基础服务,京东云数据库在可用性及高性能方面有极高的要求。本期我们的采访嘉宾是京东资深架构师张成远,本文根据采访整理而成。

  • 京东 618:Docker 扛大旗,弹性伸缩成重点

    不知不觉中,年中的618和年终的11.11已经成为中国电商的两大促销日,当然,这两天也是一年中系统访问压力最大的两天。对于京东而言,618更是这一年中最大的一次考试,考点是系统的扩展性、稳定性、容灾能力、运维能力、紧急故障处理能力。弹性计算云是京东2015年研发部战略项目,它基于Docker简化了应用的部署和扩容,提高了系统的伸缩能力。目前京东的图片系统、单品页、频道页、风控系统、缓存、登录、团购、O2O、无线、拍拍等业务都已经运行在弹性计算云系统中。

  • 微服务混合云部署实践

    我们今天要聊的混合云部署,就是既在企业内部的私有云部署服务,又使用企业外部公有云部署服务的模式。和多机房一样,混合云部署同样要考虑几个关键的问题。

    2018 年 11 月 3 日

  • 微服务容器化运维:镜像仓库和资源调度

    一个容器运维平台通常包含以下几个组成部分:镜像仓库、资源调度、容器调度和服务编排。

    2018 年 10 月 20 日

  • Mesos container 在 360 广告系统的应用(上)

    大家好!container在360商业广告部门的应用。我是一名SRE工程师,我们负责管理与维护360商业广告平台,说起SRE工程师大家可能会想到谷歌公司,因为SRE毕竟是谷歌提出的概念。

  • 京东 618:15 万个 Docker 实例,所有业务全部容器化

    在2015年的618大促中,京东大胆启用了基于Docker的容器技术来承载大促的关键业务(图片展现、单品页、团购页),当时基于Docker容器的弹性云项目已经有近万个Docker容器在线上环境运行,并且经受住了大流量的考验。而今年618,弹性云项目更是担当重任,全部应用系统和大部分的DB服务都跑在Docker上。像618大促这样的流量高峰期,弹性云可以自动管理资源,做到弹性扩展,而在流量低谷期,又可以进行资源回收,在提升资源利用率的同时确保了运维系统的稳定性。据官方估计,本次大促活动中,京东线上将会启动近15万个Docker容器,从数量上来看,京东是全球范围内Docker的应用大户之一。

  • 黄晶谈人人网架构

    在2010年的QCon北京大会上,InfoQ的编辑对人人网产品技术高级总监黄晶进行了采访,其中他谈到了关于人人网从校内到现在所做的架构上的转变,还谈到了人人网创建并使用的两个开源项目。

  • 互联网架构模板:“用户层”和“业务层”技术

    今天,我将从“用户层”和“业务层”的角度谈谈常见的应用场景和关键技术。

    2018 年 8 月 4 日

  • 美团大众点评合并:背后技术力量的对比回顾

    美团网和大众点评网在10月8日中午联合发布声明,宣布达成战略合作,两者将共同成立一家新公司。两者也在InfoQ及其组织的大会上进行过多次分享,我们将对美团和大众点评使用的技术进行回顾,来看看这两家电商巨头的技术实力。

  • 专访中国移动大云项目技术架构师钱岭博士

    钱岭博士于2007年底加入中国移动通信研究院,先期从事移动广告平台研究,随后加入大云项目组,担任技术架构师,同时也负责子项目HugeTable的研发和应用。在前不久举行的第二届中国云计算大会上,中国移动发布了大云1.0版本,获得业界的关注。近日InfoQ中文站编辑有幸就中国移动研发的大云项目和钱岭进行了沟通,主要探讨了大云项目介绍、和其他云服务的区别,以及云计算中的安全问题等。

  • 专访好雨刘凡:甲方需求是云服务产品的驱动力

    8月31日,好雨科技公司推出应用管理平台——云帮社区免费版。该平台基于Docker和Kubernetes开源技术,自2015年3月开始开始正式商业化运作。这个应用管理平台的研发经历了怎样的过程,背后有怎样的故事,为什么现在免费开放使用;带着这些问题InfoQ对好雨的创始人CEO刘凡进行了采访。

  • 计算资源利用率提升 38%,厦航的容器化电商中台构建实践

    本文来自RancherLabs微信公众号

  • 持续交付专栏特别放送 | 答疑解惑

    借着专栏即将结束的机会,我整理了一下大家的留言,总结了一些比较典型的问题,并从中挑选了5个在这篇文章中给与回答。

    2018 年 9 月 29 日

  • Confluent:在 Kafka 上飞驰的数据交换者

    Confluent公司是前LinkedIn员工出来后联合创办的,其基础是一款叫作Apache Kafka的开源软件。

    2018 年 4 月 25 日

  • 加餐(七) | 从微博的 Redis 实践中,我们可以学到哪些经验?

    俗话说“他山之石,可以攻玉”,学习掌握这些经验,可以帮助我们在自己的业务场景中更好地应用Redis。

    2020 年 11 月 30 日

  • 京东从 OpenStack 切换到 Kubernetes 的经验之谈

    2016年底,京东新一代容器引擎平台JDOS2.0上线,京东从OpenStack切换到Kubernetes。到目前为止,JDOS2.0集群2w+Pod稳定运行,业务按IDC分布分批迁移到新平台,目前已迁移20%,计划Q2全部切换到Kubernetes上,业务研发人员逐渐适应从基于自动部署上线切换到以镜像为中心的上线方式。JDOS2.0统一提供京东业务,大数据实时离线,机器学习(GPU)计算集群。从OpenStack切换到Kubernetes,这中间又有哪些经验值得借鉴呢?

  • 京东的云化:相比 IaaS,应用系统的 SaaS 化才是重点

    定位于电商产业链的京东云在技术完成度上达到了怎样的阶段?其产品化遵循怎样的思路?发展到现在都遇到过哪些挑战?InfoQ中文站在2013年底对何刚进行了一次采访,对上述问题进行了探索。

发现更多内容

ThreadLocal到底会不会内存泄漏?实战直接告诉你答案!

刘超

Java 多线程 ThreadLocal

程序员的晚餐 | 5 月 10 日 能让你流泪的不只是洋葱

清远

美食

回顾经典,Netflix的推荐系统架构

王喆

人工智能 学习 推荐系统 netflix

全球经济动荡下,超流币逆袭而来!

极客编

选择适合自己的 OLAP 引擎

程序员小陶

大数据 开源 OLAP

这种场景你还写ifelse你跟孩子坐一桌去吧

小傅哥

小傅哥 drools ifelse 复杂代码优化 规则引擎使用

由纪念日想到杨德昌

Elizen

随笔 电影

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (六)测试哪些内容:Right-BICEP

编程道与术

Java 编程 软件测试 TDD 单元测试

我为什么要开启InfoQ写作

Nick

《后浪》程序员版,献给新一代程序员的演讲,何冰《后浪》模仿秀

陆陆通通

Java 编程 程序员 后浪 何冰

全面解读信创行业 关注国产操作系统

统小信uos

操作系统

AtomicStampedReference是怎样解决CAS的ABA问题

捉虫大师

Java

Tomcat安全配置

wong

Tomccat security

我肝了一个月,给你写出了这本Java开发手册。

cxuan

Java25周年

手把手带你体验 HTTP/3

清远

程序员的晚餐 | 5 月 11 日 久违的大蒜的味道

清远

美食

如何快速更改qcow2镜像文件

奔跑的菜鸟

云计算

什么是工作

史方远

随想 工作

Android10版本引发的生产故障及安全知识归纳

大刘

android https TLS 加解密

ZigBee3.0 节点入网流程分析

taox

网络协议

定在下午面试的那位候选人,说他不来了

无箭的丘比特

团队管理 面试 简历优化 招聘

产品不需要刻意强调创新

薛梁Lucien

产品 创新突破 PCon

线程通信知识点扫盲!

Simon郎

Java 后端 多线程

Java 真实笔试题2

旭霁

Java

回“疫”录(16):管控更加严格了

小天同学

疫情 回忆录 现实纪录 纪实

谈谈控制感(3):让孩子更好地成长

史方远

心理学 控制感 教育

一文读懂阿里云通信的产品体系、技术架构与智能化应用场景实践

阿里云Edge Plus

人工智能 云通信 短信 语音 智能联络中心

物联网技术栈之网关技术

老任物联网杂谈

物联网网关

怀念小时候吗?

安静的下雪天

个人感想

程序员的晚餐 | 5 月 13 日 果木鸡丁的夏天

清远

美食

程序员的晚餐 | 5 月 14 日 虎皮青椒

清远

美食

面向体验的视频云-火山引擎增长沙龙

面向体验的视频云-火山引擎增长沙龙

京东私有云建设:挑战与应对之道_QCon_臧秀涛_InfoQ精选文章