Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js AWS上的节点API体系结构_Node.js_Amazon Ec2_Oauth 2.0_Sails.js_Amazon Elastic Beanstalk - Fatal编程技术网

Node.js AWS上的节点API体系结构

Node.js AWS上的节点API体系结构,node.js,amazon-ec2,oauth-2.0,sails.js,amazon-elastic-beanstalk,Node.js,Amazon Ec2,Oauth 2.0,Sails.js,Amazon Elastic Beanstalk,我正在制作一个具有以下功能的应用程序: iOS和Android应用程序 基于web的仪表板,用于显示从移动应用程序收集的数据 该应用程序要求最终用户与我们建立一个帐户,我们很可能不会使用Facebook/Twitter登录 所有内容都将使用EC2/RDS/S3托管在AWS上,所有内容都封装在Elastic Beanstalk中 | Web Browser | <----> | sails.js app | <-------> |actionhero.js API|

我正在制作一个具有以下功能的应用程序:

iOS和Android应用程序 基于web的仪表板,用于显示从移动应用程序收集的数据 该应用程序要求最终用户与我们建立一个帐户,我们很可能不会使用Facebook/Twitter登录

所有内容都将使用EC2/RDS/S3托管在AWS上,所有内容都封装在Elastic Beanstalk中

| Web Browser |  <----> | sails.js app | <-------> |actionhero.js API|

                                                        ⬆︎  
                                                        ⬆︎
| Mobile app(s) | <-------------------------------------/
到目前为止,我已经在AWS上托管的actionhero.js中构建了大部分支持API

对我来说,将API和web应用分开是有意义的,因为web应用只面向一小部分用户——我预计我们的移动应用在web应用上的流量将达到50倍。。我们可以扩展API以服务于移动用户,而无需不必要地扩展sails.js应用程序

我的问题是:

B建议未知我应该如何处理身份验证?sails.js应用程序需要能够向API发出请求,移动应用程序也是如此

我在看oauth2orize节点模块来创建我们自己的Auth服务器,但是它是为Connect/Express设计的,所以我认为我不能在基于actionhero.js的API中使用它

如果解决方案是创建一个OAuth服务器,我应该在它自己的EC2实例上托管它吗

AWS特定问题我不完全理解创建AWS所描述的工作层环境的用例。是否有理由将API归入该类别

如果我想运行数据查询和聚合任务,我会为此创建一个单独的节点进程,对吗?如果是这样,后台工作程序是否必须存在于自己的EC2实例上

Sails.js和Actionhero.js都为socket.io提供了强大的支持。Sails应用程序和my API之间的通信是否应该通过持久的WebSocket连接进行?如果我将来需要创建新实例,这种规模会扩大吗

这似乎是一个相当典型的模式;在我把自己画进一个角落之前,我想听听这个设计中是否有任何大的危险信号谢谢

针对AWS弹性豆茎的奖励问题

| Web Browser |  <----> | sails.js app | <-------> |actionhero.js API|

                                                        ⬆︎  
                                                        ⬆︎
| Mobile app(s) | <-------------------------------------/

我会为sails.js服务器和API服务器创建单独的应用程序吗?不管怎么说,这似乎是设置它的唯一方法,但我想确保。

我们现在已经在几个应用程序中使用了node和beanstalk。对于身份验证,您可以在用户首次访问应用程序时为其创建帐户,并将帐户id存储在设备上。如果你想让他们能够从多个设备登录,你需要提供一些他们识别自己的方式,也就是id/密码,或者使用Facebook。设置它并不难。使用会话允许他们登录并保持登录状态。我们通常只在会话中存储用户id

worker层用于您希望与应用程序解耦的东西,您不需要知道它是否成功/失败的东西。通知服务器就是一个很好的例子。您将通知的信息发送到一个SQS队列中,然后将该队列发送到执行工作的工作层。我们现在只是想弄清楚这一点

一个大的聚合过程,是的,我会把它带到其他地方,这样它就不会占用您的生产服务器。您可能希望创建一些正在进行的数据聚合,因为事务被保存,所以它会累积。事后大汇总可能耗时且脆弱

听起来是的,它们是独立的应用程序

好的小费。我们使用grunt为应用程序创建zip文件。这是一个节点批处理工具。我们检查SVN中的最新信息,通过删除.SVN目录等操作进行清理,通过简单的字符串替换将配置应用到配置文件中,然后压缩结果输出。然后将其加载到beanstalk中。这将花费所有的猜测工作和时间来实际执行新部署。这样我们可以在几分钟内得到一个新的构建

豆茎很令人沮丧。当它失败时,它不会很好地告诉你为什么