海边规模吗?

时间:2009-09-20 20:55:36

标签: scalability smalltalk seaside

Seaside被称为“异端网络框架”。使其成为异端的一点是它有很多共享状态。然而,根据我目前的理解,这会妨碍简单的扩展。

另一方面,Ruby on rails共享尽可能少的状态。众所周知,与现代的smalltalk vms相比,它的扩展性非常好。 flickr使用php并扩展到极其庞大的基础架构......

那么有没有人在海边的扩展方面有一些经验?

8 个答案:

答案 0 :(得分:16)

拉蒙·莱昂(Ramon Leon)分享了他在(优秀)博客上对海边进行升级的一些经验。您可以阅读有关配置和调整海边的示例代码的非常具体的想法。

享受: - )

http://onsmalltalk.com/scaling-seaside-more-advanced-load-balancing-and-publishing http://onsmalltalk.com/scaling-seaside-redux-enter-the-penguin http://onsmalltalk.com/stateless-sitemap-in-seaside

答案 1 :(得分:14)

简答: 你可以像海尔那样扩展海边应用程序

答案很长: 在IT领域,缩放是一回事,但它有两个方面:

  1. horozontal
  2. 垂直
  3. 几乎所有人都考虑在垂直方向上进行缩放。直到英特尔和朋友达到了一些物理障碍并开始添加内核以补偿目前无法增加MHz的能力。

    当我们开始更加意识到水平缩放时,我们就开始了。

    为什么我告诉你这个?

    因为Seaside是在VM中运行的小型图像,并且与单核处理器的服务器中的系统大致相同。

    以此为基础,您可以通过创建服务器群集来扩展Web应用程序。这是自然而然的事情,它是容错的事情,是拓扑智能的事情,是灵活的事情,我想你明白了......

    所以,如果要进行缩放,你会像英特尔和英特尔那样做。朋友们,你拥抱横向的方式。而且它的垂直方式甚至更便宜(这将使您获得与昂贵一样好的IBM和Sun服务器)。

    RoR应用程序通常是水平缩放的。谷歌有无数便宜的服务器来做他们的事情。无论多么戏剧化的人都想要给你留下深刻的印象,你就会把一堆可以忘记的鲸鱼鲸扔给你。

    如果他们与你谈论这件事,你只要礼貌并听取他们的意见,但请记住:

    1. 完美是善的敌人
    2. 未完成的完美永远不会像完成的好事那样有价值
    3. 顺便说一句,亚马逊也做了类似的事情(它有点像地理位置,因此它们增加了使用离您所在位置最近的群集来满足您的请求的机会。)

      另一方面,Avi扩展dabbledb(由Twitter购买的基于Seaside的网络应用程序公司)的方式是每个客户帐户使用一个vm(启动并关闭那些按需)。

      图像中有很多状态不会使缩放变得不可能也不复杂。

      与众不同。

      可行的方法是使用一个使用粘性会话的负载均衡器,这样您就可以让一个映像处理用户会话的所有请求。你做的事情是负载均衡器后面的任何工人形象可以参加给定应用程序的任何用户。这就是它。

      为了能够做到这一点,你需要在工人之间共享持久对象。所有用户数据库都需要工作人员随时访问,并且需要很好地处理并发问题。

      我们设计了可扩展的气流。

      它在经济上也很方便,因为你可以从非常小的N开始(取决于你的第一台服务器的RAM)并按需增加它,直到你达到硬件限制。

      达到硬件限制后,只需将另一台主机添加到群集中,然后重新配置均衡器(以及对数据库的访问权限)。

      简单,经济,优雅。

答案 2 :(得分:9)

http://dabbledb.com/似乎可以很好地扩展。此外,可以使用GemStone GLASS来运行Seaside。

答案 3 :(得分:8)

这位interview Avi Bryant是Seaside and Co创始人DabbleDB的创始人 解释它们如何扩展。

据我所知:

  • 每个客户都有自己的吱吱声 图像。

  • 当客户到来时,Apache会根据用户名决定将其发送到哪个端口。

  • 根据端口启动客户的Squeak Image。

  • 这样它可以增长到无限数量的服务器。

我认为这个解决方案可以根据应用程序的具体情况为他们工作,每个客户都不需要在他们之间共享信息。所以不需要集中式数据库。

无论如何,最好是观看采访而不是我的半成品摘要。

答案 4 :(得分:6)

是的,Seaside非常适合缩小规模。单个开发人员可以很好地为小组创建和维护复杂的应用程序。

[几年后回到这里] 这实际上比扩展更重要。计算机速度仍然增长很快,99%的应用程序现在可以在一台机器上运行。发展速度,特别是维护现在完全占据了TCO。

答案 5 :(得分:5)

我会稍微改述一下你的问题:海边阻止/阻止你创建可扩展的应用程序吗?我会说通常不会。 Seaside没有默认的方式存储您的数据(就像它上面没有PHP一样,虽然Seaside为您提供了一些额外的选项)而且我的印象是与您的数据交互往往是缩放的最大障碍

如果要将数据存储在单片SQL数据库中,例如使用rails,则可以执行此操作。或者您可以使用对象数据库。或者,您可以为每个用户使用单独的对象数据库,或为每个项目使用单独的数据库,或为每个用户和项目使用单独的数据库。或者您可以将所有内容存储在一系列平面文件中,也可以将数据作为对象存储在VM的内存中。

由于延续,您无需在每次网页调用时从数据存储中重新获取数据。当您使用桌面应用程序时,您可以在用户开始与数据存储交互时从数据存储中提取数据,设置相应的变量,然后在网络连接之间使用这些变量,直到用户完成数据,此时您可以更新数据数据存储区。当您不共享状态时,您必须在每个网络摄像头上访问数据存储区。

当然这并不意味着扩展是免费的,它只是意味着你有一个更大的域来搜索扩展解决方案。

所有这一切都表示,对于许多应用程序来说,rails的扩展会更容易,因为存在大型的rails(和php)托管解决方案,它将为您提供大量资源,而无需租用和设置自定义框。

这些只是我对阅读和与人交谈的印象。

答案 6 :(得分:2)

我刚才提醒说,Pharo的成功案例有一个链接:一个Seaside Web应用程序,在阿根廷有大量1000个并发用户,可以购买大型医疗保险。

Pharo success stories

Issys追踪:

  • 负载平衡:Apache作为代理/平衡器(带会话的循环) 亲和力)
  • 服务器设置:3个不同服务器(Linux和Windows 2003)上的5个Pharo映像
  • GUI:非常基于AJAX。用Smalltak编写的所有代码:Seaside 3.0,Seaside JQuery集成和JQWidgetBox。
  • 持久性:Glorp(OR映射器)和OpenDBX(DB客户端)
  • 数据库:大型PostgreSQL和MS SQL Server数据库

答案 7 :(得分:-9)

从维基百科的文章来看,这是一头猪。在此之前,它没有达到我听说过的程度。 :)