我正在尝试创建一个协作式的网络应用,多个用户可以共同在各种项目上工作。到目前为止,我拥有一个JavaScript客户端和一个本地的jWebSocket服务器。
为了保持可伸缩性,在部署时,我考虑了两个选项:
选项一:我可以使用AWS IoT代替多个jWebSocket服务器。发布项目的更改很容易,我只需要发布到例如
为了保持可伸缩性,在部署时,我考虑了两个选项:
选项一:我可以使用AWS IoT代替多个jWebSocket服务器。发布项目的更改很容易,我只需要发布到例如
/project/{project-id}
。但是传统的请求-响应机制如何工作呢?
问题:EC2实例处理请求时可以通过发布到不同的主题(例如/server/1
)进行访问。但是当JS客户端连接到AWS IoT时,它并不知道任何要发送请求的EC2实例。如何将每个客户端分配给一个实例/主题?
选项2
在AWS应用负载均衡器后面的多个EC2实例上运行jWebSocket服务器。负载均衡器将简单地将每个客户端分配给一个服务器,并且传统的请求-响应流程不会成为问题。但是如何推送更改呢?
问题: 每个服务器都有自己的一组连接客户端,因此它无法向连接到另一个服务器的客户端推送更改。备注
- 混合使用jWebSocket发送请求和AWS IoT接收事件似乎是一个不太好的解决方案。
- 我认为可以通过编程方式调整IoT策略,以允许/拒绝对特定项目的订阅。
- 由于Lambda引入的高延迟,使用AWS Lambda并完全放弃服务器不是一个选项(如果您有不同的经验,请分享)。
相关帖子
感谢您在此问题上提供的任何想法。