当阅读有关框架(.net.ruby on rails,django,spring等)时,我一直看到这样做或不能很好地扩展。
当有人说框架“很好地扩展”并且说框架“不能很好地扩展”意味着什么意味着什么?
谢谢。
答案 0 :(得分:17)
当您针对并发用户绘制一些资源使用(内存,时间,磁盘空间,网络带宽)时,您将获得一个描述应用程序如何在不同比例因子下工作的函数。
小规模 - 少数用户 - 使用一些资源。
大规模 - 大量用户 - 使用大量资源。
关键问题是“缩放有多接近线性?”如果它线性扩展,则为2,000个并发用户提供服务的成本是服务1,000个用户的2倍,是服务500个用户的4倍。这是一个可以很好地扩展的工具/框架/语言/平台/ os。这是可预测的,预测是线性的。
如果它不能线性扩展,那么为4,000个用户提供服务的成本是为2,000个用户提供服务的1,000倍,这需要花费100倍的500个用户。这不能很好地扩展。随着使用量的增加,出了点问题;它似乎不可预测,也不是线性的。
答案 1 :(得分:8)
这意味着特定框架确实(或不)满足更多用户对其提出的增长需求。例如,如果你有一个用VBScript编写的应用程序,它可能无法很好地处理Facebook的40,000,000个用户。
This blog post解释了Twitter在大约一年前经历的一些可扩展性问题。它可以为您的问题提供更多洞察力。
有时缺乏可扩展性来诋毁语言或框架,因此请注意这一点。坚持显示真实指标的研究。这也适用于我在上一段中的VBScript示例。
答案 2 :(得分:4)
如果框架或应用程序扩展良好,则意味着它可以处理更大的负载。随着您的网站越来越受到访问者的欢迎和每天更多的点击量,一个可以很好地扩展的框架将处理更大的负载,就像它处理较小的负载一样。如果每小时收到200,000次点击,那么一个能够很好地扩展的框架将会起到同样的作用。不仅是命中,而是部署在多个服务器上,可能在负载平衡之后,可能还有几个不同的数据库服务器。一个可以很好地扩展的框架可以很好地处理这些不断增长的需求。
例如,Twitter在去年几乎一夜之间爆炸。它是使用Ruby On Rails开发的,并且在正在进行的关于Rails是否能够很好地扩展的辩论中得到了热烈的关注。
答案 3 :(得分:2)
将“句柄扩展”替换为“缩放”</ p>
答案 4 :(得分:2)
我脑子里有一些元素。第一个是显而易见的 - 性能扩展。您的框架可以用于构建高容量,高吞吐量系统,还是只能用于构建更小的应用程序。它是否会在硬件上垂直扩展(例如并行库),并且会水平扩展(例如,Web场)。
第二种是可以扩展到更大的团队或企业。也就是说,它是否适用于大型代码库?大型开发团队?它有良好的工具支持吗?部署有多容易?你能推出几十个,几百个甚至几千个用户吗?一直到很容易雇用拥有这种技能的人。考虑尝试组建一个由20或50人组成的开发团队,他们都在这个框架上工作。它会变得容易还是几乎不可能?
答案 5 :(得分:0)
恕我直言,说一个“很好地扩展”的框架通常意味着传闻链中的某个人能够使用它来处理大量的数据。
在并行编程中,可伸缩性通常用于描述算法在并行化时的执行方式。具有1:1加速比的算法是一种罕见的野兽,但是在硬件/ CPU的两倍性能上将性能提高一倍,在硬件/ CPU的三倍上增加三倍......
根据我的经验,实际上任何框架都可以根据足够的专业知识进行扩展。
框架越容易使用专业知识不足的开发人员遇到可扩展性问题的可能性越大。
答案 6 :(得分:0)
这意味着一些受人尊敬的公司正在做一些严肃的事情并且没有任何问题。
答案 7 :(得分:0)
缩放意味着通过使用更多硬件来满足更多需求是多么容易。
示例:您有一个用某种语言编写的网站,每天可以访问1000次。你会在一些着名的杂志中出现,你的用户数量会增加。突然间,你每天有100万次访问,这是1000倍。如果您可以使用1000多台服务器来满足不断增长的资源需求,那么您的网站可以很好地扩展。另一方面,如果您添加了2000台服务器,但用户仍然无法连接,因为您的数据库每天只能处理1000个请求,而您的网站无法正常扩展。