作爲一個開發者,你可能已經利用過REST API來構建和集成各種應用。REST API是基於HTTP協議的交互模式,它使得客戶端和服務器可以通過請求和響應來進行數據交換,簡單、靈活、通用。
然而,當你開發實時應用,如IM聊天、協作等應用時,意味着客戶端需要不斷向服務器請求才能獲取到最新數據,這將浪費大量網絡流量和資源,導致數據延遲。要麼採用複雜的WebSocket協議,但無疑會增加開發的難度和成本。爲此,我們是否能找一種更簡便、低成本的解決方案呢?答案是肯定的,它就是Pushpin。
什麼是Pushpin?
Pushpin是用Rust和C++編寫的反向代理服務器。它可以讓你在不修改後端代碼的情況下,爲你的REST API添加實時通信功能。它支持WebSocket、HTTP流和HTTP長輪詢等多種實時協議,讓你的前端和後端之間實現雙向通信。
Pushpin不會緩存數據,不會影響應用程序的數據模型,也不會綁定您的 API 定義。它只是一箇中間層,讓後端能夠根據自己的數據模型來處理客戶端的請求。客戶端也不必關心“頻道”或“消息”的概念,只要發送 HTTP 請求或 WebSocket 幀,後端就能根據這些輸入來推送實時數據。
Pushpin如何工作?
Pushpin它作爲一箇中間層,接收前端發來的請求,並轉發給後端。如果後端返回了一個普通的HTTP響應,Pushpin就直接返回給前端。如果後端返回了一個特殊的響應,比如帶有Grip頭部或者帶有訂閱信息,Pushpin就會保持連接,並等待後端通過控制API推送數據給前端。
這樣一來,你就可以在後端使用任何語言和框架來開發REST API,而不需要關心實時協議的細節,只要你按照Pushpin提供的規範來返回響應和推送數據,Pushpin就會自動爲你處理好前端和後端之間的實時通信。
Pushpin能做什麼?
Pushpin非常適合各種設置,因爲它充當代理服務器和發佈-訂閱代理。
1、代理
最基本的設置是將Pushpin放在典型的Web服務後端前面,後端將數據直接發佈到Pushpin。Web服務本身可能會發布數據以響應傳入的請求,或者可能存在某種發佈數據的後臺進程/作業。
2、 使用API管理
可以將API管理系統與Pushpin結合使用。將Pushpin放在前面,以便API管理系統不會受到長期連接的影響。此外,Pushpin可以將WebSocket協議轉換爲HTTP,允許API管理系統對轉換後的數據進行操作。
3、 使用消息隊列
如果要推送大量數據,則可能需要引入中間消息隊列。這樣,後端進程可以將數據一次性發布到消息隊列,隊列再通過適配器將數據中繼到一個或多個Pushpin實例。Pushpin能夠將訂閱信息轉發到此類適配器,以便消息能發送到具有給定通道訂閱者的Pushpin實例。
在微服務環境中,Pushpin可以輕鬆偵聽來自其他微服務的即時更新,而無需集中式消息代理。每個微服務都有自己的Pushpin實例,微服務通過組織自己的API協定而不是特定於供應商的機制相互通信。5、 作爲大型 CDN
由於Pushpin實例互不通信,並且消息傳遞可以分層,這意味着Pushpin實例可以在地理上分佈以創建實時推送 CDN。客戶端可以連接到最近的區域邊緣服務器,事件可以從數據源輻射到邊緣。
爲了方便集成,提供有許多後端語言和框架的庫:
Pushpin在Apache許可證 2.0 版下獲得許可,它是一個讓你的REST API變成實時API的神器,它可以爲你的應用添加實時通信功能,無縫地與現有的REST API集成。它支持多種實時協議,可以和任何語言和框架配合使用,還提供了高效穩定的服務。如果你想要開發一個實時的應用,不妨試試Pushpin!
項目地址:https://pushpin.org/ 文檔地址:https://pushpin.org/docs/about/ 源碼地址:https://github.com/fastly/pushpin
寫作不易,轉載請註明博文地址,否則禁轉!!!