《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是一款消息軟體,支持發布-訂閱消息模式。
強烈建議大家認真查看 https://github.com/cloudnativego/websockets,該代碼在開始部分包含了安全認證,因此在瀏覽器中訪問/chat頁面之前,需要使用OAuth進行身份認證。
推薦閱讀:
※《Cloud Native Go》筆記(一)雲之道
※過去365天,40篇不能錯過的工具類技術乾貨文章集錦
※《微服務設計》閱讀筆記(九)安全
※如何應對線上故障
※「演講復盤」技術沙龍(滬江網4月) - 我所遇見的微服務演進這十年
TAG:微服務架構 | Go編程 | CloudNativeGo書籍 |