《设计可伸缩的Twitter》原文见
http://natishalom.typepad.com/nati_shaloms_blog/2009/04/writing-your-own-scalable-twitter.html
期待有人翻译为中文。下面是我的中文摘要。
twitter的可伸缩性挑战
1、消息风暴问题。tweets、re-tweets,海量的消息如何处理。
2、阅读tweets问题。众多的用户同时阅读。
设计可伸缩的twitter:
选择正确的可伸缩性模式。
分区模式作为核心设计原则。
twitter是以数据库为中心设计(大多数web应用是这种模式)与以消息为中心设计的结合。
黑板模式适用于这一场景。
分区模式和黑板模式作为可伸缩twitter应用的基石。
可伸缩性需求
Tweet容量:每天100亿tweets
Tweet存储:每天100G(按10:1压缩)
其他假设:每条tweet最多140个字符、tweet不可更改(只能增、删)、限制客户端应用每小时只能发70次请求
使用内存数据网格In-Memory Data Grid (IMDG)作为黑板系统
将数据存到内存里,避免磁盘I/O
在memcached和IMDG两者中选择IMDG
memcached 读最多时选用比较好。不支持失败恢复、缺乏高可用性。使用memcached,必须以db作为后端,每次发表tweet, 必须同步写到memcached和db。读访问可伸缩性足够了,写和更新可伸缩性受限。
IMDG是设计来处理读/写场景。仍然可以用db来做长久的持久化,但因为IMDG已经负责在内存维护可靠性,可以异步更新db,避免db瓶颈。
设计分区架构
设计任何类型分区集群的主要考虑之一就是确定分区Key
twitter选用user-id作为分区Key
数据容量分析
全部数据都放到内存经济上不可行。所以IMDG只是作为缓存。实时搜索的数据(24小时内)会加载到内存。其他数据从db取。需要10台服务器,每台在内存保留10G数据。
选择正确的回收策略
采用基于时间的回收策略-内存里保留最新的数据。
tweet写的可伸缩性
通过@SpaceRouting指定路由属性
web前端直接调用space.write( new Tweet(..),..) 就可以发送tweets
space proxy隐藏了路由到不同分区的复杂性
tweet读的可伸缩性
黑板模式
所有东西都写到黑板上,followers可以读
SELECT * FROM Post WHERE UserID=<id> AND PostedOn > <from date>.
因为按user-id分区,通过mapreduce模式来找到所有follow的用户,进而查找那些用户的更新。在GigaSpaces中通过分布式任务api达到这一目的。
Web前端的可伸缩性
web应用<->IMDG代理(load-balancer<->web服务器集群)<->IMDG实例
保持web层的无状态,避免会话粘性
SNA
使用云计算,简单又省钱
分享到:
相关推荐
1.Designing Data-Intensive Applications The Big Ideas Behind Reliable Scalable And Maintainable Systems 2017; 2.英文原版,PDF格式; 3.内容简介: If you develop applications that have some kind of server/...
Designing Distributed Systems Patterns and Paradigms for Scalable, Reliable Services 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
70-443 PRO Designing a Database Server Infrastructure by Using Microsoft SQL Server 2005
Designing Data-Intensive Applications 中文 epub 版本
微服务从设计到部署-designing-and-deploying-microservices,designing-and-deploying-microservices,中文版
Designing Design - 设计中的设计,原研哉 著,对设计的思考;中清中文版
英文文章名:Designing a Wireless Network 毕业设计中要求交一篇有关本专业的中英文翻译,翻译了其中一章(第五章)
Designing a Wireless network <br>Foreword xxv <br>From Past to Present 1 <br>Introduction 2 <br>Exploring Past Discoveries That Led to Wireless 4 Discovering Electromagnetism 4 <br>...
Designers of digital technology products no longer regard their job as designing a physical object--beautiful or utilitarian--but as designing our interactions with it. In Designing Interactions, ...
1.Introduc/on 2.Problem Statement 3.Graph500 Benchmark 4.Design Details 5.Performance Evalua/on 6.Conclusion & Future Work
Designing Software Architectures A Practical Approach 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
如何设计WEB导航Designing.Web.Navigation
全面介绍CMOS和双极性模拟IC设计。 假定没有线性设计的先验知识,因此对于具有非模拟背景的工程师而言是可以理解的。
Designers of digital technology products no longer regard their job as designing a physical object--beautiful or utilitarian--but as designing our interactions with it. In Designing Interactions, ...
Basics of Designing a Digital Radio Receiver
《Designing Interactions》是2006年MIT Press (MA)出版的图书,作者是Bill Moggridge。 Language: English Pages: 791 英文完整清晰版
Designing Software Architectures A Practical Approach 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Designing A Database Server Infrastructure Using Microsoft Sql Server 2005
它已经成了我的设计工具集里不可缺少的一部分。现在,当我设计的时候有四个必备元素:我的手写板、Photoshop、Flash以及这本书。它帮助我组织头脑风暴,并为我的工作提供批评意见。我愿意向任何与创建界面有关的人士...
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems Want to know how the best software engineers and architects structure their applications to ...