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

2015 年 6 月 17 日

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

过去的一段时间里,弹性计算云项目在京东内部获得了广泛应用,并且日趋稳定成熟。一方面,这个项目可以更有效地管理机器资源,提高资源利用率;另外还能大幅提高生产效率,让原来的申请机器上线扩容逐渐过渡到全自动维护。京东弹性计算云项目将深刻影响京东未来几年的基础架构。

受访嘉宾介绍

刘海锋,京东云平台首席架构师、系统技术部负责人。系统技术部专注于基础服务的自主研发与持续建设,包括分布式存储、以内存为中心的 NoSQL 服务、图片源站、内容分发网络、消息队列、内部 SOA 化、弹性计算云等核心系统,均大规模部署以支撑京东集团的众多业务。

InfoQ:能否介绍下京东弹性计算云项目的情况,你们什么时候开始使用 Docker 的?目前有多大的规模?

刘海锋:弹性计算云项目在去年第四季度开始研发,今年春节后正式启动推广应用。经过半年多的发展,逐渐做到了一定规模。截至 6 月 17 日,我们线上运行了 9853 个 Docker 实例(注:无任何夸大)以及几百个 KVM 虚拟机。京东主要的一些核心应用比如商品详情页、图片展现、秒杀、配送员订单详情等等都部署在弹性云中。弹性计算云项目也作为今年 618 的扩容与灾备资源池,这估计是国内甚至世界上最大规模的 Docker 应用之一。随着业务的发展以及 IDC 的增加,预计今年年底规模会翻两番,京东大部分应用程序都会通过容器技术来发布和管理。

系统架构可以这样简洁定义:弹性计算云 = 软件定义数据中心 + 容器集群调度。整个项目分成两层架构,底层为基础平台,系统名 JDOS,通过『OpenStack married with Docker』来实现基础设施资源的软件管理,Docker 取代 VM 成为一等公民,但这个系统目标是统一生产物理机、虚拟机与轻量容器;上层为应用平台,系统名 CAP,集成部署监控日志等工具链,实现『无需申请服务器,直接上线』,并进行业务特定的、数据驱动的容器集群调度与弹性伸缩。

InfoQ:能否谈谈你们的 Docker 使用场景?在 618 这样的大促中,Docker 这样的容器有什么优势?618 中有哪些业务跑到 Docker 中?

刘海锋:目前主要有两类场景:无状态的应用程序,和缓存实例。这两类场景规模最大也最有收益。不同的场景具体需求不同,因此技术方案也不相同。内部我们称呼为“胖容器”与“瘦容器”技术。从资源抽象角度,前者带独立 IP 以及基础工具链如同一台主机,后者可以理解为物理机上面直接启动 cgroup 做资源控制加上镜像机制。

618 这样的大促备战,弹性计算云具备很多优势:非常便捷的上线部署、半自动或全自动的扩容。Docker 这样的操作系统级虚拟化技术,启动速度快,资源消耗低,非常适合私有云建设。

今年 618,是京东弹性计算云第一次大促亮相,支持了有很多业务的流量。比如图片展现 80% 流量、单品页 50% 流量、秒杀风控 85% 流量、虚拟风控 50% 流量,还有三级列表页、频道页、团购页、手机订单详情、配送员主页等等,还有全球购、O2O 等新业务。特别是,今年 618 作战指挥室大屏监控系统都是部署在弹性云上的。

InfoQ:你们是如何结合 Docker 和 OpenStack 的?网络问题是如何解决的?

刘海锋:我们深度定制 OpenStack,持续维护自己的分支,称之为 JDOS(the Jingdong Datacenter Operating System)。JDOS 目标很明确:统一管理和分配 Docker、VM、Bare Metal,保证稳定高性能。网络方面不玩复杂的,线上生产环境划分 VLANs + Open vSwitch。SDN 目前没有显著需求所以暂不投入应用。我们以『研以致用』为原则来指导技术选择和开发投入。

InfoQ:能否谈谈你们目前基于 Docker 的 workflow?

刘海锋:弹性计算平台集成了京东研发的统一工作平台(编译测试打包上线审批等)、自动部署、统一监控、统一日志、负载均衡、数据库授权,实现了应用一键部署,并且全流程处理应用接入,扩容、缩容、下线等操作。支持半自动与全自动。

InfoQ:这么多的容器,你们是如何调度的?

刘海锋:容器的调度由自主研发的 CAP(Cloud Application Platform)来控制,并会根据应用配置的策略来进行调度;在创建容器的时候,会根据规格、镜像、机房和交换机等策略来进行创建;创建完容器后,又会根据数据库策略、负载策略、监控策略等来进行注册;在弹性调度中,除了根据容器的资源情况,如 CPU 和连接数,还会接合应用的 TPS 性能等等来综合考虑,进行弹性伸缩。

目前已经针对两大类在线应用实现自动弹性调度,一是 Web 类应用,二是接入内部 SOA 框架的服务程序。大规模容器的自动化智能调度,我们仍在进一步做研究与开发。

InfoQ:目前主要有哪些业务使用了 Docker?业务的选择方面有什么建议?

刘海锋:目前有 1000 个应用已经接入弹性云,涵盖京东各个业务线,包括很多核心应用。目前我们主要支持计算类业务,存储类应用主要应用到了缓存。数据库云服务也将通过 Docker 进行部署和管理。

特别强调的是,业务场景不同,技术方案就有差别。另外,有些对隔离和安全比较敏感的业务就分配 VM。技术无所谓优劣和新旧,技术以解决问题和创造业务价值为目的。

InfoQ:你们的缓存组件也跑在 Docker 中,这样做有什么好处?IO 什么的没有问题吗?有什么好的经验可以分享?

刘海锋:我们团队负责一个系统叫 JIMDB,京东统一的缓存与高速 NoSQL 服务,兼容 Redis 协议,后台保证高可用与横向扩展。系统规模增长到现在的三千多台大内存机器,日常的部署操作、版本管理成为最大痛点。通过引入 Docker,一键完成容器环境的缓存集群的全自动化搭建,大幅提升了系统运维效率。

技术上,缓存容器化的平台并不基于 OpenStack,而是基于 JIMDB 自身逻辑来开发。具体说来,系统会根据需求所描述的容量、副本数、机房、机架、权限等约束创建缓存容器集群,并同时在配置中心注册集群相关元数据描述信息,通过邮件形式向运维人员发出构建流水详单,并通知用户集群环境构建完成。调度方面,不仅会考虑容器内进程,容器所在机器以及容器本身当前的实时状况,还会对它们的历史状况进行考察。一旦缓存实例触发内存过大流量过高等扩容条件,系统会立即执行扩容任务创建新的容器分摊容量和流量,为保证服务质量,缓存实例只有在过去一段时间指标要求持续保持低位的情况下才会缩容。在弹性伸缩的过程中,会采用 Linux TC 相关技术保证缓存数据迁移速度。

InfoQ:使用过程中有哪些坑?你们有做哪些重点改进?

刘海锋:坑太多了,包括软件、硬件、操作系统内核、业务使用方式等等。底层关键改进印象中有两个方面:第一,Docker 本地存储结构,抛弃 Device Mapper、AUTFS 等选项,自行定制;第二,优化 Open vSwitch 性能。比如,优化 Docker 镜像结构,加入多层合并、压缩、分层 tag 等技术,并采用镜像预分发技术,可以做到秒级创建容器实例;优化 Open vSwitch 转发层,显著提升网络小包延迟。

2015 年 6 月 17 日 17:34 13474
用户头像
郭蕾 做有意思的事情!

发布了 210 篇内容, 共 107.0 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
  • 容器:大公司为保持创新,鼓励内部创业

    无论是容器,还是虚拟机,都依赖于内核中的技术。虚拟机依赖KVM,容器依赖namespace和cgroup。

    2019 年 8 月 5 日

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

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

  • 新浪微博混合云架构实践挑战之镜像分发实战

    《微博混合云架构》专栏是InfoQ向新浪微博技术团队的系列约稿,本专栏包含8篇内容,详细阐述以DCP设计理念为指导思想的混合云架构实践。本文是该系列的第四篇,主要讲解在新浪微博混合云在镜像分发方面的一些实践经验。

  • 微软发布 Windows Server 2016 的最新预览版,Docker 首次亮相

    微软于本周宣布了Windows Server 2016第3个技术预览版的发布,新的版本终于实现了期待已久的对容器化特性的支持。熟悉在Linux环境中使用Docker的开发者能够以相同的Docker工具进行Windows容器的开发与部署。而Windows开发者也终于能够体会到Docker这一利器对于开发以及部署所带来的巨大好处了。

  • 京东 11.11:大考之前的三板斧

    尼尔森公司10月底发布了《中国电子商务行业发展“杭州指数”白皮书》,数据显示,2014年底,中国网络零售额交易规模已达133,699亿元,居全球第一。2014~2015年,移动在线购物者占比从57%升至71%;跨境电商从32%提升至63%。在国内电商企业一轮又一轮的市场动作下,“双11”俨然成为全国人民的狂欢节。在今年的“双11”竞技场上,InfoQ选了国内较有代表性的电商企业,一探支撑万亿规模交易系统背后的技术。本文将介绍京东登上“双11”舞台所做的“台下十年功”。

  • 微服务容器化运维:容器调度和服务编排

    今天我们要考虑的是,如何在集群中创建容器,也就是容器如何调度的问题;以及容器创建后如何运作才能对外提供服务,也就是服务如何编排的问题。

    2018 年 10 月 23 日

  • 从 Docker 运维看知乎容器平台的优雅整合

    传统的部署是安装、配置和运行;而Docker的出现革命性地改变了传统模式,部署被简化为复制和运行两个步骤。因此,越来越多企业使用Docker提高分布式应用的构建与交付;但是与此同时,Docker带来了很多不可避免的挑战,其中运维需要克服的挑战尤为传统的部署是安装、配置和运行;而Docker的出现革命性地改变了传统模式,部署被简化为复制和运行两个步骤。因此,越来越多企业使用Docker提高分布式应用的构建与交付;但是与此同时,Docker带来了很多不可避免的挑战,其中运维需要克服的挑战尤为突出。知乎曾经在QCon上与大家首次分享Docker架构和经验,也即将在全球容器大会详细讲述容器平台的实战历程。本次InfoQ就在Docker整合入原有架构过程中,如何实现的Docker运维对知乎两位专家进行了采访。

  • 区域和可用区:欢迎来到云端数据中心

    第一讲,我们先来谈谈云计算中的区域和可用区。

    2020 年 3 月 2 日

  • 搜狐云景 Container 经验谈

    搜狐PaaS公有云平台“搜狐云景”已于5月21日正式开启公测,为广大开发者提供应用开发的一站式服务。为了给开发者提供更加灵活的应用托管平台,搜狐云景平台底层使用了Container的技术,其实它在搜狐内部的私有云平台上已经使用了很长时间,在整个过程中,我们也踩过了很多的坑,积累了不少的经验。本文就云景为什么会选择LXC、基于容器的架构、在Linux kernel 2.6.32上的优化以及云景对资源的隔离和管控等进行了详细介绍。

  • 该学一学了!零基础入门 Docker

    小伙伴儿们,大家好!今天来入门学习Docker!

    2020 年 7 月 30 日

  • 课程介绍

    2019 年 7 月 8 日

  • QClub 之 Docker 专场精彩回顾和总结

    3月29日,由InfoQ主办的QClub之Docker专场在北京成功举办。本期QClub聚焦国内Docker创业以及最佳实践案例,来自新浪微博、华为、IBM、七牛、雪球、数人科技、NiceScale、企事录等公司的技术专家分享了Docker如何在企业内部“落地生根”,以及Docker创业公司将如何利用这一支点来撬动新的市场。

  • 微服务 API 网关搭建三步曲(一)

    今天这节课,我们介绍了微服务 API 网关的作用、功能、核心组件和抽象概念,它们都是 API 网关的基础。

    2019 年 9 月 11 日

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

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

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

    去年的双十一过后,InfoQ曾经采访过京东云平台首席架构师刘海锋。在4月23日~25日的QCon北京2015大会上,刘海锋将担任微服务架构专题的出品人。近日我们就京东私有云的发展情况采访了他。

  • 容器技术的未来——京东云技术专访

    使用容器可以帮助企业提高效率、降低成本,甚至在安全性方面有更可靠的保障

  • Docker 周报:Docker 这一年

    2014年最后一期Docker周报,从8月8日开始,InfoQ中文站就推出Docker周报,以期推动国内Docker的发展。转眼间Docker周报已经走过5个月,这周Docker周报为大家盘点2014年Docker相关的大事件以及优秀的Docker教程。

  • 阿里 Node.js 运维和开发最佳实践

    2018 年 9 月 14 日

  • 蘑菇街 11.11:私有云平台的 Docker 应用实践

    对于蘑菇街而言,每年的11.11已经成为一年中最大的考验,考验的是系统稳定性,容灾能力,紧急故障处理,运维等各个方面的能力。蘑菇街的私有云平台,从无到有,已经经过了近一年的发展,生产环境上经历了3次大促,稳定性方面得到了初步验证。本文我将从架构、技术选型、应用等角度来谈谈蘑菇街的私有云平台。

  • 在 DockerCon 大会上发布了 Docker 1.0

    Docker.io在DockerCon大会上推出了Docker 1.0并开始提供支持服务,其公共仓库Docker Hub也进行了改版。

发现更多内容

【架构师第一周】总结

浪浪

第一周·总结 架构师如何做架构设计

刘璐

食堂就餐卡系统设计(作业模拟)

潜默闻雨

架构师是怎样炼成的-1-2

闷骚程序员

极客大学架构师训练营

【架构训练Week01作业】食堂就餐卡系统设计

Rex

食堂就餐卡系统架构设计

子豪sirius

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

道法自然

极客大学架构师训练营

作业1-食堂就餐卡系统设计

进击的炮灰

作业二【0606学习小结】

道法自然

极客大学架构师训练营

week1.食堂就餐卡系统设计

个人练习生niki

UML

食堂就餐卡系统设计

新世界

架构 0 期-week1-学习总结

陈俊

架构师训练营-作业 食堂就餐卡系统设计

netbanner

极客大学架构师训练营

第一周·作业-食堂就餐卡系统

刘璐

架构师训练营-第一周总结

+╮(╯▽╰)╭/>……

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

坂田吴奇隆

极客大学架构师训练营

极客大学架构师训练营 总结 - 第一课

Darren

架构师0期 01周总结

喵呜的小哥哥

「架构师训练营」第 1 周作业 - 食堂就餐卡系统设计

edd

设计思维

时刻架构

慵秋

极客大学架构师训练营

食堂就餐卡系统设计

心在飞

极客大学架构师训练营

食堂就餐卡系统

缺省模式

【架构训练Week01作业】Review

Rex

就餐卡系统UML图

漂泊者及其影子

极客大学架构师训练营

食堂就餐卡系统设计

努力努力再努力m

架构 极客大学架构师训练营

架构师训练营-第一课作业

Linuxer

极客大学架构师训练营

第一周作业

慵秋

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

任鑫

架构学习第一周作业

+╮(╯▽╰)╭/>……

食堂餐卡系统设计

张磊

架构设计第一课

Dennis

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