前言
掰個指頭數一數,博主的“微服務實戰系列”
從無到有,從零走到了十五。如果比作時鐘,剛好走過了一刻度。
當初為什么要做這個系列,博主想了又想,私以為作為當下軟件領域的幾個“hot spot”
之一,又乘著春天(Spring
)之東風,微服務的種子已然深埋于每個程序猿/媛的心中。而在實際工作/學習中,有太多基礎理論、技能必須掌握。
微服務不僅僅是一個名詞,更是一個動詞,一個體系化的服務設計思路。我們說服務的本質是在做數據交換,所謂“以數易數”
。早期人類也正是通過以物換物的方式,促成最早也最簡單的的合作模型。
感嘆至此,言歸正傳,書接上文,繼續帶著各位盆友,大話微服務
。
上圖是一個簡易型微服務交互設計框架,我們以它作為今天的起點,開始新的旅程,GO~
- 微服務實戰系列之J2Cache
- 微服務實戰系列之Cache(技巧篇)
- 微服務實戰系列之MemCache
- 微服務實戰系列之EhCache
- 微服務實戰系列之Redis
- 微服務實戰系列之Cache
- 微服務實戰系列之Nginx(技巧篇)
- 微服務實戰系列之Nginx
- 微服務實戰系列之Feign
- 微服務實戰系列之Sentinel
- 微服務實戰系列之Token
- 微服務實戰系列之Nacos
- 微服務實戰系列之Gateway
- 微服務實戰系列之加密RSA
- 微服務實戰系列之簽名Sign
Q:如何建立通信
提到通信方式,博主立刻可以想到:“書信、郵件、短信”
等媒介。
古代信息不發達,通信工具缺乏,山高路遠,幸虧有了造紙術
,才有筆墨縱橫的天地。今天我們就先談談兩個人是如何建立通信的。
1. 打電話
作為最直接了當,便捷有效,可隨時掌握對方情況的通信手段,打電話自然是首選。你可以通過各路感官親切的察覺到對方的“一舉一動”
,從而獲取有價值的信息,以達成自己的預期目標。此刻,如果對方接了,心表甚慰,可以愉快的開始對話;如果對方沒接(不管有意無意),你怎么辦? 坐著傻等也不是辦法啊,果斷尋找新思路。
2. 發短信
電話打不通,發個短信唄,遲早會看吧? 顯然想得有點美了,萬一還不回復呢? 這不“已讀不回”
的“詛咒”
就來了。如果兩個人是熟人也就罷了,萬一不是熟人,那真是干著急沒辦法呀。幸虧我們是聰明一族,從容地找到了新方法。
3. 群發
在某些情況下,我們可以使用短信“轟炸”
對方。可以選擇單轟,也可以群炸(O(∩_∩)O哈哈~)。
當然博主并不推薦蠻干,不然“事前有多痛快,事后有多懊悔”
。當你需要簡單、快捷、有效的傳遞所思所想所念之時,群發是一個不錯的選擇。不必關心每個人是否回復,只關心有多少人回復就足夠了。
但是此刻對方的心里會怎么樣? 當然略顯無奈,心里暗暗揣度:我遇到了什么**。既然有了反抗的想法,那自然要有所行動。
4. 訂閱
如果實在躲不了逃不了,那就訂閱唄,何必自尋煩惱。事先約定好何時何地通信不就行了嘛,從此你好我好大家好,生活日子甜美如初。
綜上,博主為各位盆友介紹了兩個人如何建立通信的形式和過程。因為如此平常,自然易于理解,博主不再展開。
接下來,繼續思考一個問題,請將目光鎖定博主,繼續跟著走。
Q:如何正確的通信
既然兩個人成功建立了聯系,那該如何保障通信成功呢?有什么正確的方式可循?答案當然是有的。
1. 同步(Sync)
什么是同步? 剛才其實已經舉例了,打電話呀,你打我接,不說bye不能掛。
同步
:一個人發出一個指令時,必須等待對方反饋,否則“坐等”
。
這就好比服務器都冒煙了,你還在那傻傻的等,但等也有等的好處啊!你去商超買菜,去公園排隊等等,其實都在兢兢業業干一件事,正是“事倍功倍”
。
2. 異步(Async)
兢兢業業的是同步,難道異步就不是了?那怎么可能。異步的驕傲我們來慢慢體會。
異步
:一個人發出一個指令后,可以接著發出第二個指令。當然可以是對同一個人發,也可以對多個人發。
好嘛,這不正是群發么?“咱不管對不對,先追求快不快”
。當然如此一意孤行,那難免招來仇恨。所以怎么做到既對又快,才是幸福甜蜜的真諦。
關于同步或異步的通信機制,博主已經大致介紹了。簡單一句話:“愛我所用,選我所喜”
。
Q:如何選擇通信工具
掌握了如何正確的通信,那是不是該找工具了,比如手機、郵箱,皆是工具。回到我們的微服務中,又是什么呢?請轉移視線,回到博主的第一張微服務圖(service),凡箭頭指向,皆是通信的兩端。
比如Feign,比如Rpc,比如Resful,均是基于同步
的請求/響應模式。
比如點對點(Point to Point, P2P)和發布-訂閱(Publish and Subscribe, Pub-Sub),均是基于異步
的通信模式。
博主私以為,無論同步或異步,取決于業務場景的條件和要求,沒有正確與否之說。通信是消息傳遞的媒介和手段,消息是數據的載體和容器。微服務又是基于通信完成的,一鏈一點,點點相依。
結語
今天博主帶著各位盆友,對微服務之間如何通信進行了簡單的介紹。當你在實際工作中,遇到同步/異步的選擇題時,或許用得上。RemoteService
作為微服務界的高頻詞匯和主角,選擇合適的工具駕馭它,是一門重要的功課。
本期內容,暫時到此結束,歡迎分享、指導、交流!