微信号:imooc-com

介绍:慕课网是一个超酷的互联网、IT技术免费学习平台,创新的网络一站式学习、实践体验;服务及时贴心,内容专业、有趣易学。专注服务互联网工程师快速成为技术高手!

赠书福利 | 号称要成为所有云应用基石的Docker!

2016-12-23 15:48 Lee


 


近来以Docker为代表的容器很火,很多互联网公司都在使用。那么Docker是如何获得互联网公司的青睐的?我们又该如何来应用Docker?

 

Docker从诞生到现在,短短两年时间,已经成为开源社区最火爆的项目,风头已经远远盖过了近年来很流行的Puppet和OpenStack。那么Docker的火爆到底是一种炒作、一种跟风,还是它确实名副其实、众望所归呢?

要回答这个问题,首先看看当前我们所处的环境和面临的问题。


随着计算机近几十年的蓬勃发展,产生了大量优秀系统和软件。比如:


1. 操作系统:如REHL/Centos、Debian/Unbuntu、FreeBSD、OpenSuse等。

2. 编程语言:如Java、C/C++、Python、Ruby、Golang等。

3. Web服务器:如Apache、Nginx、Lighttpd等。

4.数据库:如Mysqld、Redis、Mongodb等。

 

现在的软件开发人员真是幸运,可以在这么多种类中自由选择。自由选择的结果是,维护一个非常庞大的开发、测试和生产环境,开发、测试和运维人员都被种类繁多的环境折腾得筋疲力尽,不得不收缩战线,每种类型的软件只选择一两种来支持。许多优秀的开发框架和软件尽管有不少优秀特性,但因为维护麻烦,便没有了用武之地。

 

首先来看一下我们在运维中发现了哪些问题。以笔者就职的腾讯公司案例为例,腾讯产品战线很长,笔者所在的团队负责运维腾讯的QQ、Qzone等核心产品,而这些产品也算是中国互联网骨灰级的业务了,整体架构都有着复杂的历史背景。不仅团队的老员工发现了架构逐渐产生的问题,团队新入职的同事也会指出与原任职公司比较架构存在的一些问题,等等。如何将很多好的技术融入我们的业务架构中,以解决产品的问题,是摆在每一个运维架构师面前的难题。架构的复杂性与历史沉重的包袱决定着牵一发而动全身,并且架构支持的业务为近半数的中国互联网网民所使用,还有着不少的优缺点,在对其进行改进优化之前,我们主要先分析了它的优缺点。


优点:目前还是单机或单集群对应一个业务模块的形式,彼此间没有交集与复用,如图12-1所示,其架构优势应对爆发式增长扩容方便,成本结算简单,架构形成的历史原因更多的是前者流量的爆发增长。


缺点:随着网民的饱和,相同业务模块下移动流量上涨,PC流量直线下降,很多业务出现了低负载情况。海量服务器的运维场景中即使只有1%的低负载规模也是惊人的,在实际运营中低负载+长尾模块下的机器数量可能达到了25%~30%甚至更高。当然,这里不排除业务对流量做了冗余与灾备,但是多个业务模块的灾备就会出现浪费资源的情况。除低负载与长尾业务外,为了应对业务的流量徒增,团队为产品留出了足够富裕的Buffer资源,而这些资源的实际利用率并不高。


低负载:对服务器利用率衡量的标准,其中标准指标包括CPU、内存、磁盘与网络,并经过算法来确定某服务器的利用率是否处于合理区间内,如果不符合标示为低负载。


长尾业务:某业务在线使用,但用户不再增长并有逐渐下降的趋势界定为长尾业务。


分析了优缺点及运营中发现的问题后,从2014年年中我们就开始着手离线业务混合部署项目。项目的思路是通过高负载业务譬如音频转码、视频转码、图片人脸计算和图片特征提取业务(注:后统称“离线业务”)与低负载、长尾业务和部门Buffer业务进行混合部署,来提升机器利用率并同时为部门节约机器成本。不过经过半年多的运营,我们也发现了很多问题:


问题一:在低负载与长尾业务上部署离线业务,如果离线业务抖动出现大的CPU毛刺(特别在晚高峰时段)就会影响用户的使用体验,从而导致部分投诉产生的情况。


问题二:部署在Buffer池上的离线业务,由于在线业务申请机器导致机器上的离线环境没有及时清理,继续运营影响在线业务的正常使用。


这两个问题是比较有代表性的问题也是我们最不希望看到的,所以总结经验教训后在2015年上半年我们又重新打磨项目开发了新版离线系统,新项目与老项目相比通过Docker技术将离线业务与在线业务的低负载、长尾业务和Buffer池进行了部署,从而顺利解决了上述的问题。

这里主要利用了Docker的三个优势:


Cgroup对资源的隔离让离线与在线业务彼此间对资源使用有了保障。


命名空间,让相同框架多业务跑在相同物理机上成为可能。


容器快速回收上线下线,使用Buffer资源时不再为回收离线资源而头痛。


(1)不追求面面俱到,但力求实用,针对性强;

(2)案例丰富,全部源于腾讯的实际生产环境;

(3)提供在腾讯被验证的各种问题解决方案;

(4)不追求深度,但确保易学,循序渐进。


送 书 规 则


  1. 评论区留言,点赞数前5名赠送《循序渐进学Docker》一本

  2. 活动时间:即日起至12月27日10:00

  3. 一旦发现刷赞行为将取消参与资格

  4. 活动解释权归慕课网所有


点击“阅读原文”进入实战

 
慕课网 更多文章 慕课网@你,一大波IT好书推荐! 10年从业腾讯、小米前端工程师对前端新人的忠告 凡哥,不哭,十年数据库经验大师教你全方面管理数据库隐私 [有人@你]直通腾讯、百度、阿里的实习机会,不看学历,看实力! 有了这样的编程学习工具,再学不好,就是你不努力了!
猜您喜欢 Raft算法赏析 测试设计方法(五):判定表驱动分析方法 那些年你面试过的奇葩 ENode简介与各种资源汇总 2016年〖MrPeak杂货铺〗写文章总结