关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » Docker »微博红包:大规模Docker集群实践经验分享

    微博红包:大规模Docker集群实践经验分享

    2015-03-09 00:00:00 出处:beaty向
    分享

    每年除夕看春晚,今年除夕抢红包。在整个羊年的春节假期里,大家都在忙着抢各种各样的电子红包,互联网用红包的方式革新了我们的拜年方式。为此,InfoQ策划了“春节红包”系列文章,以期为读者剖析各大平台的红包活动背后的技术细节。本文为微博篇。

    羊年春晚Docker集群成功的为1.02亿小伙伴刷微博、抢红包提供了可靠的服务。本文将为大家揭开微博平台Docker集群的神秘面纱,包括集群规模,技术架构等方面情况。不过在分享前,先问两个问题,不知道大家是否正为这两个问题而纠结:

    Docker技术能够解决什么问题? Docker技术是否足够成熟,是否可以在生产环境上大规模应用?

    一个月前,微博平台也在这两个问题中纠结一段时间,事实胜于雄辩,先来看一下微博平台Docker集群的规模情况:

    Docker集群规模达到1000+节点 QPS峰值达到800K/s 4个9的服务SLA达到150ms 共覆盖23个核心服务 春晚共调度近300节点完成动态扩容

    在引入任何新技术之前,在架构决策上必须回答:我们现在有什么问题,它能够解决吗。否则就变成了唯技术论,造成不必要的资源浪费。促使平台做出决定的一个主要因素就是春晚的红包飞活动。现在大家都知道,微博春晚红包飞共计抽取了3.5亿次,马云的支付宝红包以及任性土豪的1234567元跨年红包,在3分钟内被抢光,带动用户用活跃度提升46%,达到1.02亿用户。同时广大用户还活跃在各种粉丝群中,为了抢到一个分组红包手机屏幕都快点碎了。面对这种到处开花的流量峰值,传统按照业务峰值部署集群的方式,设备成本将无法接受。所以平台需要一种能够在集群间快速调度业务的技术方案。

    Docker是目前能够实现这一目的的最佳方案。为什么原有的集群管理方式,无法实现快速业务切换呢,关键问题是环境的差异性。程序猿都知道在代码运行的世界里,拆东墙补西墙是一件不靠谱的事情,弄不好会塌方的。虚拟化可以实现隔离软件运行环境差异性,目前虚拟化技术有以OpenStack为代表传统VM技术,和以Docker为代表的Container技术两大类。如何在二者中进行选择,平台从下面几个维度进行了评估,供大家参考:

    Docker

    OpenStack

    结论

    启动速度 秒级 分钟级 面对流量峰值,速度就是一切
    复杂度 基于内核的namespace技术,对现有基础设施的侵入较少 部署复杂度较高,并且很多基础设施不兼容 因为平台是对已有的线上生产系统进行改造,必须选择侵入性较小的容器化技术
    执行性能 在内核中实现,所以性能几乎与原生一致 对比内核级实现,性能较差 微博核心业务对服务SLA要求非常苛刻
    可控性 依赖简单,与进程无本质区别 依赖复杂,并且存在跨部门问题 生产系统集群可控性是核心竞争力能力
    体积 与业务代码发布版本大小相当,MB级别 GB级别 当集群大规模部署时,体积小就代表更大的并发调度量

    下面先介绍目前微博平台Docker集群的技术栈:

    宿主机:CentOS 6.5 Docker:1.3.2 Registry:docker-registry 0.9.1版本 组网:host模式 监控:cAdvisor + Elasticsearch + Kibana + Graphite 文件系统:devicemapper 镜像发布:Jenkins Container 容器:容器即服务,服务即容器 日志:volume挂载 生命周期管理:自研,类似Compose 服务发现:自研,类似Kubernetes的Pods和Service

    那么从无到有部署一个超过1000节点,风险和挑战是非常大的。必须有一套方法能够确保在改造过程中业务的稳定性,平台也想了很多办法,但其实宗旨就一个:可控。把这些方法可以总结为几条原则:

    规模化 Stupid But Works 无缝对接

    先来谈一谈规模化。乍一看,规模化与可控是对矛盾体。程序员都知道,假如一种新技术不在大规模环境下验证通过,是无法证明其可靠性。从业务角度,一旦引入新技术,就要承担出问题的风险,所以业务都希望引入的新技术是通过大规模环境验证过的。对于这种情况,一般做法有两种,一种是先在一个业(bei)务(cui)试点,成功后再进行推广。但是这种方式主要问题是反复概率较大,引用一句台词就是:“我吃了没事,不代表你吃了就没事”,结果就会出现到处打补丁的局面,不利于架构标准化。所以平台采用的是“大锅饭”的方式,就是所有业务同时上马,逐步增加规模。这种方式好处显而易见,差异性可以在第一时间得到解决,最终只有一套标准化架构。但这种方式需要非常强的项目管理能力,保证各业务组目标一致,分工明确,里程碑清晰,同时还需要项目组成员有强烈的使命感,时间意识,团队意识。

    搞定团队之后,首要任务就是要使工作保持方向,那么什么是正确方向呢:Stupid But Works。新技术落地项目失败有很多因素,其中主要一个诱因就是:完美主义,或者叫偷换目标。典型症状如下:目前架构不够优雅,需要XXX。例如Docker的组网能力饱受诟病,此时不应该纠结一个完美的组网方案,否则就可能项目不保。因为技术突破都依赖很多先决条件,可能是受限于基础网络环境,受限于内核能力,所以此时最佳的策略是跟上趋势,积累经验,伺机突破。再比如Docker对日志数据管理方式奇多,但最完美的并不一定适合你,假如此时决定对现有的日志管理进行改造,就合原本的目标背道而驰了。最佳的策略是选择认知成本最小的方案,而不是最完美的方案。

    对已有集群进行Docker化改造,最大的一个阻力就是新老结合问题,所以Docker集群必须能与原有运维、研发系统无缝对接,才能够使项目顺利进行。例如容器化,是否改造代码。平台当时遇到的一个问题是不同宿主机的容器分配的ip有可能是一样的,原本获取本地ip的代码就会取到相同的值,直接导致分布式系统跟踪系统失效。所以要在Docker层面解决这个差异性,而尽量不修改原系统设计。

    对于Docker未来部署规模达到万级别后,还有很多技术难题有待解决,平台也会在下面几个方面继续探索,希望能够把经验回馈给社区:

    网络瓶颈,万级别的容器部署,势必会挑战现有的网络基础设施,交换机的转发表项会遇到瓶颈。网络隔离可以保证服务间互不影响,但是又限制了灵活调度,SDN是大趋势。 弹性调度,目前还处于“社会主义初级阶段”,一切都还要靠“中央”下达指令。Kubernetes、Mesos、Swarm等技术提供在万级别集群规模下自动化弹性调度的可能性,但整体解决方案我们也还在摸索。

    微博平台期待你的加入,共同开始打造大规模Docker集群。

    上一篇返回首页

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    如何从 Windows 11 中完全删除/卸载 OneNote?无解!

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术热点

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。