如果分布式系统在资源数量和用户数量显着增加的情况下保持有效,则它被描述为可扩展的。但是,这些系统有时会遇到性能瓶颈。这些如何避免?如何避免瓶颈表现?
1
A
回答
2
这个问题很广泛,完全取决于系统在做什么。
下面是我在系统中看到的一些减少瓶颈的事情。
- 使用缓存,减少网络和磁盘瓶颈。但请记住,在某些情况下,知道何时从缓存驱逐中逐出可能是一个难题。
- 使用消息队列去耦系统中的组件。这样您就可以将更多硬件添加到需要它的系统的特定部分。
- 时滞计算可能时(通常通过使用消息队列)。这样可以在高处理时间内将热量带离系统。
- 当然,设计系统为并行处理尽可能。一个进行处理的主机不可扩展。注意:大多数关系数据库属于单主机桶,这就是为什么NoSQL变得突然流行;但并不总是合适的(理论上)。
- 使用如果可能,最终一致性。规模一致性较强。
有些是CQRS和DDD支持者。尽管我从未见过或设计过“CQRS系统”或“DDD系统”,但这些对我设计系统的方式肯定有影响。
上面有很多重叠的地方;一些技术可能会使用其他一些技术。
但是,经验(你自己和他人)最终会教你关于可伸缩系统。我通过阅读关于谷歌,亚马逊,Twitter,脸书等设计的最新信息。另一个好的起点是high-scalability blog。
1
只是为了巩固在abover帖子中讨论的一个点,我想补充一点,你需要为你的分布式系统什么是分布式缓存,这样,当你打算缩放您的应用程序就像一个分布式缓存行为“弹性“的数据结构,这意味着您可以增加缓存的存储容量,而不会影响性能,同时为您提供可供多个应用程序访问的可靠平台。
相关问题
- 1. 避免微服务中的瓶颈
- 2. Kubernetes避免负载平衡器成为网络的瓶颈
- 3. 如何避免使网络服务器成为卡桑德拉的瓶颈?
- 4. 如何避免性能瓶颈使用JNI时Java Web应用程序/服务
- 5. 服务器虚拟化:如何避免,找到并修复瓶颈?
- 6. SQL瓶颈,如何解决
- 7. 如何衡量mySQL瓶颈?
- 8. 如何剖析OpenMP瓶颈
- 9. 瓶颈和ZeroMQ
- 10. java.awt.container.add(comp)瓶颈
- 11. NodeJS JSON.stringify()瓶颈
- 12. MySQL的瓶颈
- 13. IIS瓶颈?
- 14. 从Node.js写入文件以避免瓶颈的正确方法是什么?
- 15. 在ASP.NET中发现性能瓶颈
- 16. solrnet - solr.Add(doc)瓶颈
- 17. 性能瓶颈_L_unlock_16
- 18. 数字GUI瓶颈
- 19. AWS RDS PIOPS瓶颈
- 20. 瓶颈的含义?
- 21. 是PowerShell的瓶颈
- 22. 瓶颈问题mysql
- 23. django性能瓶颈
- 24. 如何解决sqlite3的瓶颈?
- 25. 瓶颈如何计算标签计数
- 26. 瓶颈:如何检索会话数据?
- 27. 如何描述Django的缩放瓶颈?
- 28. 如何找出网页的CPU瓶颈
- 29. 如何微调一个asp.net应用程序并发现瓶颈
- 30. 如何使用VisualVM来发现瓶颈/问题
您是否尝试过在Google上搜索您的问题? – aaaaaa123456789
是的。但无法得到准确的答案。 –
你的问题相当模糊。现在IMO许多系统利用[CQRS](http://martinfowler.com/bliki/CQRS.html)预先呈现通常访问的数据,例如,用于UI的ViewModels通常将其存储在NoSQL ReadStore中。 – StuartLC