什么是 Azure SignalR 服务的 AWS 完美替代品?

Posted

技术标签:

【中文标题】什么是 Azure SignalR 服务的 AWS 完美替代品?【英文标题】:What is the AWS perfect substitute for Azure SignalR Service? 【发布时间】:2020-09-22 17:40:53 【问题描述】:

最近,我使用 Azure 的“Azure SignalR Service”和 Azure App Service 构建了一个实时聊天应用程序。它像魔术一样工作。我爱它! 但是,我现在受限于在我的平台上使用 AWS,并且想要一个同等的替代服务,这样我就可以构建一个实时服务,只利用 AWS 服务。

我可以利用 AWS 中的什么相等的子站点,以便我可以构建一个实时应用程序,类似于我使用 Azure SignalR 服务和 Azure 应用程序服务构建 Azure 应用程序的方式?

我的计划是同时使用 API Gateway + AWS Elastic Beanstock。我在这里有什么选择? Elastic beanstock 会成功吗?不确定我是否需要在 Elastic beanstock 中实现某种类型的永远在线功能,以便停机期间不会降低 AWS 资源并中断 WebSocket 连接。

值得一提的注意事项。作为该项目的一部分,我的一项硬性要求是创建一个完整的 HTTP api。我的计划是把它放在 API Gateway 代理后面。

AWS 在此声明它使用 API 网关提供实时服务

https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/

但是,在 API Gateway 中,我相信我需要创建“HTTP API”而不是“WebSocket API”。如果我有一个使用例如 ASP.NET Core web api 的后端 web api,我仍然可以选择 WebSocket API 吗?

如果我使用 AWS“WebSocket API”,我如何为我的后端 ASP.NET COre web api 创建一个 API 前端(代理),同时仍然允许实时?

【问题讨论】:

jbooker,你找到完美的替代品了吗? 我还没有验证任何内容.. 正在寻找类似的东西。你选择了哪个选项?你有没有想过用 Ocelot 滚动你自己的 api 网关?我正在拼命寻找 AWS 中的选项,以使 Websockets 与 AWS Fargate 中的容器很好地配合使用。还没有探索过似乎也支持 Websockets 的 ALB,但在网上找不到太多。 尚未选择任何选项.. 同样的情况。我们能够让反应客户端连接到微服务,但 SingalR 说它由于超时而无法协商。 【参考方案1】:

Amplify 和 AWS IoT 网关正是您所需要的。 IoT GW 使用 MQTT 和 WebSockets 提供 pub-sub。

https://docs.amplify.aws/lib/pubsub/getting-started/q/platform/js

对于 Web 应用程序,他们有 JS 库,允许您获取身份验证令牌,然后订阅或发布到主题。在服务器端,您可以使用 AWS 开发工具包将消息发布到主题。

【讨论】:

【参考方案2】:

查看 Appsynce 服务用于 UI 上的实时数据通信,我们需要更新 Angular UI 上的 npm amplify 库,请查看以下 URL。

https://aws.amazon.com/blogs/mobile/building-a-real-time-stock-monitoring-dashboard-with-aws-appsync/

https://aws.amazon.com/blogs/mobile/appsync-real-time-live-sports/

【讨论】:

【参考方案3】:

看看 AWS AppSync,我认为它与您正在寻找的相似。

https://aws.amazon.com/appsync/

【讨论】:

我知道的不够肯定,但看起来 appsync 是一个 graphql api。我不确定这如何解决客户端套接字连接。 @dhysong GraphQL 支持订阅,看起来 AppSync 用 GraphQL 实现了实时订阅:aws.amazon.com/blogs/mobile/iot-with-aws-appsync

以上是关于什么是 Azure SignalR 服务的 AWS 完美替代品?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Windows Azure 服务总线扩展 SignalR

SignalR Core 未在 Azure 应用服务中使用 Websocket

500 /signalr/negotiate 在 Azure 中部署的应用程序

基于事件驱动架构构建微服务第19部分:使用 SignalR 和 Azure Active Directory 构建和保护实时通信...

Azure AD 与 AWS IAM 集成实现SSO—下(AWS部分)

Azure 上的 SignalR 连接与负载均衡器