首发于极光日报
Pushpin —— 把 REST API 变成实时 API 的开源库

Pushpin —— 把 REST API 变成实时 API 的开源库

简评:Pushpin 是一个用 C++ 写的反向代理服务器,用它可以轻松实现 WebSocket,HTTP 流和 HTTP 长轮询服务。

”实时” 在现代技术栈中无所不在。随着消费者要求更快更频繁的数据交易,越来越多的公司加大了加速这些交易的基础设施的投资。尽管我们已经看到 API 成为经济和技术的必需品,但它们通常是基于请求-响应的交互模式,这限制了它们在实施领域的范围和有效性。


请求-响应 VS 事件驱动 APIs

请求-响应核心上是一种信息交换模式,请求者发送请求消息给一个答复系统。答复系统接收及处理请求,如果一切顺利的话,它返回一条消息作为响应。这种交换形式对于大多数结构化的请求都很适用,但它也限制了那些清楚地知道自己想从另一方中得到什么的系统的集成。因此,这些请求-响应样式的 APIs 必须遵循调用服务的交互脚本。

在事件驱动架构中,应用集成了多种基于事件驱动交互的服务和产品,这些交互由事件分发器,事件消费者,事件通道驱动。事件本身是产生,发布,传播,检测或者消耗等重大的“状态变化”。这种架构模式在软件组件和服务之间形成低耦合。好处在于事件分发器不需要知道消费者的状态,消费者是谁或者事件是如何被处理的。它是一个通过持续的流来推送数据的机制。


事件驱动的 API 解决方案

在技术生态中,有许多方式来实现数据流和事件 API。一些领先的即需即用(SAAS)方案包括 PubNubPusherKaazingFanout 等,它们都有自己的优缺点。为了理解事件驱动架构的基本原理,我们将探索一个叫 Pushpin 的开源库。


Pushpin

Pushpin 的主张是实时推送的开源解决方案。实时是事件 API 的必备属性。它的核心是一个反向代理服务器,它可以轻松实现 WebSocket,HTTP 流和 HTTP 长轮询服务。结构上来说,Pushpin 使用普通的短期 HTTP 请求来和后端 web 应用通信。

这个架构提供了一些核心优势:

  • 后端可以使用任何语言和任何服务器
  • 数据通过 HTTP POST 请求推送到 Pushpin 的私有控制 API
  • 对连接的客户端是不可见的
  • 当需要请求后端数据时,它来管理有状态的元素
  • 可以横向扩展而不需要 Pushpin 实例之间的通信
  • 它用发布-订阅模式来进行数据传输
  • 它可以同时作为代理服务器和发布-订阅代理。

集成 Pushpin

从系统的层面上来看,有几种方式来集成 Pushpin。最基本的用法是把 Pushpin 放在典型的 web 服务后端之前,后端可以直接把数据推送到 Pushpin。web 服务本身可能发布数据来响应请求,或者有一些后台的进程/作业来发布数据。

因为 Pushpin 是一个代理服务器,它可以和绝大多数 API 管理系统(允许你执行实际的 API 开发)一起工作。比如,你可以把代理链起来,把 Pushpin 放在前面,这样你的 API 管理系统就不用处理长连接。最重要的是,Pushpin 可以把 WebSocket 协议变成 HTTP 协议,允许 API 管理系统来操作转换后的数据。

你可以在这里看看用 Pushpin 构建的样品应用。


原文链接:Pushpin — An Open Source Library That Turns REST APIs into Realtime APIs


推荐阅读:


极光日报,极光开发者旗下媒体。

每天导读三篇英文技术文章。

发布于 2017-12-26 13:31