BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

MySpace解释他们是如何使用并发与协调运行时的

| 作者 Jonathan Allen 关注 548 他的粉丝 ,译者 赵劼 关注 4 他的粉丝 发布于 2009年10月18日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

CCR,即并发与协调运行时,一开始是.NET机器人工具箱的一部分。由于许多公司在大量非机器人的项目中使用了CCR,MySpace也在他们的项目中采用了这一框架。

CCR使用消息传递机制来隔离应用程序的不同部分。在低层实现中,精细管理的线程和任务窃取队列(work-stealing queue)比传统的线程和锁少了很多开销。

MySpace在它们的通信层使用CCR,使用了基于原生Socket的自定义格式。每个服务器使用两个队列,第一个用作单向的消息,而第二个则用于处理那些需要立即得到回复的同步消息。每个服务器都可以调整分配给两种队列的线程数量。

他们的缓存集群构建在通信层之上,每台机器包含一个存储组件以及一个用于处理的组件集合。当一个单向消息达到时,它直接进入第三个CCR队列,然后再传递到存储组件以及订阅至特定消息类型的某个处理组件中。除了跳过“缓冲”队列以外,同步消息的处理方式与此类似。

MySpace使用CCR,是由于它提供了比传统线程池高得多的吞吐量。其中一个原因是.NET线程池在确定保留多少线程方面有过大的开销。此外,线程之间的上下文切换也耗费了可观的时间。CCR使用了为每个CPU分配单个线程的做法避免了很多此类问题。为了对线程有更多控制,MySpace还扩展了CCR,这样他们就可以在运行时动态改变分配给队列的线程数量了。

每个节点除了应对每秒进入的数千条消息之外,它也要处理对外的消息。为此他们使用了CCR的多重接受器和一些其他的模式,这样每次便可以使用“等待100个消息或500毫秒”的方式来对外批量发送数据了。据MySpace的说法,这种模式是移动大量数据的基础。

在采用CCR之前,MySpace使用.NET线程池或手动管理线程。他们声称在之前并不知道有其他线程管理的替代方式,直到有一天,他们在解决内部实现问题的时候碰巧遇上了类似的宣传用例,于是便开始使用CCR了。

目前,MySpace在他们的1200台中间层服务器和3000台Web服务器上使用了CCR。MySpace经常会在他们的框架中自然地融入额外的东西,以至于许多开发人员并没有意识到其中的改变。

你可以在Channel 9中浏览Erik Nelson和Akash Patel对MySpace的采访。更多有关CCR的信息,请访问CCR and DSS Toolkit 2008 R2

查看英文原文:MySpace Explains How They Use the Concurrency and Coordination Runtime

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT