3个回答
展开全部
微博的工作原理:
1、微博从产品性质上来说几乎完全就是一个消息分发平台,因此一个良好的消息传递机制是至关重要的。当一个用户发出消息之后,它可以被许多人观察到。对于一个名人来说,被数十万用户所追随是一件非常普通的事情。那么此时,如果期望所有的追随者都即时地看到消息这几乎是件不可能的事情,因此在实现时我们往往需要构建一个消息队列,将消息快速地派送至队列中等待处理,最终将这条消息“陆续地”显示在每个追随者的时间轴上。这里势必会产生延迟,但对于业务质量来说并非不可接受。但显然这个延迟也不可以太长,在Twitter上这个平均延迟是500毫秒,从绝对数值上看并不算太短,但也已够用。 Twitter在这方面的处理方式是利用Scala的Actor模型及Apache Mina编写了一个分布式的消息传输框架Kestrel,它具有快速、轻量(包括注释才不到2000行代码)、持久、稳定等特性,但不具备事务性,也不保证消息的顺序处理。因此可以这么说,Kestrel是一个Twitter根据自身需求“定制”出的消息传输机制。
2、另外一个要点便是每个大型系统都不可或缺的缓存机制。有人说缓存就好比万能膏药,哪儿不舒服就再哪儿擦点便能见效。这话有一定道理。如 Twitter便设计了相对复杂的多级缓存机制,几乎对于每个IO密集的地方都进行了缓存。例如记录ID序列的向量缓存(Vector Cache),纪录每条消息等具体内容的行缓存(Row Cache)。此外,由于它的API访问量很大,仅仅是从消息内容转化成API的输出形式(可能只是一些字符串连接操作)也会消耗较多代价,因此 Twitter还为消息的API输出形式设计了片断缓存(Fragment Cache)。最后自然还有对某些热门页面的页面缓存(Page Cache)。除了页面缓存之外,其他缓存的命中率都在95%以上,可见缓存机制对于Twitter系统的重要程度。值得注意的是,向量缓存及行缓存都是 Write Through的,这意味着基本上所有的新数据都在缓存中存在一份拷贝。正如Twitter的Evan Weaver在QCon London 2009会议上讲的那样:Everything runs from memory in Web 2.0。
3、最后,对于微博类应用来说,可能会因为某个突发事件造成访问量暴增的现象,如何抵抗住消息轰炸也是一个重要的课题。例如Twitter使用了云计算的方式来应对此类问题,在需要的时候它便会租用更多的计算资源。不过增加服务器只是纯硬件的投入,而架构设计能否顺利且充分地利用起新增的设备也是一个值得关注的地方。从这个角度看,一个高效的分布式消息传递机制在这里会扮演重要的角色。如果有了合适的消息机制,首先能够将消息负载较为容易地平衡至多台服务器上,其次即使是在压力增大的情况下,响应时间虽然会按线性增长,但是系统的吞吐量还是可以保持在正常的水平。
1、微博从产品性质上来说几乎完全就是一个消息分发平台,因此一个良好的消息传递机制是至关重要的。当一个用户发出消息之后,它可以被许多人观察到。对于一个名人来说,被数十万用户所追随是一件非常普通的事情。那么此时,如果期望所有的追随者都即时地看到消息这几乎是件不可能的事情,因此在实现时我们往往需要构建一个消息队列,将消息快速地派送至队列中等待处理,最终将这条消息“陆续地”显示在每个追随者的时间轴上。这里势必会产生延迟,但对于业务质量来说并非不可接受。但显然这个延迟也不可以太长,在Twitter上这个平均延迟是500毫秒,从绝对数值上看并不算太短,但也已够用。 Twitter在这方面的处理方式是利用Scala的Actor模型及Apache Mina编写了一个分布式的消息传输框架Kestrel,它具有快速、轻量(包括注释才不到2000行代码)、持久、稳定等特性,但不具备事务性,也不保证消息的顺序处理。因此可以这么说,Kestrel是一个Twitter根据自身需求“定制”出的消息传输机制。
2、另外一个要点便是每个大型系统都不可或缺的缓存机制。有人说缓存就好比万能膏药,哪儿不舒服就再哪儿擦点便能见效。这话有一定道理。如 Twitter便设计了相对复杂的多级缓存机制,几乎对于每个IO密集的地方都进行了缓存。例如记录ID序列的向量缓存(Vector Cache),纪录每条消息等具体内容的行缓存(Row Cache)。此外,由于它的API访问量很大,仅仅是从消息内容转化成API的输出形式(可能只是一些字符串连接操作)也会消耗较多代价,因此 Twitter还为消息的API输出形式设计了片断缓存(Fragment Cache)。最后自然还有对某些热门页面的页面缓存(Page Cache)。除了页面缓存之外,其他缓存的命中率都在95%以上,可见缓存机制对于Twitter系统的重要程度。值得注意的是,向量缓存及行缓存都是 Write Through的,这意味着基本上所有的新数据都在缓存中存在一份拷贝。正如Twitter的Evan Weaver在QCon London 2009会议上讲的那样:Everything runs from memory in Web 2.0。
3、最后,对于微博类应用来说,可能会因为某个突发事件造成访问量暴增的现象,如何抵抗住消息轰炸也是一个重要的课题。例如Twitter使用了云计算的方式来应对此类问题,在需要的时候它便会租用更多的计算资源。不过增加服务器只是纯硬件的投入,而架构设计能否顺利且充分地利用起新增的设备也是一个值得关注的地方。从这个角度看,一个高效的分布式消息传递机制在这里会扮演重要的角色。如果有了合适的消息机制,首先能够将消息负载较为容易地平衡至多台服务器上,其次即使是在压力增大的情况下,响应时间虽然会按线性增长,但是系统的吞吐量还是可以保持在正常的水平。
万铭网络推广
2024-11-19 广告
2024-11-19 广告
网络营销是利用互联网平台,通过各种在线手段来推广和营销产品或服务的活动。具体来说,它包括制定并执行网络营销策略,如市场调研、网站建设、搜索引擎优化、社交媒体营销、内容营销、电子邮件营销等。此外,网络营销还可以通过各种在线广告形式进行推广,如...
点击进入详情页
本回答由万铭网络推广提供
展开全部
微博,即微博客(MicroBlog)的简称,是 一个基于用户关系的信息分享、传播以及 获取平台,用户可以通过WEB、WAP以及 各种客户端组件个人社区,以140字左右 的文字更新信息,并实现即时分享。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发表自己的看法,让更多人看到,或更多陌生人,发泄吧,很多时候是
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询