立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

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:093030

评论

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

C++语言中std::array的神奇用法总结,你需要知道!

华为云开发者联盟

容器 数组 函数

架构师训练营第 1 期第 10 周总结

owl

极客大学架构师训练营

CAP理论

DL

架构师训练营第十周作业

文智

极客大学架构师训练营

排查指南 | mPaaS 小程序提示“网络不给力”时该如何排查?

蚂蚁集团移动开发平台 mPaaS

小程序 网络 小程序生态 mPaaS

解密智联招聘的大前端架构Ada

智联大前端

Serverless 大前端 开发工具

第十周课后练习

饭桶

揭秘11.11监控排障利器 京东高稳定日志服务深度解析

京东科技开发者

云计算 DevOps 日志监控

我是如何使计算时间提速25.6倍的

白日梦想家

Python 代码优化 Numpy 代码加速

身为程序员还记得C语言经典算法(附带答案)吗?

ShenDu_Linux

c c++ 算法 编程语言

源码 | 浅谈Webpack原理,以及loader和plugin实现。

梁龙先森

大前端 webpack

接口测试如何在json中引用mock变量

测试人生路

json 接口测试 Mock

「面试必备」最新整理出的腾讯C++后台开发面试笔记

linux大本营

c++ Linux 后台开发 架构师

智慧公安二维码定位报警系统开发

t13823115967

架构师训练营第 1 期第 10 周作业

owl

极客大学架构师训练营

2020双11,Dubbo3.0 在考拉的超大规模实践

阿里巴巴云原生

阿里云 开源 云原生 dubbo

一线大厂欺负程序员?京东单方面辞退38岁P7员工三次败诉

Java架构师迁哥

Canal 组件简介与 vivo 帐号实践

vivo互联网技术

数据库 分布式 数据存储

Mac下Docker Desktop配置阿里云镜像加速器

jiangling500

Docker 阿里云镜像加速器

深度剖析,为何C语言在开发领域的地位如此稳固

Philips

Python .net rust C语言 Go 语言

《我想进大厂》之Spring夺命连环10问

艾小仙

Java spring 程序员 面试 大厂

云算力矿机系统开发,区块链挖矿平台搭建

薇電13242772558

区块链 云算力

Mysql数据备份与恢复

张攀钦

MySQL

薇娅携手中国航天基金会与我们的太空 带你“益起探月,共舞九天“

shell脚本的使用该熟练起来了,你说呢?(篇一)

良知犹存

Linux shell脚本编写

不懂源码?来看看阿里P8亲自手码的Spring源码解析整套笔记,高薪offer唾手可得!

比伯

Java 编程 架构 面试 计算机

什么是物联网?常见IoT 物联网协议最全讲解

华章IT

物联网 IoT

Kubernetes初体验--用Kubernetes部署一个Web服务

网管

Kubernetes k8s Web 服务 Go 语言

智慧公安大数据可视化分析系统搭建

t13823115967

第十周学习总结

饭桶

Linux 笔记(三): 软件安装

Leo

Linux 学习 大前端

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