我只能评论技术方面的内容(不能评论成本,可维护性等)
没有提及专用实例是物理盒还是大型VM。如果应用程序产生了许多到MongoDB或Redis的往返,那么两者之间的差异将非常显着。
使用虚拟机时,I /
O,操作系统调度和系统调用的成本较高。这些元素往往代表着高效的远程数据存储(如MongoDB或Redis)的性能成本中的重要组成部分,因此虚拟化的代价更高。
从系统角度来看,如果希望MongoDB数据库大于可用内存,则不会将MongoDB和Redis /
Play放在同一盒子上。MongoDB将数据文件映射到内存中,并依靠操作系统执行内存交换。专为此设计。其他过程则没有。如果将MongoDB放在同一盒子中,则由MongoDB引起的交换将对Redis和Play响应时间造成灾难性后果。因此,我至少会将MongoDB与Redis
/ Play分开。
如果您打算使用Redis进行缓存,则将其与Play服务器保持在同一盒子上是很有意义的。Redis将使用内存,但CPU较低。播放将使用CPU,但不会占用太多内存。因此,这似乎很合适。另外,我不确定Play是否可以提供这种服务,但是如果您使用unix域套接字而不是TCP回送连接到Redis,则可以免费获得约50%的吞吐量。



