Spark灰度发布在十万级节点上的实践
副标题[/!--empirenews.page--]
【新产品上线啦】51CTO播客,随时随地,碎片化学习
本文介绍了顶级互联网公司数万节点下 Spark 的 CI 与 CD & CD 灰度发布实践。包含如何维护源代码,如何维护 Release 多版本,开发版与正式版,以及如何实现灰度发布,如何进行 hotfix 等。为了提高本文内容的可借鉴性,隐去了公司特有内容,只保留通用部分。 CI 介绍 持续集成是指,及时地将最新开发的且经过测试的代码集成到主干分支中。 持续集成的优点
Spark CI 实践 目前主流的代码管理工具有,Github、Gitlab等。本文所介绍的内容中,所有代码均托管于私有的 Gitlab 中。 鉴于 Jenkins 几乎是 CI 事实上的标准,本文介绍的 Spark CI CD & CD 实践均基于 Jenkins 与 Gitlab。 Spark 源码保存在 spark-src.git 库中。 由于已有部署系统支持 Git,因此可将集成后的 distribution 保存到 Gitlab 的发布库(spark-bin.git)中。 每次开发人员提交代码后,均通过 Gitlab 发起一个 Merge Requet (相当于 Gitlab 的 Pull Request) 每当有 MR 被创建,或者被更新,Gitlab 通过 Webhook 通知 Jenkins 基于该 MR 最新代码进行 build。该 build 过程包含了
Jenkins 将 build 结果通知 Gitlab,只有 Jenkins 构建成功,Gitlab 的 MR 页面才允许 Merge。否则 Gitlab 不允许 Merge 另外,还需人工进行 Code Review。只有两个以上的 Reviewer 通过,才能进行最终 Merge 所有测试与 Reivew 通过后,通过 Gitlab Merge 功能自动将代码 Fast forward Merge 到目标分支中 该流程保证了
Spark CD 持续交付 CD 持续交付介绍 持续交付是指,及时地将软件的新版本,交付给质量保障团队或者用户,以供评审。持续交付可看作是持续集成的下一步。它强调的是,不管怎么更新,软件都是可随时交付的。 这一阶段的评审,一般是将上文集成后的软件部署到尽可能贴近生产环境的 Staging 环境中,并使用贴近真实场景的用法(或者流量)进行测试。 持续发布的优点
Spark CD 持续发布实践 这里有提供三种方案,供读者参考。推荐方案三。 方案一:单分支 正常流程 如下图所示,基于单分支的 Spark 持续交付方案如下:
注:
bug fix 在 Staging 环境中发现 spark-dev 的 bug 时,修复及集成和交付方案如下:
hot fix (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |