如何为产品添加实时功能并构建实时API

2018-09-28  本文已影响0人  13049047c237


镜像API驱动的应用程序的兴起,实时正在成为现代应用程序开发中一种新兴的,无所不在的力量。它为即时消息,实时体育源,地理定位,大数据和社交馈送提供动力。但是,什么是实时,它究竟意味着什么?什么类型的软件和技术为这个行业提供动力?让我们深入研究它。

什么是实时的?

实时可以在更相对的时间意义上定义。这可能意味着A的变化与B的变化同步。或者,它可能意味着A的变化会立即触发B的变化。或者......这可能意味着A告诉B某些事情发生了变化,但B没有做任何事情。或者......这是否意味着A告诉每个人一些变化,但不关心谁在听?

让我们深入挖掘一下。实时并不一定意味着某些东西会立即更新(事实上,“瞬间”没有单一的定义)。所以,我们不要关注效果,而应关注机制。实时是关于尽可能快地推送数据 - 它是端点之间的自动,同步和双向通信,速度在几百毫秒之内。

考虑到这个定义及其注意事项,让我们探讨推送数据的概念。

数据推送

我们首先将数据推送与“请求 - 响应”进行对比。请求 - 响应是计算机系统通信的最基本方式。计算机A 从计算机B 发送请求,计算机B 响应答复。换句话说,您可以打开浏览器并输入“reddit.com”。浏览器向Reddit的服务器发送请求,然后他们回复网页。

数据推送模型中,数据被推送到用户的设备而不是由用户拉出(请求)。例如,现代推送电子邮件允许用户无需手动检查即可接收电子邮件。同样,我们可以更连续地检查数据推送,从而持续广播数据。有权访问特定频道或频率的任何人都可以接收该数据并决定如何处理该数据。

此外,目前有几种方法可以实现数据推送/流式传输:

HTTP流媒体

HTTP流式传输为即时和连续数据推送提供了长期连接。您可以熟悉HTTP与WebSockets的性能。客户端向服务器发送请求,服务器将响应打开无限长度。此连接将保持打开状态,直到客户端关闭它或发生服务器端方事件。如果没有要推送的新数据,应用程序将发送一系列保持活动的滴答,以便连接不会关闭。

WebSockets

WebSockets提供了一个长期连接,用于在客户端和服务器之间交换消息。消息可以在任一方向上流动以进行全双工通信。这种双向连接是通过WebSocket握手建立的。就像在HTTP Streaming和HTTP Long-Polling中一样,客户端首先向服务器发送常规HTTP请求。如果服务器同意连接,则HTTP连接将替换为WebSocket连接。

网络挂接

Webhooks是在服务器之间发送数据的简单方法。不需要长期连接。当有数据要推送时,发送方向接收方发出HTTP请求。WebHook注册或“挂钩”回调URL,并在事件发生时随时通知您。您事先注册此URL,并且当事件发生时,服务器将带有事件对象的HTTP POST请求发送到回调URL。此事件对象包含将推送到回调URL的新数据。如果要接收有关某些主题的通知,可以使用WebHook。它还可用于在用户更改或更新其个人资料时通知您。

HTTP长轮询

HTTP长轮询为即时数据推送提供了长期连接。它是最简单的消费机制,也是最容易使用的机制。该技术为即时数据推送提供了长期连接。服务器保持请求打开,直到出现新数据或超时。大多数在30到120秒后发送超时,这取决于API的设置方式。在客户端收到响应(无论是来自新数据还是超时)后,客户端将发送另一个请求,并且会不断重复此请求。

推动数据难吗?是的,特别是在规模上(例如,同时推动对数百万部手机的更新)。为了满足这种需求,出现了一个完整的实时行业,我们将其定义为实时基础架构即服务(Realtime IaaS)。

实时图书馆

以下是可供开发人员根据特定语言/框架构建实时应用程序的资源汇编:

实时基础架构即服务

根据Gartner的说法,“基础架构即服务(IaaS)是一种标准化,高度自动化的产品,其中计算资源由存储和网络功能补充,由服务提供商拥有和托管,并按需提供给客户。客户可以使用基于Web的图形用户界面自行配置此基础架构,该界面可用作整个环境的IT操作管理控制台。对基础设施的API访问也可作为选项提供。“

我们经常在这里使用PaaS(平台即服务)和SaaS(软件即服务),那么它们与IaaS有何不同?

为了实时提供动力,应用程序需要经过精心设计的服务器,API,负载平衡器等系统。而不是在内部构建这些系统,组织发现购买大部分系统基础设施更具成本效益和资源效率,然后在内部开车。因此,这些系统不仅仅是IaaS,而且通常提供平台和软件层来帮助管理。从根本上讲,它们的核心优势在于它们提供实时基础架构,无论您是在内部托管还是依赖托管实例

这一切都归结为一个简单的事实,实时是很难的原因有很多:

实时应用程序IaaS

实时应用基础架构将数据发送到浏览器和客户端。它通常使用发布/订阅消息,webhook和/或websockets - 并且与应用程序或服务的主API分开。这些解决方案最适合那些寻求实时消息传递而无需构建自己的实时API的组织。

这些系统还在其基础架构产品之上提供了更加精心构建的平台/软件管理工具。例如,领先的提供商具有内置配置工具,如访问控制,事件委托,调试工具和通道配置。

Realtime App IaaS的优点

用例

虽然有些平台的功能不同,但以下是一些最典型的用例:

解决方案

以下是一些实时应用程序IaaS提供程序(托管),以便进一步学习:PubNubPusherAbly

用于API开发的实时API IaaS

实时API基础架构专门允许开发人员将实时数据推送到其现有API中。通常,您不需要修改现有的API合同,因为流服务器将充当代理代理设计允许这些服务很好地适应API堆栈。这意味着它可以从REST API继承其他工具,例如身份验证,日志记录,限制等,因此,它可以轻松地与API管理系统结合使用。在WebSocket消息被代理为HTTP请求的情况下,消息可以由后端无状态地处理。来自单个连接的消息甚至可以在一组后端实例中进行负载平衡。

总而言之,实时API IaaS用于API开发,专门针对需要构建高性能实时API(如Slack,Instagram,Google等)的组织。所有这些组织都在内部构建和管理其基础架构,因此IaaS产品可以被认为是将这些功能扩展到缺乏从头开始构建实时API的资源和技术专业知识的组织的一种方法。

Realtime API IaaS的优点

用例

虽然有些平台的功能不同,但以下是一些最典型的用例:

上一篇 下一篇

猜你喜欢

热点阅读