海边规模吗?

Ric*_*urr 22 smalltalk scalability seaside

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

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

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

Ber*_*nni 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/无状态-网站地图功能于海边


Seb*_*tre 14

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

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

  1. horozontal
  2. 垂直

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

那时我们开始更加意识到水平扩展是一种可行的方式.

我为什么告诉你这个?

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

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

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

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

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

  1. 完美是善的敌人
  2. 未完成的完美永远不会像好事那样有价值

顺便说一句,亚马逊也做了类似的事情(它有点像地理定位,所以它们增加了与你的位置最接近的集群参与你的请求的机会).

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

在图像中具有大量状态不会使缩放变得不可能也不复杂.

只是不同.

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

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

我们以这种方式设计了可扩展的气流.

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

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

简单,经济,优雅.


Dam*_*sou 9

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


elv*_*o79 8

在这次访谈中,Avide Bryant是Seaside and Co创始人DabbleDB的创造者,他们解释了他们如何使其规模化.

据我所知:

  • 每个客户都拥有自己的Squeak Image.

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

  • 基于端口,它启动客户的Squeak Image.

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

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

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


Ste*_*ont 6

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

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


Ste*_*ble 5

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

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

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

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

因为存在(为此事和PHP)的轨道大型主机的解决方案,为您提供大量的资源,而无需租用和设置自定义文件夹所有的说,对于许多应用轨道将扩展更加容易简单.

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