21

在阅读有关框架(.net. ruby​​ on rails、django、spring 等)的信息时,我一直看到某某某某做或不能很好地扩展。

当有人说一个框架“扩展性很好”是什么意思,说一个框架“不能很好地扩展”是什么意思?

谢谢你。

4

8 回答 8

21

当您针对并发用户绘制一些资源使用情况(内存、时间、磁盘空间、网络带宽)时,您将获得一个描述应用程序如何在不同比例因子下工作的函数。

小规模——少数用户——使用少量资源。

大规模——大量用户——使用大量资源。

关键问题是“缩放有多接近线性?” 如果它是线性扩展的,那么服务 2000 个并发用户的成本是服务 1000 个用户的 2 倍,是服务 500 个用户的 4 倍。这是一个可扩展的工具/框架/语言/平台/操作系统。它是可预测的,并且预测是线性的。

如果它不是线性扩展的,那么服务 4,000 名用户的成本是服务 2,000 名用户的 1,000 倍,而服务 500 名用户的成本是服务 500 名用户的 100 倍。这没有很好地扩展。随着使用量的增加,出现了问题;它似乎不可预测,也不是线性的。

于 2009-06-01T20:10:51.590 回答
8

这意味着一个特定的框架确实(或不)满足更多用户对其提出的日益增长的需求。例如,如果您有一个用 VBScript 编写的应用程序,它可能无法很好地处理 Facebook 的 40,000,000 名用户。

这篇博文解释了 Twitter 在大约一年前经历的一些可扩展性难题。它可以为您的问题的答案提供更多见解。

有时缺乏可扩展性被用来诋毁语言或框架,所以要小心。坚持显示真实指标的研究。这也适用于我在上一段中的 VBScript 示例。

于 2009-06-01T20:00:05.480 回答
4

如果一个框架或应用程序可以很好地扩展,这意味着它可以处理更大的负载。随着您的网站变得越来越受欢迎,每天有更多的访问者和更多的点击量,一个可扩展的框架将处理较大的负载,就像它处理较小的负载一样。一个可扩展的框架在每小时收到 200,000 次点击时的行为与每小时获得 1 次点击时的行为相同。不仅命中,而且部署在多个服务器上,可能在负载平衡之后,可能与几个不同的数据库服务器一起部署。一个可扩展的框架可以很好地处理这些不断增长的需求。

例如,去年推特几乎在一夜之间爆发。它是使用 Ruby On Rails 开发的,并且在关于 Rails 是否可以很好地扩展的持续争论中成为热门话题。

于 2009-06-01T20:01:07.723 回答
2

用“句柄扩展”代替“规模”

于 2009-06-01T20:01:23.747 回答
2

在我的脑海里有几个元素。第一个是显而易见的——性能扩展。您的框架可以用于构建高容量、高吞吐量的系统,还是仅用于构建较小的应用程序。它会在硬件上垂直扩展(例如并行库)还是水平扩展(例如网络农场)。

第二个是它可以扩展到更大的团队或企业。也就是说,它是否适用于大型代码库?大型开发团队?它有良好的工具支持吗?部署有多容易?你能推广到数十、数百甚至数千名用户吗?一直到很容易雇用有这种技能的人。想想尝试组建一个 20 或 50 人的开发团队,他们都在这个框架上工作。这会很容易还是几乎不可能?

于 2009-06-01T20:03:49.153 回答
0

恕我直言,说一个框架“扩展性很好”通常意味着传闻链中的某个人能够使用它来处理大量的音量。

在并行编程中,可伸缩性通常用于描述算法在并行化时如何执行。具有 1:1 加速的算法是一种罕见的野兽,但在两倍的硬件/cpu 上性能会翻倍,在硬件/cpu 的三倍上会翻倍,等等......

以我的经验,只要有足够的专业知识,几乎任何框架都可以扩展。

框架越容易使用,专业知识不足的开发人员遇到可伸缩性问题的机会就越大。

于 2009-06-01T20:20:08.480 回答
0

这意味着一些受人尊敬的公司正在认真对待它并且没有任何问题。

于 2009-06-01T20:24:47.567 回答
0

扩展意味着通过使用更多硬件来满足更多需求是多么容易。

示例:您有一个用某种语言编写的网站,每天有 1000 次访问。您会出现在一些著名杂志中,并且您的用户数量会增加。突然间,你每天有 1000000 次访问,那是 1000 倍。如果您可以多使用 1000 台服务器来满足不断增长的资源需求,那么您的网站可以很好地扩展。另一方面,如果您添加了 2000 台服务器,但用户仍然无法连接,因为您的数据库每天只能处理 1000 个请求,那么您的网站就不能很好地扩展。

于 2009-09-20T21:10:43.367 回答