设为首页 收藏本站
查看: 789|回复: 0

[经验分享] Instagram:从Redis到Cassandra 成本节省1/4

[复制链接]

尚未签到

发表于 2016-12-21 06:45:39 | 显示全部楼层 |阅读模式
<!--StartFragment -->Rick Branson是Instagram基础架构软件工程师,他在接受DataStax联合创始人Matt Pfeil采访时表示:随着数据量的快速增长,Redis已不再是他们的最佳使用对象,他们正在大量使用Cassandra。
下面是Matt Pfeil对Rick Branson的采访,笔者摘取了与Cassandra有关的核心内容进行编译:Matt:Rick,听说你和伙伴们都在使用Cassandra,那能否跟我们分享你们的使用情况呢?Rick:当然可以,我们已使用7、8个月了。最初,我们使用它主要是来存储涉及安全和网站诚信等方面的审计信息。这样,我们就会涉及到拦截垃圾邮件、滥用用户等其他相关东西。最初,这些任务都是在Redis中进行,但随着数据量快速增长,仅把它保存在内存中已不是高效之举,这是典型的高写入、低读取。而面对这种问题情景,Cassandra则是最拿手的,它可以毫不费劲地解决这方面问题。我们一开始设置3个节点群,但随着用户量的增长,节点群也随之增长到了12个,这基本上就是我们后端主应用程序。最近,我们决定移植另外一个项目,显然,该项目要比先前的要困难很多。团队里的每个人都开始投入到Cassandra上,大家花时间阅读文档、学习如何更高效地运作Cassandra。我们使用Cassandra来调用“收件箱(inboxes)”或应用中的新闻推送。基本上,这都是与用户的所有活动相绑定的,如果有人喜欢你的照片,赞或者评论照片,那么你的Instagram好友会看到相应的信息。我们之所以决定把数据迁到Cassandra上,主要是因为之前在Redis上遇到了内存限制。Cassandra在可靠性和可用性上,都有着非常好的体验。我们只用了几天的功夫就成功地把项目迁移过来了。关于集群上的一些细节:12个节点群的EC2 hi1.4xlarge 实例;在该集群上存储1.2TB数据;在高峰期,以20000次/秒的速度写到特定的集群、15000次/秒的速度读取信息。从这次实践中我们也学到了很多,并且会把学到的运用到其它实现上。Matt:听起来真令人兴奋。刚刚你和我们分享了用户项目上一些非常有趣的事情,正如你提到的,从Redis迁移到Cassandra,是一个基于内存的发行。那这样做的背后动机是什么?Rick:如上面提到的后端主应用程序,我们先移开一个Redis主/从复制设置,但成本太高昂了。我们从内存中取出,遇到大实例,就放在硬盘上,当不经常读取的时候,它会运行的很好。而使用Cassandra可以削减近1/4的成本。不仅如此,它还可以很好地释放我们扔在集群上的数据,由于它更具扩展性,还会根据需要自动添加节点。尤其是当从一个unsharded设置转到sharded设置时,Cassandra可以很好地解决,而且在进行shard数据时,没有任何痛苦。在另一个我们称之为“inbox”的用例中,提要已被分片。它拥有32个节点群集,其中主节点16个、故障转移副本节点16个。我们注意到,我们耗尽了所有机器的内存,而CPU资源并没有完全占用。不难发现即使在内存耗尽时,Redis对CPU的使用仍然相当高效。在这些用例上,使用Cassandra操作集群不仅成本廉价,而且更易操作。持久性则是Redis并不高效的主要原因,关于这一点,在Cassandra Summit 2013峰会上我会继续介绍。关于CassandraApache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable数据模型与Amazon Dynamo的完全分布式的架构于一身。Facebook于2008开源了Cassandra。此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-317020-1-1.html 上篇帖子: Redis 常见的性能问题和解决方法 下篇帖子: redis的Java客户端Jedis测试验证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表