Netflix 技术博客给开发者提了 10 条高可用架构的建议,这些都是工程师们从实战中总结出来的经验与技巧,且具有通用性,具体如下。

1. 优先考虑区域部署而不是全球部署

我们的目标是尽可能提供最佳的客户体验。因此,要限制系统变更的影响范围,对变更进行验证,然后将变更推给客户。此外,在每个区域部署之间对应用程序功能进行验证,并避免在目标区域的高峰时段进行部署。

2. 使用红黑部署策略进行生产部署

在红黑部署中,新版本的应用程序,也就是红色版本在通过健康检查之后立即开始接收流量。在确定红色版本的健康状态之后,之前的黑色版本将被禁用,并且不会收到任何流量。如果要回滚,只需要启用以前的版本即可。这种模型可以加快我们的部署流程,并可以在出现问题时回滚到之前的状态。

3. 使用部署窗口

每当你在部署新版本应用时,都要记住以下两点:第一,你或你的同事是否有监控部署,并在必要时进行补救?第二,如果出现了问题,你是否能够尽可能减小影响范围?

我们的流媒体流量遵循相对可预测的模式,大多数人会在晚上打开视频流,所以,建议你选择工作时段和非高峰时段的部署窗口。

4. 确保不要在非工作时段或周末自动触发部署

部署窗口也适用于自动触发的事件。无论你使用哪一种自动化机制,都要确保任何自动触发的管道都可以在无人值守的模式下运行。

5. 在将代码推送到生产环境之前使用各种测试和金丝雀分析来验证代码

实现快速部署的关键是在部署之前自动验证新版本的软件。理想情况下,所有必要的测试套件都应该在没有人工干预的情况下运行。另外,建议使用金丝雀分析。金丝雀分析是一种通过实时流量来验证服务变更的有效方法。

6. 在部署时尽可能只用已经测试过的东西

既然你已经对新版本进行了大量的测试和验证,那么,建议你在进行生产环境部署时只用测试过的东西,而不是再重新构建一套新的东西。

7. 定期检查联系人设置

有时候,为了确保应用程序的可用性,你需要定期检查你的联系人设置,这样可以确保在发生事故时能够迅速找到解决问题的人。

8. 知道如何快速回滚部署

即使有可靠的测试、金丝雀和其他验证过程,将某些东西部署到生产环境中仍然会出现问题。也许这是一种由竞态条件导致的罕见错误,只会在达到一定规模时才发生。但无论是何种情况,最重要的是你要知道在必要时如何快速恢复到之前正常的状态。

9. 如果实例运行不正常,将部署视为失败

有时候我们在部署成功后感觉状态不对,实例起来了,但不能正常处理流量。当一个关键的服务运行不正常时,请求很快会堆积起来,有时会导致重试雪崩,造成各种各样的破坏。因此,当实例运行不正常时,要将部署视为失败。

10. 自动化非典型部署,而不是进行一次性手动部署

每个工程师都为非典型情况编写过一次性脚本。而当这类“一次性”情况再次发生时,团队的其他成员并不知道写脚本的那位工程师在脚本里都做了什么,因为脚本本来是打算运行一次就丢掉的。因此,别忘了定期测试非关键场景的非典型和典型部署管道。管道是自动执行一系列步骤的有效手段,即使有些步骤并不会每天都执行。

除此以外,建议你尽可能使用自动化,但在必要的时候也需要人工干预。在进行自动部署时,也最好通知团队有关部署的情况,让他们密切关注服务的健康状况。还有一点是,使用先决条件验证预期状态,来确保在部署新代码或进行其他变更时假设仍然有效。

Netflix的高可用架构建议相关推荐

  1. mysql版本不一致会导致uuid_MySQL性能优化和高可用架构建议

    1.主从复制binlog_format要使用row,statement会导致主从数据不一致(基于语句,rand或uuid等函数没法恢复) 2.如果使用binlog恢复数据,标准做法是用mysqlbin ...

  2. Bilibili高可用架构【B 站在云+社区沙龙分享干货】

    来源:kunzhao.org/docs/cloud-plus-bbs/bilibili-high-availability/ [导读]本文整理了 B 站在云+社区沙龙分享的高可用架构,一起来学习小破站 ...

  3. 高可用架构和系统设计经验

    导语 | 本文从研发规范层面.应用服务层面.存储层面.产品层面.运维部署层面.异常应急层面这六大层面去剖析一个高可用架构和系统需要有哪些关键的设计和考虑. 一.高可用系统架构设计思想 1-1.可用性和 ...

  4. 雪球在股市风暴下的高可用架构改造分享

    本文根据唐福林老师在"高可用架构"微信群所做的<股市风暴下的雪球架构改造经验分享>整理而成,转发请注明来自微信公众号ArchNotes. 唐福林,雪球首席架构师,负责雪 ...

  5. c++获取可用端口号_PG高可用架构实施方案

    1.PG概述 PostgreSQL是一个功能非常强大的.源代码开放的客户/服务器关系型数据库管理系统(RDBMS).PostgreSQL最初设想于1986年,当时被叫做Berkley Postgres ...

  6. 坑系列 --- 高可用架构的银弹

    呵呵,题图是一队困在坑中的鸭子:)作为一个搬砖的,我经常被困着.今天高考,想起15年前的今天(哦,那时候是七月高考),恩,考完了,还不错,然而15年后还是搬砖:) 0. 承上启下 之前那篇文章写出来以 ...

  7. 高可用架构设计之无状态服务

    高可用架构设计之无状态服务 笑谈架构设计 事故的发生是量的积累的结果,任何事情都没有表面看起来那么简单,在软件运行的过程中,随着用户量的增加,不考虑高可用,迟早有一天会发生故障,不得事先考虑高可用设计 ...

  8. 应对618,京东到家订单系统高可用架构的迭代实战

    闫文广 京东到家后台研发部架构师 从事支付系统.计费系统和订单履约系统等后台领域的研发,现专注于订单中心架构优化和研发相关的工作. 大家好,我是京东到家后台研发部的架构师闫文广,今天将给大家分享京东到 ...

  9. 秒杀系统架构解密与防刷设计 - 高可用架构系列

    转载:http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209083286&idx=1&sn=51287666d25c9 ...

最新文章

  1. windows 如何使用4GB(开启3GB和PAE)
  2. 面向对象课程 - T-shirt
  3. Dapr + .NET 实战(七)Secrets
  4. python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫
  5. wordpress绿色小清新运营笔记博客主题模板
  6. AWS 创建 pem 文件
  7. 模拟生命_吸烟致癌?
  8. JZOJ5775 农夫约的假期
  9. USB3.0接口定义浅析
  10. c语言爱心函数3D,C语言控制台打印3D爱心图案
  11. 实验室建立计量管理体系的重要性和意义
  12. 微信内置浏览器如何自动跳转其它浏览器
  13. 3 个简单的技巧让你的 vue.js 代码更优雅!
  14. 利用抖音Cookie充值接口提取支付链接,调起原生微信h5支付宝h5支付
  15. 对称加密、非对称加密和散列算法
  16. [m0leCon beginner 2022] 部分
  17. 封装一个活灵活现的原生JS排序,js按照拼音排序,js按照“数字-字符串-汉字拼音”排序,数组对象排序,数组排序微调即可
  18. 狼羊菜过河问题c语言算法,算法系列之十四:狼、羊、菜和农夫过河问题
  19. python怎么让输出结果为01_python函数基础-参数-返回值-注释-01
  20. 总结《社交阅读的情绪化输出研究——基于2021年度豆瓣热门书评的文本分析》为文献综述...

热门文章

  1. 解题报告:AcWing 1165. 单词环(01分数规划、hash、经验优化)
  2. 微信小程序云开发用户身份登录_微信小程序开发用户授权登录(下)
  3. php定时执行代码漏洞_【漏洞风险提示】Drupal任意PHP代码执行漏洞通告
  4. Spring Boot日志学习记录【2】
  5. 开源 java CMS - FreeCMS2.8 模板管理
  6. python中lambda使用
  7. 12c adg添加数据文件报错处理ORA-01111
  8. python 获取excel文件内sheet名称列表
  9. Android保存图片到数据库,从数据库取图片的方法
  10. java异常处理好习惯