如果您想跨多个虚拟机进行扩展,您可能需要查看GemStone/S。
但是请注意,GemStone 是专有的商业产品。所以,你将不得不为此付出代价。但是,定价模型通常是这样设计的,如果您需要更大的版本,那么您通常还会让用户为该版本付费。4 GiByte 磁盘 / 1 GiByte RAM / 1 CPU 版本的起价为 0 $。
另一件需要注意的事情是 GemStone Smalltalk 是它自己的方言,所以你的 Squeak 代码可能不会在未经修改的情况下运行,但应该很容易移植。(例如,GemStone 工程师创建了一个适配器,允许您将 Monticello(Squeak 的版本控制系统)包加载到 GemStone/S,他们通常也确保 Seaside 运行。)
那么,什么是宝石?基本上,它是一个具有自动对象持久性的分布式虚拟机。与普通的 Smalltalk VM 相比,它最容易解释。如果你有两个 Smalltalk VM 并排运行,它们每个都有自己的对象内存(即垃圾收集器管理的东西)。该对象内存在 RAM 中。在 GemStone 中,集群中的所有 VM 共享相同的对象内存,并且它位于磁盘上,而不是 RAM 中。因此,您不需要数据库,甚至不需要面向对象的数据库,因为您的对象“就在那里”,无处不在,无时无刻不在。
(这只是一个非常简单的描述。例如,堆并没有真正在 VM 之间共享。这没有意义,您不希望通过网络复制您创建的每个临时对象。相反,您有一个全局存储库对象(基本上是字典),就像垃圾收集器将从某个众所周知的根对象开始,然后保留所有可以从那里访问的对象,并删除那些不能访问的对象,GemStone 将从全局存储库对象开始,并仅保留/复制可从那里到达的对象。)
GemStone 还具有类似于数据库的功能,因此对全局存储库的访问被包装在 ACID 事务中,并且有一种受 SQL 启发但 Smalltalkish 的查询语言。
GemStone 有一个很好的设备,他们称之为“ GLASS ”(用于 GemStone、Linux、Apache、Seaside 和 Smalltalk),类似于众所周知的“LAMP”(Linux、Apache、MySQL 和 PHP)。GLASS 包括预装 Seaside 的 GemStone 免费版,以及在 Xubuntu 上运行 Apache 的所有设置,所有内容都整齐地打包到 VMWare 磁盘映像中。