写点什么

Twilio 的混沌工程实践

  • 2017-12-27
  • 本文字数:920 字

    阅读完需:约 3 分钟

Twilio 团队分享了他们的初次混沌工程实践,他们使用 Gremlin 往自家的队列系统中注入故障,测试系统的自动恢复能力。

Twilio 提供 SMS 和电话网关服务,开发者可以在他们的代码中调用 Twilio 的 API。Twilio架构的核心部分是他们的分布式队列系统和速率限定系统。它提供了持久化的队列,解决了系统故障和消息处理的延迟问题,避免消息丢失。这个队列系统叫作 Ratequeue ,由 Twilio 团队开发。Ratequeue 对消息出队速率进行了限定——每个电话号码都有一个自己的临时队列。因为开发者有可能以很快的频率调用 API,所以速率限定是很有必要的,而 Twilio 将消息推送到电话网络的速度也需要加以控制。Ratequeue 是基于 Redis 开发的,可以进行横向扩展。单个分片故障并不会影响到其他分片。另外,为了高可用,每个分片都有自己的主节点和副本。

之前,如果有分片发生故障,需要由人工手动将副本提升为主节点。这就要求先定位到拥有相同分片数量的主机,然后把它加到负载均衡器中。Twilio 团队开发了两个系统,旨在对这一过程进行自动化——一个自动化的失效备援系统和一个用于测试前者的故障注入系统。故障注入系统属于混沌工程,通过制造随机的故障来测试系统的自我恢复能力。

测试的首要目的是保证零数据丢失,其次要保证能够自动检测出故障,并推举出新的主节点。Twilio 团队基于 Amazon Kinesis、Nagios 和 Lazarus 开发了自己的解决方案——也就是他们的集群自动化服务。每个 Ratequeue 副本将主节点的心跳情况发送给 Nagios,如果达到某个阈值,Nagios 就向 Kinesis 推送通知。Lazarus 监听 Kinesis,检查集群的健康状况,如果出现故障,就进行恢复。

为了测试自动故障恢复能力,Twilio 团队开发了一个叫作 Ratequeue Chaos 的工具,它会选择一个分片,停掉它的主节点,然后监控其自我恢复过程。他们有一个叫作 Gremlin 的服务,用于将故障注入到系统中,触发失效备援。Gremlin 支持可控的故障注入,Ratequeue Chaos 通过 Gremlin 提供的 API 来调用它。Twilio 的 staging 环境每 4 个小时会重复一次这个过程。

Twilio 团队也分享了他们从这一实践中学到的东西——基于测试模型的假设、用于运行测试的框架、在生产环境中需要有一个回退计划。

查看英文原文 Chaos Engineering at Twilio

2017-12-27 18:001823
用户头像

发布了 322 篇内容, 共 143.1 次阅读, 收获喜欢 148 次。

关注

评论

发布
暂无评论
发现更多内容

TCL电视 75T7K和TCL 75T5K对比评测

妙龙

智能电视 tcl电视

Vue3.5常用特性整理

不在线第一只蜗牛

JavaScript vue.js 前端

音乐NFT开发的测试

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

人工智能丨Midscene:让UI自动化测试变得更简单

测试人

人工智能 软件测试

如何在Linux下安装Python环境的详细指南

克莱因瓶

全面解析 Anaconda 的安装与使用

克莱因瓶

Redis究竟为什么这么快?

快乐非自愿限量之名

数据库 redis 缓存

音乐NFT的上线流程

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

TCL 75T7K和海信75E7N对比评测

妙龙

智能电视 TCL

使用 Ollama 一分钟搭建私有 AI 大模型 deepseek-r1

JEECG低代码

ollama DeepSeek-R1 AI 大模型

如何使用 Virtualenv 创建和管理 Python 虚拟环境的详细指南

克莱因瓶

Windows 10 version 22H2 中文版、英文版下载 (2025 年 1 月更新)

sysin

windows

构建1688自动代采系统:PHP开发实战指南

代码忍者

1688代采

AI 发展是否正在放缓?AI 发展将驶向何方?

Baihai IDP

程序员 AI 白海科技 LLMs

如何在 Linux 系统下安装并配置 Anaconda 上的 Python 开发环境

克莱因瓶

Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 1 月更新)

sysin

windows

Windows Server 2022 中文版、英文版下载 (2025 年 1 月更新)

sysin

windows

Windows Server 2025 中文版、英文版下载 (2025 年 1 月更新)

sysin

windows

电商平台爬虫技术深度剖析:实战心得与技巧汇总

代码忍者

IPQ4019/IPQ4029|WallysTech DR40X9: Unlocking the Power of Mesh Networking with BATMAN

wallyslilly

IPQ4019 ipq4029

海信E5N Pro+评测 海信85E5N Pro+、75E5N Pro+、65E5N Pro+怎么样

妙龙

智能电视 海信电视

如何在Mac上安装Python环境的详细指南

克莱因瓶

如何使用 Python 内置虚拟环境工具 venv 创建和管理虚拟环境

克莱因瓶

音乐NFT开发中的主要技术难点

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

你的LLM评估方法过时了吗?这三个范式转变不容错过

Baihai IDP

程序员 AI LLM LLM评估范式

数字藏品(NFT)开发的智能合约

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

数字藏品NFT的开发框架

北京木奇移动技术有限公司

软件外包公司 音乐NFT 体育NFT

TCL 75T7K和雷鸟鹤6 Pro 24款评测选哪个好

妙龙

智能电视 tcl电视

如何在一台计算机上管理多版本的 Python

克莱因瓶

《CPython Internals》阅读笔记:p356-p359

codists

CPython Internals

Windows 11 23H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 1 月更新)

sysin

windows

Twilio的混沌工程实践_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章