写点什么

Flickr 选择使用 Sentinel 来保证 Redis 的高可用性

  • 2014-08-19
  • 本文字数:1043 字

    阅读完需:约 3 分钟

Flickr 近期宣布,针对他们的线下任务处理子系统中的 Redis ,已经部署了 Sentinel ,用于自动化其故障转移操作。但他们对 Redis 的一致性问题感到了担忧。

去年, Factual 的工程师及分布式系统专家 Kyle Kingsbury ,对 Redis 的一致性问题进行了研究,并将结果发表在了他的 Jespen 系列连载中。在文章中,他表示能够使用 Redis 和 Sentinel 构造出这样一个场景:在 Redis 通知我们已成功的写请求中,有 56% 的写请求事实上是被丢弃了。Kingbury 表示,这个令人担心的结果是由 Sentinel 系统中的两个问题导致的。

第一个问题,要注意在网络分割开始时,所有客户端都会丢失写请求的数据。因为当网络出现故障时,客户端都往 n1 节点写数据。由于之后 n1 退级,不再是主节点,在这个时间窗口内写入的数据将全部丢失。第二个问题是由 split-brain 引起的:在网络分割现象消失之前,n1 和 n5 都成为了主节点。一些客户端可能可以成功地写入数据,而其他的将丢失所写的数据,这取决于客户端与哪个节点进行交互。

Redis 的作者 Salvatore Sanfilippo 对这篇文章作出了回复。他确认了这个问题的存在,但也同时指出:丢失数据量最小化并不是 Sentinel 的设计目标。

需要明确的是,这条指责是正确的。它表明了 Sentinel 并不擅长处理在网络分割中将丢失数据量最小化这个复杂的问题,这一点原本就不是 Sentinel 的设计目标。况且,在用户通过自己所写的脚本来处理故障转移的案例中,99% 的案例在故障检测和故障转移处理过程上,远远逊于 Sentinel。

尽管 Flickr 知道这些问题,但由于起初他们为自己的线下任务处理子系统制定了过于自信的 SLA 目标,他们开始转而使用 Sentinel。在注意到他们的手动故障恢复流程不可能帮助他们达到 99.995% 正常运行时间的目标后,他们寻找了其他解决方案,并选定了 Sentinel。

在对 Sentinel 系统及它的配置参数进行重要的测试之后,他们能设计出一种在 4~6 秒钟内自动进行故障转移的方法。从而使得他们可以达到之前设定的正常运行时间的目标。在测试过程中,他们也能重现 Kingsbury 所发现的场景。但是,Flickr 工程师 Richard Thorn 和 Shawn Cook 解释道:“尽管我们相信我们的生产环境会受到 split-brain 的影响,但我们确信所获得的好处远大于带来的风险”。

参考英文原文: Flickr Chooses Sentinel for Highly Available Redis


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-19 04:093198

评论

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

Qt示例 | 模拟时钟示例 Analog Clock Example

YOLO.

qt 10月月更 C++

【kafka】kafka的服务复用与隔离设计方案

石臻臻的杂货铺

kafka 后端 10月月更

云原生时代的DevOps平台设计之道

北京好雨科技有限公司

KMP算法的实现详解

lovevivi

c 数据结构 10月月更

什么是云渲染?《阿凡达》《阿丽塔》告诉你

Finovy Cloud

人工智能 云渲染

手撕常见JS面试题

helloworld1024fd

JavaScript

基于纯前端类Excel表格控件实现在线损益表应用

葡萄城技术团队

前端 Excel 报表

开源云原生平台对比 KubeSphere vs Rainbond

北京好雨科技有限公司

故障复盘究竟怎么做?美图SRE结合10年经验做了三大总结(附模板)

TakinTalks稳定性社区

运维 SRE SRE实践

中原银行:基于StarRocks构建OLAP全场景架构解决方案,迈入极速统一时代

StarRocks

数据库

从零开始实现一个Promise

helloworld1024fd

JavaScript

中软鸿联:集聚智能化能量势场,点燃小家电创新星火

中软国际AIoT开发者社区

智慧家电

kubernetes为什么会火?为什么值得我们学习?

王中阳Go

Kubernetes k8s 容器编排 10月月更 动态扩缩

C# ref用法,实现引用传递(地址传递)

IC00

C# 学习 程序员 上位机 10月月更

真机调试设备不够?荣耀云调试帮你忙

荣耀开发者服务平台

开发者 手机 云服务 荣耀 honor

喜迎华诞,openEuler 22.09 正式发布,与1265名开发者共建面向数字基础设施的开源操作系统

openEuler

开源 开源操作系统 open Euler

写个JS深拷贝,面试备用

helloworld1024fd

JavaScript

ctk流程

留白的艺术

【数据结构之红黑树】深入原理与实现

C++后台开发

数据结构 后端开发 红黑树 linux开发 C++开发

开奖啦!看看 9 月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动

直播预告|Apache APISIX x KubeSphere 在线 Meetup 来袭

API7.ai 技术团队

APISIX KubeSphere

MASA Framework的异常处理

MASA技术团队

.net MASA Framewrok MASA

数据结构学习,串篇(顺序串及算法)

IC00

学习 数据结构 算法 学习笔记 10月月更

公网对讲SDK| 快速搭建公网对讲应用

anyRTC开发者

音视频 监听 快对讲 AI降噪 录音

Qt | 本地存储配置信息 QSettings

YOLO.

qt 10月月更 C++

大学毕业后转行软件测试我后悔了

测吧(北京)科技有限公司

测试

中软鸿联:数字为运动蓄能,智能为健康充值

中软国际AIoT开发者社区

智能穿戴 运动健康

数有引力 智造未来 | 华为云云商店星品推介会·厦门站

极客天地

NFT 数据基础设施 NFTScan 的产品介绍【科普】

NFT Research

区块链 NFT 数据基础设施

2022互联网母婴行业用户洞察

易观分析

互联网 母婴

MySQL高级--性能优化之慢日志查询

Java学术趴

10月月更

Flickr选择使用Sentinel来保证Redis的高可用性_语言 & 开发_Benjamin Darfler_InfoQ精选文章