申明:
本文转自 DEV Community 网站,文章翻译由开发者社区提供;
点击下方链接,查看英文原文:
- https://dev.to/aws-builders/s…
服务之间或人员之间的实时通信都很难实现。
好在,身处当今的云计算时代,咱们能够通过多种抉择来实现牢靠的,基于 WebSocket 的通信。
本文将介绍亚马逊云科技环境中的 WebSocket。具体有哪些抉择?各有什么利弊?别离要部署哪种架构?
一起看看吧。
Amazon API Gateway WebSocket
2018 年 12 月,亚马逊云科技公布了 Amazon API Gateway 的一个新性能:对 WebSocket 的反对。
我还记得过后本人对此感到很兴奋。因为我在学习一门新的编程语言时往往会抉择开发一种聊天应用程序(因为我感觉待办事项清单那类应用程序有些无聊),因而我过后立刻就开始浏览服务文档开始理解这项性能了。
弊
浏览文档后,我的激情很快消退。
- 对播送行为的反对很不现实。据我所知,无奈通过繁多 API 调用以原生形式将音讯发送给多个连贯。须要播送性能的状况下,不足对 Topic 或 Room 的原生反对使 Amazon API Gateway WebSocket 成为不太适宜的抉择。
- 须要 以某种形式跟踪每个连贯的状态。在我看来,通常开发者会偏向于应用 Amazon DynamoDB 实现这一点。如果你须要的是一种齐全托管的解决方案,那么必定会对该性能感到悲观。
利
不过该性能也并非没什么益处。
- 因为你可能曾经在应用 Amazon API Gateway,将 WebSocket 退出你的架构,整个过程的复杂性可大幅升高。
- 借助 Amazon API Gateway 的间接集成性能,咱们能够创立精密有弹性的 WebSocket 后端,齐全无需应用 Lambda 函数。
我本人就承受了这样的挑战。后果能够看这里。 - 该性能的流动部件数量绝对较少,在我看来,十分易于上手并且学习过程很简略。
架构
我认为 Amazon API Gateway WebSocket 是 池化的绝佳替代品。取决于服务的流量大小,保护 WebSocket 连贯可能比定期向 API 发出请求更便宜。这里有一个对于该话题的精彩资源。
Amazon AppSync GraphQL 订阅
Amazon AppSync
是一种用于创立托管 GraphQL API 的服务。随着 GraphQL 逐步进入支流,该服务开始疾速遍及。
实时性能可通过 GraphQL 订阅提供。解释 GraphQL 订阅到底是什么,这曾经超出了本文的范畴,如果你对该技术还不太熟悉,倡议本人做做功课。
弊
- 依自己高见,你在施行过程中可能会遇到 很多问题。这里有一篇对于该话题的精彩文章。
- 前端方面,你 可能在将 Amazon AppSync JavaScript 客户端与本人的某个 GraphQL 客户端库进行集成时遇到问题 。截止撰写本文时,GitHub 上曾经呈现大量相干问题,这些问题都与我最喜爱的 GraphQL 客户端:apollo-client 进行的集成无关。
- 这一点可能比拟显著,但我仍然有必要提出。据我所知,该性能仅在 GraphQL 上下文中可用。如果能有非 GraphQL 版本的 Amazon AppSync 订阅那就太好了。但兴许这样的服务曾经存在?持续读上来吧!
利
- 天呐!咱们能够用 Amazon AppSync 实现很多工作。如果一切正常,该服务能够为你节约大量工夫。依自己高见,所需的基础知识都很容易把握,如果你曾经相熟 GraphQL,那么很容易就能把握 AppSync 订阅的运作。
- Amazon AppSync 订阅 扩展性很好 。依据亚马逊云科技的介绍, 扩大至数百万个连贯 通常都应该不会有问题。从集体教训来说,我可能毫无问题地将服务推送给大概 50 万个连贯。
架构
Amazon AppSync 提供了丰盛的抉择。该服务非常适合绝大部分(甚至全副)须要 GraphQL 订阅的场景。
我倡议你能相熟服务页面上列出的各种 Amazon AppSync 用例。
Amazon IoT Core MQTT
当我第一次据说 Amazon IoT 服务套件时,最初我想到的是能为 WebSocket 提供丰盛且可扩大的反对。进一步理解后,我惊喜地发现该服务甚至提供了齐全托管的 MQTT 主题。
弊
- 为了全面了解 WebSocket 性能,首先须要相熟很多服务中的挪动部件。设施影子是什么?是否须要某种类型的证书来进行身份验证?数据端点是什么?我在试图搞清该服务的运作前就问过本人这些问题。
- 兴许因为我生存在本人的“社区泡泡”里吧,但 我简直没看到多少无关应用 Amazon IoT Core 中 WebSocket 性能的教程。你兴许会发现自己遇到的问题很难找到答案。这是我在学习该服务时参考的博客文章。
利
- 通过 Amazon IoT Core MQTT 实现的 WebSocket 是 独立于 API 架构的。你是否应用了本人的 GraphQL 服务器?或者更违心应用 REST API?无论怎样都能够与 IoT Core MQTT 集成。记得我曾在上文中提过想要用非 GraphQL 版本的服务来解决 WebSocket 吗,我所指的就是这个服务。
架构
与物联网相干的所有事件都不是我的业余畛域。不过这并没有阻止我摸索的脚步。
我置信 Amazon IoT Core MQTT 能够用于 实时的前端性能切换。在 Amazon Amplify 插件的帮忙下,将前端与服务相集成的过程应该很简略。这里介绍了我应用 Amazon IoT Core 构建实时前端性能切换的过程。
总结
在亚马逊云科技平台上无服务器的 WebSocket 方面,开发者有很多抉择:从 GraphQL 相干的服务到 Amazon IoT Core MQTT 主题令人眼前一亮的用法,十分丰盛。
心愿本文能够让你有所播种。我打算进一步介绍每项服务的根本信息,同时也激励大家自行摸索。
如果你有任何问题,欢送通过 Twitter 给我发私信:@wm_matuszewski。
感激你的浏览。
文章作者:Wojciech Matuszewski
Wojciech Matuszewski for AWS Community Builders