iT邦幫忙

0

微服務之間的通訊

  • 分享至 

  • xImage

我的專案開發裡預計會有幾個docker容器所構成的一個微服務系統,本來想讓它們之間使用Restful API來溝通,但想請問一下,如果都改成使用websocket來溝通的話,這樣適合嗎?有沒有要注意的地方?謝謝
註:我的微服務之間傳輸的資料量不會很大

看更多先前的討論...收起先前的討論...
obarisk iT邦研究生 1 級 ‧ 2023-05-10 06:14:12 檢舉
我想不到用 websocket 的理由
你的容器間要用網頁傳遞資料?
fillano iT邦超人 1 級 ‧ 2023-05-10 08:32:24 檢舉
也许可以考虑用pub/sub,例如用Redis提供的pub/sub功能。
用webapi就好了啦,現在webservice都可以包裝成docker且極微型
WILL.I.AM iT邦新手 3 級 ‧ 2023-05-22 08:47:25 檢舉
謝謝各位提出的做法, 我都明白, 但還是沒有說出websocket不適合的理由。TO @obarisk,websocket不一定只能用在網頁
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
Ray
iT邦大神 1 級 ‧ 2023-05-09 19:32:23
最佳解答

Websocket 適合用在:
持續且快速的資料傳遞 (例如: 股票盤中即時報價)
需要快速且雙向傳遞資訊
需要儲存或記憶狀態的通訊 (Stateful)
需要快速處理的情境
缺點:
不適合用在隨時會 Scale-out/in 的系統
不容易做出 Data Cache 機制
在 OSI Layer 較低的層次運作, 不易製作出複雜協定

RESTFul 適合用在:
非持續性, 以需求為導向的請求
需要做到 CRUD 交易管裡的資源
很容易適應 Scale-out/in 的動態調整
容易做出 Data Cache 機制
在較高的 OSI 層次運作, 可以編制出較複雜協定
缺點:
發動成本高, 每次傳輸都須要先拆解 HTTP 協定
無狀態 (Stateless) 通訊

不過, 小系統若要完全無視以上分析, 隨便用, 也是可以;
畢竟系統規模要大到某個程度以上, 才會有明顯的差別....

obarisk iT邦研究生 1 級 ‧ 2023-05-10 06:13:38 檢舉

但是跳到非網頁的情境下,要做 socket 有除了 websocket 外的非常多種方式...

froce iT邦大師 1 級 ‧ 2023-05-10 10:57:46 檢舉

但是跳到非網頁的情境下,要做 socket 有除了 websocket 外的非常多種方式...

沒錯,內部通訊為啥要用websocket。
GRPC、直接用socket、pub/sub都是不錯的選擇。懶的話REST繼續用也不錯。

我要發表回答

立即登入回答