微服務實戰系列之通信

前言

掰個指頭數一數,博主的“微服務實戰系列”從無到有,從零走到了十五。如果比作時鐘,剛好走過了一刻度。

當初為什么要做這個系列,博主想了又想,私以為作為當下軟件領域的幾個“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作為微服務界的高頻詞匯和主角,選擇合適的工具駕馭它,是一門重要的功課。

本期內容,暫時到此結束,歡迎分享、指導、交流!

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210780.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210780.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210780.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探秘機器學習核心邏輯:梯度下降的迭代過程 (圖文詳解)

一 需求解函數 f() 和 g()函數分別為求y值和求導數的函數。 目的:求該函數的最小值: 代碼: import numpy as np import matplotlib.pyplot as plt f lambda x : (x - 3.5) ** 2 - 4.5 * x 10 g lambda x : 2 * (x - 3.5) - 4.5x np.l…

架構LAMP

目錄 1.什么是LAMP 2.LAMP組成及作用 3.搭建Apache httpd服務 4.編譯安裝mysqld 服務 5.編譯安裝PHP 解析環境 6.安裝論壇 1.什么是LAMP LAMP架構是目前成熟的企業網站應用模式之一,指的是協同工作的一整套系統和相關軟件,能夠提供動態Web站點服務…

MATLAB算法實戰應用案例精講-【人工智能】漫談自動駕駛

目錄 常用數據集 一、自動駕駛領域數據集 1. KITTI數據集 2.CityScapes數據集 3.BDD100K數據集

go與ioc

在Go開發服務端程序時,使用IoC(Inversion of Control)機制并不像在Java等語言中那樣普遍。Go語言的設計哲學傾向于簡潔和直接,更注重代碼的可讀性和可維護性。 在Go中,通常會使用依賴注入(Dependency Inje…

【Python】視頻剪輯小程序

近期遇到一些錄制的視頻需要剪輯。 手機上剪輯操作很耗時,有幾個G的視頻,花了一天的空余時間去剪輯。電腦上也有格式工廠,有很方便。 可是學了Pthon,又無意中了解到了moviepy這個庫,于是自己寫了個簡單的視頻剪輯程序。…

Windows安裝kafka

壓縮包下載地址:https://www.apache.org/dyn/closer.cgi?path/kafka/3.6.1/kafka_2.13-3.6.1.tgz 啟動kafka步驟 zookeeper-server-start.bat rem 閉命令提示符窗口的命令回顯,這樣在運行腳本時不會顯示腳本的具體命令內容 echo offrem 命令行啟動未…

Proteus仿真--8×8LED點陣屏仿電梯數字滾動顯示

本文介紹基于88LED點陣屏仿電梯數字滾動顯示設計(完整仿真源文件及代碼見文末鏈接) 仿真圖如下 其中K1-K5的5個按鍵分別代表不同樓層,摁下按鍵后在8X8LED上便會顯示到對應樓層的跳變信息,模擬電梯的運作 仿真運行視頻 Proteus仿…

nodejs多線程,fork和Worker

一、前言 javascript是單線程執行的,如果想要多線程執行,那么相當于再運行一個node,其實不該理解成多線程,更像是多進程。 二、Worker(‘worker_threads’模塊) worker有點類似exec,直接再cmd執行node命令,不同的是兩…

《安富萊嵌入式周報》第328期:自主微型機器人,火星探測器發射前失誤故障分析,微軟推出12周24期免費AI課程,炫酷3D LED點陣設計,MDK5.39發布

周報匯總地址:嵌入式周報 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬漢嵌入式論壇 - Powered by Discuz! 更新一期視頻教程: 【實戰技能】 單步運行源碼分析,一期視頻整明白FreeRTOS內核源碼框架和運行…

【STM32】TIM定時器基本定時功能

第一部分:定時器基本定時的功能; 第二部分:定時器的輸出比較功能; 第三部分:定時器輸入捕獲的功能; 第四部分:定時器的編碼接口。 1 TIM簡介 TIM(Timer)定時器&#…

在OpenCV基于深度學習的超分辨率模型實踐

1. 引言 OpenCV是一個開源的計算機視覺庫,擁有大量優秀的算法。基于最新的合并,OpenCV包含一個易于使用的接口,主要用于實現基于深度學習方法的超分辨率(SR)。該接口包含預先訓練的模型,這些模型可以非常容…

redis中使用事務保護數據完整性

事務是指一個執行過程,要么全部執行成功,要么失敗什么都不改變。不會存在一部分成功一部分失敗的情況,也就是事務的ACID四大特性(原子性、一致性、隔離性、持久性)。但是redis中的事務并不是嚴格意義上的事務&#xff…

使用flutter_native_splash替換啟動圖片,iOS端替換不成功

使用flutter_native_splash替換啟動圖片,iOS端替換不成功 1、刪除App重啟手機;2、重新創建一個新的LaunchScreen.storyboard,比如命名為NewLaunchScreen.storyboard,在General里面設置Launch Screen File為這個新的NewLaunchScree…

藍橋杯 day01 奇怪的數列

題目描述 奇怪的數列 從 X 星截獲一份電碼,是一些數字,如下: 13 1113 3113 132113 1113122113 ?? YY 博士經徹夜研究,發現了規律: 第一行的數字隨便是什么,以后每一行都是對上一行"讀出來…

智能優化算法應用:基于蝗蟲算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于蝗蟲算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用:基于蝗蟲算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.蝗蟲算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

【數據挖掘】國科大蘇桂平老師數據庫新技術課程作業 —— 第二次作業

1 設 F { A B → C , B → D , C D → E , C E → G H , G → A } F\{AB\rightarrow C,B\rightarrow D, CD\rightarrow E, CE\rightarrow GH, G\rightarrow A \} F{AB→C,B→D,CD→E,CE→GH,G→A},用推理的方法證明 F ∣ A B → G F\;|AB\rightarrow G F∣AB→…

持續集成交付CICD:使用Maven命令上傳Nexus制品

目錄 一、實驗 1.使用Maven命令上傳Nexus制品(第一種方式) 2.使用Maven命令上傳Nexus制品(第二種方式) 一、實驗 1.使用Maven命令上傳Nexus制品(第一種方式) (1)指定一個 hoste…

說說React jsx轉換成真實DOM的過程?

在React中,JSX(JavaScript XML)是一種語法糖,用于描述用戶界面的結構和組件關系。當你編寫React組件并包含JS JSX解析:React中的JSX代碼首先會被解析成JavaScript對象。這個過程通常是通過Babel等工具進行的&#xff0…

Flutter視頻播放器在iOS端和Android端都能實現全屏播放

Flutter開發過程中,對于視頻播放的三方組件有很多,在Android端適配都挺好,但是在適配iPhone手機的時候,如果設置了UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight都為false的情況下,無法…

pytorch 筆記:dist 和 cdist

1 dist 1.1 基本使用方法 torch.dist(input, other, p2) 計算兩個Tensor之間的p-范數 1.2 主要參數 input輸入張量other另一個輸入張量p范數 input 和 other的形狀需要是可廣播的 1.3 舉例 import torchxtorch.randn(4) x #tensor([ 1.2698, -0.1209, 0.0462, -1.3271…