2020 Google开发者大会重磅开幕 了解详情

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

2016 年 6 月 17 日

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

为了了解相关的详情,InfoQ 记者采访了弹性云项目负责人鲍永成。此外,鲍永成将会在InfoQ 主办的 CNUTCon 全球容器技术大会上分享本次 618 大促的具体技术细节,欢迎关注。

受访嘉宾介绍

鲍永成,京东弹性计算组项目负责人,带领弹性计算团队,深耕 IaaS 领域,致力于打造京东强大的虚拟化平台。2013 年初加入京东,重点在京东弹性云平台系统研发,运营多个中大规模 IaaS 集群,包括(京东弹性云、公有云、混合云等产品),在 OpenStack 研发 & 性能优化、自动化部署、KVM、Docker、分布式系统等方面有一定的实践经验。

InfoQ:去年 618 的时候,我们就有聊过京东 Docker 的应用情况。您能对比去年 618,介绍下今年的规模、应用以及调整吗?

鲍永成:从数量上来讲,去年 618 线上容器应对峰值为 9 千个实例,今年截止 6 月 17 日线上容器突破 15 万实例;在整体布局上来看,对比去年 618,弹性云在规模上和业务全容器化实现战略落地。
在应用层面,京东所有应用 100% 通过容器技术来发布和管理应用集群。值得指出一点:今年 618 有 5600 个容器实例支撑 DB 集群,对京东云数据库提供非常便利的支持。
弹性云核心架构没有很大变化,依然简洁定义:弹性云 = 软件定义数据中心 + 业务容器集群调度。在此基础上,有两点增强:

  • 单个容器的稳定性和性能方面做了很大提升,有效满足核心系统对计算和网络的巨大需求;
  • 统一管理物理机、虚拟机和容器,加入统一集群进行调度,以适应不同业务对计算资源的不同需求;

InfoQ:您能介绍下有哪些业务全量跑在 Docker 上吗?为了迎接这样的挑战,架构做了哪些调整?

鲍永成网站、交易、无线、微信手 Q 等全部应用系统和 DB 服务的大部分都跑在 Docker 上。
因为京东业务在多年前就开始微服务化治理,所以应用层架构调整很小。现如今微服务化比例已经很大,所以容器技术的融入比较顺利。弹性云平台,算是站在多年对各个业务系统微服务化治理的巨人肩膀上。

InfoQ:这么多容器,如何做到海量监控?采用了什么开源方案吗?有哪些注意的事项?

鲍永成监控采取自主研发系统,该系统负责海量数据采集和存储工作,其构架如图。

对于 15W+ 容器监控,需要注意:指标采集传输一定要设计得非常高效,并且要做到采集过程对资源的消耗控制,建议使用加速告警和监控图表跟踪缓存状况。

InfoQ:在洪峰来临之时,弹性计算云平台是如何进行扩容的?可以从系统角度分享下其中的流程吗?

鲍永成弹性云有两种模式:

  • 自动模式会根据每个业务方自己的预设弹性扩展条件,自动触发扩容。扩容工作包括使用业务镜像 spawn 实例、自动 DB 授权、微服务框架注册、添加实例到 LB 负载。
  • 手动模式的前提是有弹性事件被触发,垂直运维收到扩展确认消息,人工参与的只是这个消息的点击确认扩容环节,其后续流程与自动模式一致。

InfoQ:可以谈谈目前应用了哪些关键开源项目吗?各自在系统的哪些 level?对应的版本分别是什么?

鲍永成主要是 OpenStack 和 Docker,具体如下:

  • OpenStack-IceHouse 用于管理数据中心计算、网络、存储等资源,位于 JD Data Center Operating System 层。
  • Docker-1.3 用于 spawn 容器实例,加入很多自主研发的内容和功能。

InfoQ:这么多的容器,您觉得最大的挑战是什么?

鲍永成**:1. 集群规模介于高效运维,弹性云集群走的是大集群架构的思路。单个 OpenStack 集群会建设得非常大,目前单集群规模控制在 6 千台计算节点左右。
管理 6K 台计算节点集群,仅仅使用原生 OpenStack 是很困难的,因此我们对 OpenStack 依赖的数据库、MQ 等全部重新设计实现,设计经过测试可以支撑 1W 台计算节点。
2. 单实例性能调优
:** 很多核心的业务对单个请求的响应时间有极其严格要求,这势必要求弹性云提供的每一个容器实例均要具有极好的性能,我们从 CPU 和网络两方面入手。
针对 CPU,我们采取 Scale-up 算法灵活调配 CPU 分配,使繁忙业务可以及时获得足够多 CPU 资源。
在网络这块,主攻方向为如何把万兆卡的性能发挥出来。我们对 OVS(Open vSwitch)做了一些改进:减少了一些锁,优化 peer port 和网卡中断。这带来近乎物理机网卡的网络性能。

InfoQ:这么大规模的 Docker 应用,在国内外都是屈指可数的。在整个容器化的进程,你们得到了什么,失去了什么?

鲍永成京东弹性计算云通过软件定义数据中心与大规模容器集群调度,实现海量计算资源的统一管理,并满足性能与效率方面的需求。
提升业务自助上线效率。应用部署密度大幅提升,资源使用率提升,节约大量的硬件资源。

而面临的调整也很多,比如内核因为 bug 升级。全部容器化后,底层依赖系统的版本高度一致,很容易带来因为底层 bug 需要规模性升级,幸运的是我们在内核团队建设这块一直非常重视,已经有内核发布版本、内核热 patch 等方式,有效解决此类问题。

InfoQ:在 CNUTCon 2016 全球容器技术大会上,你会重点分享哪些内容?

鲍永成重点分享软件定义数据中心、大规模容器集群调度以及 Docker 容器性能调优。

InfoQ:感谢鲍永成老师接受我们的采访。期待您在 CNUTCon 2016 全球容器技术大会上的分享。

感谢郭蕾对本文的审校。

2016 年 6 月 17 日 19:00 20539

评论

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

Solidity的Bytecode和Opcode简介

程序那些事

区块链 智能合约 以太坊 Ethereum eth

架构师训练营第二周

Melo

【JS】给console来的样式

学习委员

JavaScript html5 前端 Web console

从微服务到Service Mesh

博文视点Broadview

架构 微服务 Service Mesh istio 架构师

食堂就餐卡系统设计

huangyb

浅谈互联网思维和区块链思维

CECBC区块链专委会

区块链思维

五分钟学会Elasticsearch查询代理设计

奈学教育

elasticsearch ES

Apache Spark有哪些局限性

古月木易

spark

Apache Spark有哪些局限性

奈学教育

Apache Spark

ERC20 Short Address Attack

程序那些事

区块链 以太坊 Token ERC20 代币

「编程模型」C++封装资源

顿晓

c++ 封装 资源封装 自动化管理 简化代码

Assignment 01

高冰洁

作业一:食堂就餐卡系统设计

seng man

极客大学架构师训练营

面向对象五大基本原则

彭阿三

面向对象设计 面向对象五个基本原则 基本原则

回忆杀:我的编程能力是如何突飞猛进起来的

Dimple

Java android 编程 面向对象思想

架构师训练营第一次课程感想小记1

tuuezzy

软件工程 求职 架构师 UML

ARTS打卡第二周6.1-6.7

我笔盒呢

架构第一周-学习总结

seng man

读懂才会用:Redis ZSet 的几种使用场景

小眼睛聊技术

Java redis 架构 后端 学习总结

大家都知道递归,尾递归呢?什么又是尾递归优化?

石头

平常心平常心

zhoo299

随笔杂谈

终于有一个 Java 可以用的微信机器人了

犀利豆

Java

【总结】优秀架构师的职责及综合能力

huangyb

五分钟学会Elasticsearch查询代理设计

古月木易

SignalR Core之Hubs基本概念

猫定谔的靴

.net core SignalR realtime Hubs

徒手撸框架--实现Aop

犀利豆

Java spring

第一周作业一:食堂就餐卡系统设计

DZ

作业 - 1 & 2

Happy-Coming

Homework

编程的未来 Java, C, Go, Swift, Dart? Uncle Bob Martin - The Future of Programming

John(易筋)

Java 敏捷开发 编程的未来 编程简史 Bob大叔

架构师训练营第一周学习总结

全力以赴@

徒手撸框架--实现IoC

犀利豆

Java spring

2020中国技术力量年度榜单盛典

2020中国技术力量年度榜单盛典

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