Angularjs 确定webapp是否无状态

Angularjs 确定webapp是否无状态,angularjs,node.js,hapijs,stateless,Angularjs,Node.js,Hapijs,Stateless,继上一个开发人员离开后,我最近接手了一个内部webapp的开发 待办事项列表中的一件事是在服务器上实现多个进程,使用PM2进行挖掘似乎很容易实现 然而,PM2的一个要求是应用程序应该是无状态的,我正在努力完全理解我需要追求什么 基本架构是REST,后端是Node/Hapi,前端是Angular 我相当肯定后端是这样编写的,这样我们就可以从前端传递我们需要的信息,并且只对传递的信息进行操作 我们需要在前端走多远。我们是否需要取消在$scope中存储客户端信息?我是否应该关心Chrome开发工具中的

继上一个开发人员离开后,我最近接手了一个内部webapp的开发

待办事项列表中的一件事是在服务器上实现多个进程,使用PM2进行挖掘似乎很容易实现

然而,PM2的一个要求是应用程序应该是无状态的,我正在努力完全理解我需要追求什么

基本架构是REST,后端是Node/Hapi,前端是Angular

我相当肯定后端是这样编写的,这样我们就可以从前端传递我们需要的信息,并且只对传递的信息进行操作


我们需要在前端走多远。我们是否需要取消在$scope中存储客户端信息?我是否应该关心Chrome开发工具中的本地存储或会话存储中是否有任何内容?

您需要向PM澄清这一点。 根据定义,没有一个网站是真正的无状态缓存。 然后,只要您有任何会话或身份验证,您就有了状态


只要不想删除最有用的功能,就不要再考虑$scope/LocalStorage了。如果没有进一步说明,这很可能是BS要求。

PM2要求应用程序是无状态的,以确保以相同的方式处理任何请求,例如,无论在哪个工作服务器实例上处理请求,都具有相同的响应和副作用


因此,您不应该关心前端应用程序。无状态要求只是不适用于它。

在这种情况下,无状态意味着Hapi服务器不应在api请求之间保持任何状态。在典型的设置中,您可能有数据库、api服务器和客户端web浏览器。当客户机向您的api发出请求时,如果它所做的只是执行一些逻辑,在数据库上执行一个事务,然后将结果返回给客户机,那么您可以说api服务器是“无状态的”

另一方面,如果Hapi服务器将该事务的结果保存在内存缓存中,以防将来有任何请求请求,那么您就有了一个“有状态”服务器,如果另一个实例同时更新数据库,该服务器可以提供过期信息


需要重点关注的两个主要领域是会话数据和WebSocket。会话数据需要在进程外存储,即在数据库或内存中存储,如Redis。WebSocket需要启用一种称为“粘性会话”的功能,以便使用集群。我自己不必这么做,但有一个节点模块执行大部分工作。

小型团队。没有下午咨询。出于Sergey提到的原因,无状态需求来自PM2。我只是想弄清楚我需要确保设计的哪些方面是无状态的,这样我就不会去追逐geeseWell了,这是另一个故事,也是一个有效的要求。我把PM2误解为项目经理2,就像你说的是不同的人一样。对不起。如果您使用的是sql数据库,那么您可以开始考虑是否应该将一些操作包装到事务中。这就是我的想法,我非常确定API是无状态的,但是知道如何集中精力可以使任务易于管理