《Cloud Native Go》筆記(十一)使用WebSockets

Cloud Native Go:構建基於Go和React的雲原生Web應用與微服務。Kevin Hoffman, Dan Nemeth著,TalkingData:宋凈超,吳迎松,徐蓓,馬超 譯,電子工業出版社,2017年。

筆記中有些內容直接引用原書。

=======================================================

簡答是可靠性的先決條件。——Edsger W.Dijkstra

WebSockets和伺服器發送事件(Server-Sent Event, SSE)這兩種技術能夠提供更直觀的交互瀏覽器體驗。

本章的主要內容有以下兩方面:

1. 剖析WebSockets及其在雲中的適用性

2. 使用第三方消息程序構建WebSockets式的應用程序

WebSockets與伺服器發送事件對比

1. WebSockets是全雙工的;SSE只能由伺服器發送。

2. 由於connection upgrade,WebSockets的流量不包含在傳統的HTTP連接中,這在遇到舊版本的路由器和代理時可能會出現問題。

3. 應用程序越複雜,SSE需要的HTTP連接就越多,而對於很多App,不論它們有多複雜,只要為每個用戶維持一個連接即可。

WebSockets的雲原生適應性

所有真正的雲原生應用程序都是無狀態的。由於WebSockets的有狀態性,當對其進行水平擴展時,會產生一些隱患。

不能創建孤島式的應用程序示例,使得數據和消息通知無法跨示例傳遞。應將WebSockets組件從示例中抽離,將它隱藏在後端。可以自己實現或直接使用雲端提供的各種消息服務。

使用消息服務創建WebSockets應用

PubNub是一款消息軟體,支持發布-訂閱消息模式。

強烈建議大家認真查看 github.com/cloudnativeg,該代碼在開始部分包含了安全認證,因此在瀏覽器中訪問/chat頁面之前,需要使用OAuth進行身份認證。


推薦閱讀:

《Cloud Native Go》筆記(一)雲之道
過去365天,40篇不能錯過的工具類技術乾貨文章集錦
《微服務設計》閱讀筆記(九)安全
如何應對線上故障
「演講復盤」技術沙龍(滬江網4月) - 我所遇見的微服務演進這十年

TAG:微服務架構 | Go編程 | CloudNativeGo書籍 |