在编程语言中,尤其是Java,应该考虑哪些因素来确保应用程序可扩展?让我们举一个Web应用程序的例子,该应用程序同时为1000个用户提供服务,预计用户可能会增长到100,000。还假设目前只提供特定的功能,将来我们可能需要添加更多功能,如报告等。我们是否需要确保不会发生某些类型的瓶颈,或者我们应该避免某些类型的设计,这可能会限制可扩展性?
答案 0 :(得分:3)
答案 1 :(得分:1)
瓶颈是IO(磁盘,数据库,...)和网络。编程语言不是一个大问题。
答案 2 :(得分:1)
决定可扩展性对您意味着什么。
每个应用程序都在某种意义上扩展,但“可伸缩性”似乎只适用于在特定问题域中缺乏扩展能力的应用程序。您的问题域与我的不同,因此如果我提供可伸缩性建议,则与针对您的应用程序中未实际观察到的用例进行优化的情况相同。您现在将其视为过早优化(许多非常糟糕的系统设计选择的根源)。
弄清楚什么可能会成长,什么可能不会增长,把你的钱(和时间)放在痛苦的地方。基准吧。测量它。
一旦您了解了应用程序可能无法扩展的程度,请在尝试解决问题时进行一些研究。这样你就不能完全靠自己,你可以利用大量的可扩展性工作,但是针对你的特殊情况。
请记住,为了获得更好的可扩展性,您必须在某处进行权衡。您的程序将在时间,内存,硬件要求或其他方面增长。如果您没有关于处理时间,内存利用率等的性能指标,则您无法满足担心可伸缩性的先决条件要求。
答案 3 :(得分:0)
我想这里浪费时间和空间来写这些。我强烈建议阅读Scalability Rules,它便宜,篇幅简短且写得很好