我认为标题清楚地表明了这一点.我不是可扩展性的大师.我即将创建一个Web应用程序,该应用程序需要扩展到大型数据集,并且可能需要很多(不会夸大这里,数千个)并发用户.
MongoDB是数据存储库,我在写一个简单的Play之间挣扎! webapp与MongoDB和Play交谈!应用程序与REST服务应用程序(在Scala中)交谈,它可以完成所有业务逻辑和持久性的繁重工作.
我的一部分认为将业务逻辑包装为服务是未来的证明,并允许在多个节点中部署webapp(扩展).我来自Java EE堆栈和Play!是java web框架中的反叛者.这种方法向我保证我可以远离Play!如果需要的话.
我的一部分也认为玩!应用程序Scala服务应用程序是额外的复杂性,从长远来看可能不会有成效.
任何建议表示赞赏.
注意:我是Scala,MongoDB和Play的新手!请原谅我,如果我的问题很愚蠢.
解决方法
@H_404_15@ 可伸缩性是一种工程艺术.这意味着您拥有大量参数并将您的经验应用于这些参数的特定值以获得解决方案.因此,如果没有关于您的问题的更具体数据,一般建议很难.话虽如此,根据经验,一些一般建议:
>尽可能保持您的应用程序清洁和简单.这允许您保持选项打开.在您的情况下,从一个简单的Play应用程序开始.专注于干净的代码,这样您就可以轻松地将您拥有的内容重新修改为不同的架构模型(使用干净的代码,这比您想象的更简单:-))
>衡量,而不是猜测,瓶颈在哪里.它足够简单,可以使服务器充满请求.使用分析,内存转储等,以确定可伸缩性的瓶颈.
只有这样,有了手头的工作应用程序(您可以提前启动)和有关缩放瓶颈的数据,您就可以决定拆分(水平可扩展)服务的内容.
从一开始,服务看起来很好,可扩展,但它们经常让你陷入困境 – 服务需要相互通信,所以你开始介绍消息,等等.保持简单,衡量,优化.