如果分布式系统在资源数量和用户数量显着增加时仍然有效,则它被描述为可扩展的。然而,这些系统有时会面临性能瓶颈。如何避免这些?
问问题
2661 次
2 回答
2
这个问题非常广泛,完全取决于系统在做什么。
以下是我在系统中看到的一些减少瓶颈的方法。
- 使用缓存,减少网络和磁盘瓶颈。但请记住,在某些情况下,知道何时从缓存驱逐中驱逐可能是一个难题。
- 使用消息队列来解耦系统中的组件。通过这种方式,您可以将更多硬件添加到系统中需要它的特定部分。
- 尽可能延迟计算(通常使用消息队列)。这可以在高处理时间带走系统的热量。
- 当然,尽可能设计并行处理的系统。一台主机进行处理是不可扩展的。注意:大部分关系型数据库都属于单机桶,这也是NoSQL突然火起来的原因;但并不总是合适的(理论上)。
- 如果可能,使用最终一致性。强一致性更难扩展。
有些人是 CQRS 和 DDD 的支持者。尽管我从未见过或设计过“CQRS 系统”或“DDD 系统”,但它们确实影响了我设计系统的方式。
以上几点有很多重叠之处;一些技术可能会使用其他一些技术。
但是,经验(您自己的和其他人的)最终会教会您有关可扩展系统的知识。我通过阅读来自谷歌、亚马逊、推特、脸书等网站的设计来了解最新信息。另一个好的起点是高可扩展性博客。
于 2013-05-18T01:28:41.590 回答
1
只是建立在上述帖子中讨论的一点上,我想补充一点,您的分布式系统需要一个分布式缓存,因此当您打算扩展应用程序时,分布式缓存就像“弹性”数据一样 -结构意味着您可以在不影响性能的情况下增加缓存的存储容量,同时为您提供一个可供多个应用程序访问的可靠平台。
一种这样的分布式缓存解决方案是 NCache。看看吧!
于 2013-05-21T12:13:36.397 回答