公告:网址大全导航目录www.btv85.com为各位站长提供免费收录网站的服务,VIP会员每天提交网站30、文章30免审核,快审服务(10元/站),可自助充值发布。

点击这里在线咨询客服 点击这里在线咨询客服
新站提交
  • 网站:223084
  • 待审:0
  • 小程序:16453
  • 文章:25726
  • 会员:223

今天BTV导航网的小编为你讲一下简介Docker在美团网站服务器上的应用方案相关的内容。

自动构建系统是从美团的自动部署系统发展出来的一个新功能。每当开发人员提交代码到仓库后,系统会自动根据开发人员定制的构建配置,启动新的Docker容器,在其中对源代码进行构建(build),包括编译(如Java、C++和Go)、预处理(如JavaScript和CSS)、压缩(如图片)等操作,生成最终需要上线的程序包。

背景和问题

美团的代码自动部署系统承载着美团所有业务的代码上线工作。代码部署系统一开始基于简单的Bash脚本,从一个中央主机上通过Rsync和SSH进行文件传输和命令执行。
2015125113920687.jpg (590×400)

图1  代码部署系统架构图

代码发布系统经过多番演进,增加了很多功能,但原来的中心式架构仍然保留了下来,见图1。发布者通过Web界面或者REST API控制中控机,中控机负责从Git服务拉取代码,构建应用程序包,然后通过Rsync上传程序包到应用集群,并用SSH执行远程命令。
2015125113939813.jpg (295×200)

自动部署系统为美团业务的快速发展提供了有力的支撑。由于我们采用了开发人员自助上线的方式,发布操作频繁,工作日每日上线达上千次。图2是过去15个月每个月的发布次数。为了持续优化发布速度,给发布人员提供良好的体验,我们把单次发布平均时间作为发布系统的一项重要的KPI。

然而,随着美团业务的迅速扩张,服务增多,发布应用数目也增多,中心化的架构的问题也凸显了出来。

问题1:资源竞争
多个构建任务同时进行,竞争中控机的资源,影响发布速度。有一次一个应用受到同时进行的某Java类应用发布的影响,通常两分钟的发布变成了十多分钟,严重影响发布体验。如果出现事故需要回滚,就是更严重的问题了。

问题2:环境冲突
不同应用的构建依赖环境在一台发布机上,需要考虑环境冲突和隔离的问题。例如,Java 1.6/1.7共存,应用需要通过JAVA_HOME变量指定使用的Java版本,Maven 2/3也存在同样的问题。npm的global包也需要兼容多个应用的构建。

问题3:安全隐患
应用的构建脚本运行在公共发布机上,脚本的Bug可能会影响到发布机的正常运行。例如某次一个构建脚本里面的sudo service nginx reload命令,本应是在应用服务器上执行的,但开发人员错误配置到了在发布机上执行的构建脚本里面。

解决方案

解决上述三个问题,我们首先想到的方案自然是重构为多台中控机的可横向扩展的方式。但由于某些应用的特殊性,改动比较麻烦,所以开始并没有走这个方向(现在已实现多中控机)。

那么另外一个思路:能不能把构建过程从中控机分离出来?这个思路受到了Travis CI(https://travis-ci.org)的启发。我们借鉴Travis CI,在代码提交时自动在一个新的环境中触发应用的构建。

因此,我们的解决方案可以概括为如下三点:

把构建过程放到Docker容器;
提交代码时自动触发构建;
发布时直接使用构建好的应用包。
使用前配置如下:

在发布系统配置发布项(build.yml);
在Stash配置自动构建服务的URL;
在私有Docker registry上传定制镜像(可选)。
使用过程比较简单,主要有如下几个步骤:

开发人员提交代码到Stash;
触发自动构建;
自动构建根据配置生成任务;
在Docker服务器上启动容器完成构建;
将构建好的包上传到美团云对象存储服务(MSS);
发布时从MSS拉取软件包并发布。
每次提交代码时会触发自动构建API。构建任务放进队列里,任务在Docker服务器执行。当发布时就不用再去编译,直接拉取软件包进行发布。从图6、图7两幅图中可以看到在发布过程中直接使用了已自动构建好的文件进行部署。
2015125114000045.jpg (210×200)

图3  自动构建的配置
2015125114016501.jpg (191×200)

图4  发布系统的配置界面
2015125114042754.jpg (300×164)

图5  自动构建架构图
2015125114059789.jpg (195×200)

图6  自动构建的日志
2015125114246228.jpg (241×200)

图7  嵌入了自动构建日志的发布日志
为什么没有用虚拟机?

美团的虚拟化比较彻底,自动构建也可以用虚拟机而非容器实现。但虚拟机都和业务相关,会长时间保留。其次,虚拟机和CMDB深度结合,创建后会上报基本信息,部署Agent,配置监控项等。此外,虚拟机的创建是比较慢的。综合考虑以上几点,我们使用了Docker而不是虚拟机作为自动构建的基本单元。

效果和收益

基于Docker容器的自动构建很好地解决了之前提到的三个问题:资源竞争、环境冲突和安全隐患。构建任务移出发布机,构建用Docker服务器可横向扩展,解决了资源竞争问题。每个构建都是独立的镜像,环境冲突问题不复存在。构建脚本运行在独立于发布机的Docker服务器上,对发布机造成的安全隐患自然就消除了。

除解决了以上三个问题外,自动构建还显著改善了发布速度。经统计,自动构建任务的平均执行时间是197s,而使用自动构建应用的平均发布时间是99s。如果不使用自动构建,那么这些应用的发布时间就是197s + 99s,大约是三百秒。可以看到,自动构建把应用的发布时间缩短了三分之二。

总结

自动构建是美团对Docker的首次应用。这个应用不是为了用Docker而用Docker的,而是在解决代码部署系统中的问题时,利用Docker很好地解决了我们遇到的问题。该应用只利用了Docker最核心的容器功能,并没有使用Docker集群管理、调度、自动扩容等高级的功能。自动构建的场景非常适合使用Docker。希望本文能够对计划开始使用Docker的公司有所启发。

通过对简介Docker在美团网站服务器上的应用方案的详细介绍,希望对你有所帮助,我们提供了更多和简介Docker在美团网站服务器上的应用方案类似的相关内容推荐,可以你更全面的帮助你解决问题。我们BTV85网址导航还提供网址收录服务,你可以注册提交你的网站信息,帮你引导搜索引擎蜘蛛,同时还有网站SEO优化交流微信群,里面很多SEO高手和大咖,加友链,可以免费进群。

简介Docker在美团网站服务器上的应用方案同类内容推荐:
  • 天地劫手游殷千炀技能组合方案大全

    天地劫手游殷千炀怎么搭配技能?殷千炀是即将登场的输出型英灵,除了伤害不错之外,还有很强的干扰控制能力。下面 2023-03-06

  • 地下城进化版超武合成方案分享

    地下城进化版超武是游戏中的强力的武器,该游戏中一共有4个超武,玩家们要是想要知道全部的超武合成方法的话就 2022-12-13

  • 原神3.0甘雨配队方案大全

    原神3.0甘雨怎么配队?五星冰系输出角色“甘雨”马上就要复刻了,届时会有很多玩家入手她,那么其阵容如何配置呢? 2022-12-13

  • 胜利女神NIKKE战斗设置方案分享

    胜利女神NIKKE战斗选项怎么设置?在游戏设置中,各种战斗选项设定是很重要的,对实战操作影响很大,新手可能不太了 2022-12-12

  • 霓虹深渊无限键位设置方案分享

    霓虹深渊无限按键怎么设置?这是一款比较考验玩家操作的游戏,里面有很多自定义键位,很多新手不清楚该如何设置。 2022-11-24

  • 原神妮露圣遗物词条方案大全

    妮露圣遗物词条怎么选择?很多玩家已经入手了新角色“妮露”,并且在给她刷圣遗物,关于其圣遗物词条很多人有疑问 2022-10-20

  • 九重试炼新手最强组合方案分享

    九重试炼新手怎么搭配法宝?版本更新之后,又有不少新玩家加入游戏,很多新手前期不清楚法宝作用,不知道如何搭配。 2022-10-19

  • 阴阳师御魂整理方案码如何创建和导入

    阴阳师御魂整理方案码是游戏中新推出的御魂整理的功能,玩家们对于这个功能还非常的陌生,下面小编就为玩家们分 2022-10-12

  • 妄想山海尸鲲快速进化方案分享

    妄想山海尸鲲是游戏中新增的鲲的一种进化方向,但是不少的玩家们并不知道尸鲲应该怎么进化,下面小编就为玩家们 2022-10-12

  • 妄想山海鲲鹏快速进化方案分享

    妄想山海鲲鹏是很多玩家们所期待的一个形态吧,这种鲲外形基本就是一只鹏的状态,比尸鲲羽鲲要好看一些,下面小编 2022-10-12

  •   admin

    注册时间:

    网站:0 个   小程序:0 个  文章:0 篇

    • 223084

      网站

    • 16453

      小程序

    • 25726

      文章

    • 223

      会员

    赶快注册账号,推广您的网站吧!
    热门网站
    最新入驻小程序

    小朋友猜谜语2021-05-24

    小朋友猜谜语是一款学习教育类的

    球比分2021-05-24

    球比分是一款体育运动类的小程序

    匠人名片2021-05-24

    匠人名片是一款交友社交类的小程

    知晴2021-05-24

    知晴是一款生活服务类的小程序应

    优惠券查询工具2021-05-24

    优惠券查询工具是一款其他工具类

    成语词典汉字拼音故事大全字典2021-05-24

    成语词典汉字拼音故事大全字典是