【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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:001645
用户头像

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

关注

评论

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

行业规模将达百亿,低代码是 “银弹” 还是 “鸡肋”?

SoFlu软件机器人

中小企业数字化转型需求增加,如何才能做好?先从在线协作工具开始!

Baklib

数字化转型 企业 在线协作文档 在线协作

计算机上的高性能计算,你了解多少?

Finovy Cloud

高性能计算

赛事升级,烽烟正燃!网易云信 Innovation 2022 开发者大赛等你参加!

网易智企

开发者大赛

如何根治 Script Error.

阿里巴巴终端技术

前端 终端 Script

Chrome操作指南——入门篇(九)调试小技巧

Augus

Chrome开发者工具 9月月更

中移链DDC-SDK技术对接全流程(三)

BSN研习社

Databend 参加 PingCAP 用户峰会 2022

Databend

数据仓库 开源社区 云平台

Chrome操作指南——入门篇(八)breakpoint

Augus

Chrome开发者工具 9月月更

如何避免这10类常见故障?B站数据库架构设计做了这5步……|TakinTalks稳定性社区

TakinTalks稳定性社区

数据库治理 故障治理

异常场景测试

转转技术团队

测试方案 异常测试 用例设计

【喜讯】亚信安慧通过CMMI5级认证

亚信AntDB数据库

AntDB AntDB数据库

RabbitMQ的深入理解和最简单的用途说明

小小怪下士

Java 程序员 架构 RabbitMQ

百亿市场遭「卡脖子」,国产工业软件兴起正当时

ToB行业头条

前端必读2.0:如何在React 中使用SpreadJS导入和导出 Excel 文件

葡萄城技术团队

前端 Excel 框架

Web3.0杂谈-#002(48/100)

hackstoic

Web3.0

JavaWeb核心之ServletConfig

楠羽

Servlet 笔记 9月月更

ShareSDK Uni-app 插件

MobTech袤博科技

uni-app ios android

什么是企业帮助中心?为什么要花钱建立?看这篇文章你就懂了!

Baklib

SaaS 企业 帮助中心 在线编辑

什么是企业知识管理体系?它的基本原则是什么?我们又该怎样做?

Baklib

知识管理 知识 知识管理体系

好家伙!全网开源对标P5~P7程序员技术成长路线,阿里这次是真卷

程序员小毕

Java 程序员 面试 程序人生 架构师

用多线程实现归并排序

聚变

归并排序 Lambda函数

帮助中心就是在线版的产品使用说明书?并非如此!

Baklib

产品 产品经理 帮助中心 在线编辑 产品说明书

SpringMVC初识

十八岁讨厌编程

Java 后端开发 9月月更

Java面试笔试题大汇总一(最全+详细答案)

小小怪下士

大厂面试 java\ 面试真题 Java 面试题

Mybatis工作流程及其原理与解析

小小怪下士

Java 程序员 架构 mybatis

如何使用禅道集成钉钉

禅道项目管理

钉钉 项目管理工具 禅道

MASA MAUI Plugin 安卓蓝牙低功耗(二)蓝牙通讯

MASA技术团队

blazor MASA MAUI Xamarin MASA Blazor

一刀999?怎样让你的 iPhone 手游也拥有开挂般的体验

淋雨

imazing 存档 元气骑士

Chrome操作指南——入门篇(十)调试小技巧

Augus

Chrome开发者工具 9月月更

常用的注册中心以及他们的对比

想要飞的猪

zookeeper nacos Eureka

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