写点什么

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

  • 2015-04-07
  • 本文字数:4431 字

    阅读完需:约 15 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

去年的双十一过后,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-04-07 21:294858
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

发布
暂无评论
发现更多内容

浪潮云洲基于QID技术的"师旷"前装固件成功首发

财见

2023年微软开源八个人工智能项目

树上有只程序猿

人工智能 微软 开源

Timemator for Mac(优秀的时间追踪记录工具)v3.0.4激活版下载

iMac小白

Stepn跑鞋系统开发NFT链游技术

西安链酷科技

web3 链游开发

IBM SPSS Statistics Mac(spss专业统计分析软件) v27.0.1.0中文激活版

iMac小白

Redis桌面管理工具: Redis Desktop Manager for Mac中文激活版下载

iMac小白

DreamPlan Plus for Mac(房屋装修设计)v8.61激活版下载

iMac小白

上海站报名启动! 2023年开源产业生态大会OpenHarmony生态分论坛

OpenHarmony开发者

OpenHarmony

Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)

EquatorCoco

Vue 前端开发 UI

HarmonyOS设备管理开发:USB服务开发指导

HarmonyOS开发者

HarmonyOS

数字先锋| 雪域高原一朵“云”,天翼云助力青海打造省级融媒云平台

天翼云开发者社区

云计算 大数据 5G

详解CCE服务:一站式告警配置和云原生日志视图

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 华为云CCE容器服

Comsol Multiphysics for Mac(物理数值模拟仿真软件)v6.2中文激活版

iMac小白

WebSocket 鉴权实战经验分享

Liam

程序员 前端 后端 网络协议 websocket

教你如何防止数据被异常篡改,并复原数据

秃头小帅oi

程序员 前端 低代码 数据异常

NFT交易所系统开发跨链技术

西安链酷科技

交易所开发软件开发 虚拟币开发

全面预算管理,帮助企业财务团队冲破市场挑战

智达方通

全面预算管理 财务团队

sublime text for Mac(代码编辑器)v4.0(4169)注册汉化版

iMac小白

壹维克斯ONE WIEX质押系统开发合约技术

西安链酷科技

智能合约 DAPP系统开发

Web3钱包开发:解锁未来投资利润丰厚的机会

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Linux中tar命令的几个高级用法

这我可不懂

Linux

达芬奇调色视频剪辑软件:DaVinci Resolve Studio 18 for Mac中文正式版

iMac小白

Red Giant Trapcode Suite for Mac(红巨星粒子插件)v2024.0.2激活版

iMac小白

开源大模型驱动的智能编程与自然语言处理

百度开发者中心

nlp 大模型 LLM

CameraBag Pro for Mac(专业的图像处理工具)v2024.0.1激活版

iMac小白

GitKraken for Mac(跨平台Git客户端)v9.10.0激活版下载

iMac小白

Stepn跑鞋系统开发NFT跑步链游玩法

西安链酷科技

DeFi质押挖矿 DeFi流动性挖矿 运动挖矿

列举数据库缓存使用场景实例和命令速查表

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟

首个“全4K”运动会,上云!

天翼云开发者社区

云计算 大数据 云服务

数字先锋| “翼”键上云,开启智慧医疗新时代!

天翼云开发者社区

人工智能 云计算 大数据

最强模型GPT-4 Turbo来了,程序员会失业吗?

伤感汤姆布利柏

人工智能 低代码 chatpt GPT-4 Turbo

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