2013-05-17 115 views
1

如果分布式系统在资源数量和用户数量显着增加的情况下保持有效,则它被描述为可扩展的。但是,这些系统有时会遇到性能瓶颈。这些如何避免?如何避免瓶颈表现?

+0

您是否尝试过在Google上搜索您的问题? – aaaaaa123456789

+0

是的。但无法得到准确的答案。 –

+0

你的问题相当模糊。现在IMO许多系统利用[CQRS](http://martinfowler.com/bliki/CQRS.html)预先呈现通常访问的数据,例如,用于UI的ViewModels通常将其存储在NoSQL ReadStore中。 – StuartLC

回答

2

这个问题很广泛,完全取决于系统在做什么。

下面是我在系统中看到的一些减少瓶颈的事情。

  • 使用缓存,减少网络和磁盘瓶颈。但请记住,在某些情况下,知道何时从缓存驱逐中逐出可能是一个难题。
  • 使用消息队列去耦系统中的组件。这样您就可以将更多硬件添加到需要它的系统的特定部分。
  • 时滞计算可能时(通常通过使用消息队列)。这样可以在高处理时间内将热量带离系统。
  • 当然,设计系统为并行处理尽可能。一个进行处理的主机不可扩展。注意:大多数关系数据库属于单主机桶,这就是为什么NoSQL变得突然流行;但并不总是合适的(理论上)。
  • 使用如果可能,最终一致性。规模一致性较强。

有些是CQRS和DDD支持者。尽管我从未见过或设计过“CQRS系统”或“DDD系统”,但这些对我设计系统的方式肯定有影响。

上面有很多重叠的地方;一些技术可能会使用其他一些技术。

但是,经验(你自己和他人)最终会教你关于可伸缩系统。我通过阅读关于谷歌,亚马逊,Twitter,脸书等设计的最新信息。另一个好的起点是high-scalability blog

1

只是为了巩固在abover帖子中讨论的一个点,我想补充一点,你需要为你的分布式系统什么是分布式缓存,这样,当你打算缩放您的应用程序就像一个分布式缓存行为“弹性“的数据结构,这意味着您可以增加缓存的存储容量,而不会影响性能,同时为您提供可供多个应用程序访问的可靠平台。

一个这样distributed caching solution is NCache。看一看!