這是一個沒有距離的世界,實時推送了解下唄

應用程序APP的興起,實時性有他不可磨滅的功勞。讓我們變成一個沒有距離的世界,包括各種方式如:即時消息,訂閱關注推送,地域推送,數據分析推送等。來來來了解下實時推送的技術細節唄~

這是一個沒有距離的世界,實時推送了解下唄

實時性

實時性是相對的。並沒有絕對的即時更新。儘可能快地推送數據,使點對點之間的實現自動化同步和雙向通信,速度一般都會控制在幾百毫秒之內。實時性的幾個要點解釋如下:

  • 同步意味著兩個端點都可以同時訪問數據;
  • 雙向通訊意味著可以向任一方向發送數據;
  • 是數據的發送者或接收者(手機,平板,服務器);
  • 幾百毫秒是人感覺不到的時間感,因為數據不能立即傳遞。

數據推送

在數據推送模式中,數據被推送到用戶的設備,而不是被用戶請求數據。

這是一個沒有距離的世界,實時推送了解下唄

HTTP流媒體

HTTP流式傳輸為即時和持續數據推送提供了長期連接。通過WebSockets的性能,您可以熟悉HTTP。客戶端向服務器發送請求,並且服務器將響應打開為無限長。此連接將保持打開狀態,直到客戶端關閉它或發生服務器端事件。如果沒有新數據推送,應用程序將發送一系列保持活動的請求,以便連接不會關閉。

這是一個沒有距離的世界,實時推送了解下唄

WebSockets

WebSockets為客戶端和服務器之間交換消息提供了一個長期的連接。消息可能以任何方向流向全雙工通信。這種雙向連接是通過WebSocket握手建立的。就像在HTTP流和HTTP長輪詢中一樣,客戶端首先向服務器發送常規HTTP請求。如果服務器同意連接,則HTTP連接被替換為WebSocket連接。

這是一個沒有距離的世界,實時推送了解下唄

Webhooks

Webhooks是在服務器之間發送數據的簡單方法。不需要長期連接。發送數據時,發送方向接收方發送HTTP請求。WebHook註冊或“掛鉤”到回調URL,並在任何時候發生事件時通知您。您事先註冊此URL,並在事件發生時,服務器向回調URL發送帶有Event Object的HTTP POST請求。此事件對象包含將推送到回調URL的新數據。如果您想接收有關某些主題的通知,可以使用WebHook。它也可以用來在用戶更改或更新他們的個人資料時通知您。

這是一個沒有距離的世界,實時推送了解下唄

HTTP Long-Polling

HTTP Long-Polling為即時數據推送提供了長期連接。這是消耗最簡單的機制,也是最容易實現可靠性的機制。這種技術為即時數據推送提供了一個長期連接。服務器保持請求打開,直到發生新數據或超時。大多數在30至120秒後發送超時,這取決於如何設置API。客戶端收到響應後(無論是來自新數據還是超時),客戶端都會發送另一個請求,並持續重複。

這是一個沒有距離的世界,實時推送了解下唄

實時性架構

我們常用的PaaS(平臺即服務)和SaaS(軟件即服務)與IaaS的不同。

  • 基礎設施即服務(IaaS):硬件由外部提供商提供併為您管理。
  • 平臺即服務(PaaS):硬件和操作系統層都為您管理。
  • 軟件即服務(SaaS):為平臺和基礎架構(為您管理)提供應用程序層。

為了實時提供服務,應用程序需要一個精心構建的服務器、API和負載平衡器等。而不是在內部構建這些系統,企業會購買大部分這種系統基礎架構會更具成本效益和資源效率,然後在內部驅動它。因此,這些系統不僅僅是IaaS,通常同時提供平臺和軟件層。從本質上講,它們的核心優勢在於它們提供實時基礎架構,無論您是在內部託管還是依賴於託管實例

實時性困難有很多:

  • 客戶正常運行時間需求  —穩定性要求很高。
  • 水平可伸縮性  - 必須能夠處理系統中的不穩定和大量負載,否則可能導致死機。
  • 複雜性  - 保持高性能實時系統不僅複雜,而且需要豐富的經驗和專業知識。
  • 意外事故  - 無論是由於負載高峰還是新功能發佈都會導致系統宕機。因此需要有多個應急措施,以確保系統不宕機。
  • 排隊  - 當您發送大量數據時,您可能需要一箇中間排隊機制來確保您的後端進程不會因增加的消息負載而負擔過重。

實時性應用程序IaaS

這是一個沒有距離的世界,實時推送了解下唄

實時應用基礎設施將數據發送給瀏覽器和客戶端。它通常使用pub / sub消息傳遞,webhooks和/或websockets - 並且與應用程序或服務的主API分開。系統在其基礎架構產品之上還具有更完善的平臺/軟件管理工具。好的供應商擁有內置的配置工具,如訪問控制,事件委託,調試工具和通道配置。

實時應用程序IaaS的優勢

  • 速度 - 通常明確設計為向最終用戶設備(包括智能手機,平板電腦,瀏覽器和筆記本電腦)提供延遲低的數據。
  • 多個SDK更易於集成。
  • 使用全球分佈的實時數據交付平臺。
  • 多個協議適配器。
  • 經過良好測試。
  • 將配置保持在最低限度。

用例

平臺的功能不同,下面是典型的用例:

  • 實時聊天  - 在微服務環境中,實時API代理可輕鬆偵聽來自其他微服務的即時更新,而無需集中式消息代理。每個微服務都有自己的代理實例,微服務通過組織自己的API合約而不是特定於供應商的機制相互通信。
  • 物聯網設備控制  - 在互聯網連接的設備之間安全地監控,控制,配置和傳輸數據。
  • 地理追蹤/地圖實時更新  - 與其他實時API(如:地圖)集成以構建豐富的實時更新。
  • 多人遊戲同步  - 同步多個同時玩家之間的通信以保持遊戲暢通。

開發實時性API IaaS

實時API基礎架構特別允許開發人員將實時數據推送到其現有的API中。通常不需要修改現有API,因為流式服務器將充當代理。代理設計允許這些服務很好地適應API堆棧。這意味著它可以從REST API繼承其他設施,例如認證,日誌記錄,限制等,因此可以輕鬆地與API管理系統結合使用。在WebSocket消息被代理為HTTP請求的情況下,消息可以由後端無狀態地處理。來自單個連接的消息甚至可以跨一組後端實例進行負載均衡。

實時API IaaS用於API開發,特別針對需要構建高性能實時API(如Slack,Instagram,Google等)的企業。所有這些企業均在內部構建和管理其基礎架構,因此IaaS產品可以被認為是將這些功能擴展到缺乏資源和技術專長以從頭開始構建實時API的組織的一種方式。

實時API IaaS的優勢

  • 自定義構建一個內部API。
  • 適用於現有的API管理系統。
  • 不會將您鎖定在特定的技術堆棧中。
  • 在整個堆棧中提供實時功能。
  • 通常基於代理,具有pub / sub或polling。
  • 無論後端語言或數據庫如何,都可以將實時添加到任何API。
  • 雲或自託管的API基礎架構。
  • 可以從REST API繼承設施,例如認證,日誌記錄,限制。

用例

雖然有些平臺的功能不同,但下面是一些最典型的用例:

  • API開發  - 可以在現有API基礎架構之上構建自定義實時API。
  • 微服務  - 實時API代理可以方便地監聽來自其他微服務的即時更新,而不需要一個集中的消息代理。每個微服務都有自己的代理實例,微服務通過組織自己的API合約而不是特定於供應商的機制相互通信。
  • 消息隊列  - 如果需要推送大量數據,則可能需要引入中間消息隊列。這樣後端進程就可以將數據發佈到消息隊列中,並且隊列可以通過適配器將數據中繼到一個或多個代理實例。實時代理能夠將訂閱信息轉發給此類適配器,以便消息只能發送給具有指定通道的訂閱者的代理實例。
  • API管理  - 可以將API管理系統與實時代理結合起來。大多數API管理系統也作為代理服務器工作,只需將代理鏈接在一起即可。將實時代理置於前端,以便API管理系統不受長期連接的影響。實時代理通常可以將WebSocket協議轉換為HTTP,從而允許API管理系統對翻譯後的數據進行操作。
  • 大規模的CDN性能  - 由於實時代理實例不互相通話,並且消息傳遞可以分層,這意味著實時代理實例可以在地理上分佈以創建實時推送CDN。客戶端可以連接到最近的區域邊緣服務器,事件可以從數據源輻射到邊緣。

如果覺得幫到您,可以訂閱轉發。


分享到:


相關文章: