Java 应考虑哪些因素来考虑可伸缩性
在编程语言(特别是Java)中,应该考虑哪些因素来确保应用程序是可伸缩的?让我们以一个web应用程序为例,它同时为1000个用户提供服务,预计用户可能会增长到100000。另外,假设目前只提供特定功能,未来我们可能需要添加更多功能,如报告等。我们是否需要确保不会出现某些类型的瓶颈,还是应该避免可能限制可扩展性的某些类型的设计 瓶颈是IO(磁盘、数据库等)和网络。编程语言不是什么大问题。瓶颈是IO(磁盘、数据库等)和网络。编程语言不是什么大问题Java 应考虑哪些因素来考虑可伸缩性,java,scalability,Java,Scalability,在编程语言(特别是Java)中,应该考虑哪些因素来确保应用程序是可伸缩的?让我们以一个web应用程序为例,它同时为1000个用户提供服务,预计用户可能会增长到100000。另外,假设目前只提供特定功能,未来我们可能需要添加更多功能,如报告等。我们是否需要确保不会出现某些类型的瓶颈,还是应该避免可能限制可扩展性的某些类型的设计 瓶颈是IO(磁盘、数据库等)和网络。编程语言不是什么大问题。瓶颈是IO(磁盘、数据库等)和网络。编程语言不是什么大问题 尽量避免使用锁,尤其是全局锁 静态通常会导致锁定似乎
决定可伸缩性对您意味着什么 每个应用程序在某种意义上都可以扩展,但“可伸缩性”似乎只适用于在特定问题域中缺乏扩展能力的应用程序。您的问题域与我的不同,因此,如果我提供可伸缩性建议,这与优化应用程序中未实际观察到的用例是一样的。现在您将认识到这是过早的优化(许多非常糟糕的系统设计选择的根源) 所以,找出什么可能增长,什么可能不增长,把你的钱(和时间)放在你痛苦的地方。对其进行基准测试。测量一下 一旦您感觉到应用程序可能无法扩展,请在尝试解决问题的同时进行一些研究。这样,您就不必完全依靠自己,您可以利用大量的可伸缩性工作,但要针对您的特定环境
记住,为了获得更好的可伸缩性,您必须在某个地方进行权衡。您的程序可能会在时间、内存、硬件需求或其他方面有所增长。如果您没有处理时间、内存利用率等方面的性能指标,那么您就没有满足担心可伸缩性的先决条件要求。决定可伸缩性对您意味着什么 每个应用程序在某种意义上都可以扩展,但“可伸缩性”似乎只适用于在特定问题域中缺乏扩展能力的应用程序。您的问题域与我的不同,因此,如果我提供可伸缩性建议,这与优化应用程序中未实际观察到的用例是一样的。现在您将认识到这是过早的优化(许多非常糟糕的系统设计选择的根源) 所以,找出什么可能增长,什么可能不增长,把你的钱(和时间)放在你痛苦的地方。对其进行基准测试。测量一下 一旦您感觉到应用程序可能无法扩展,请在尝试解决问题的同时进行一些研究。这样,您就不必完全依靠自己,您可以利用大量的可伸缩性工作,但要针对您的特定环境 记住,要取得更好的成绩