日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

同步架構和異步架構的區別,你知道嗎?

來源: 責編: 時間:2024-01-02 09:31:04 247觀看
導讀就程序員而言,日后的職業發展可以走 3 個方向:專攻技術深度、轉團隊管理、晉升架構師。成為一名優秀的架構師,是大多數技術人的追求。但資深架構師的出現幾率僅約為 0.3%。如果想在 3-5 年后穩坐金字塔尖,必須有扎實的代

就程序員而言,日后的職業發展可以走 3 個方向:專攻技術深度、轉團隊管理、晉升架構師。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

成為一名優秀的架構師,是大多數技術人的追求。但資深架構師的出現幾率僅約為 0.3%。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

如果想在 3-5 年后穩坐金字塔尖,必須有扎實的代碼功底和項目積累,也要意識地培養技術廣度和架構思維能力。多學習牛人經驗也可獲益良多。N3V28資訊網——每日最新資訊28at.com

圖片圖片N3V28資訊網——每日最新資訊28at.com

同步調用是指在請求發起后,調用方一直阻塞等待調用處理完成的過程。在所提供的例子中,客戶端代碼 ClientCode 需要執行發送郵件的操作 sendEmail,這會觸發對 EmailService 的調用。N3V28資訊網——每日最新資訊28at.com

EmailService 將調用 SmtpEmailAdapter 類來處理請求,而該類會通過 SMTP 和 TCP 協議調用遠程服務,將請求發送到遠程服務器。遠程服務器收到消息后,會執行一系列操作,然后將郵件發送出去,并返回結果。N3V28資訊網——每日最新資訊28at.com

Adapter 接收到返回后,再將結果返回給 EmailService。EmailService 收到返回結果后,再將其返回給 ClientCode。在整個 sendEmail 過程中,ClientCode 會一直阻塞等待最終調用結果的返回,以確定操作是成功還是失敗。由于這個等待過程是阻塞的,因此被稱為同步調用。N3V28資訊網——每日最新資訊28at.com

02  異步調用N3V28資訊網——每日最新資訊28at.com

異步調用與同步調用相反。在異步調用的過程中,以發送郵件的例子為例,用戶 ClientCode 調用 EmailService 后,EmailService 將調用請求發送到消息隊列,然后立即返回。N3V28資訊網——每日最新資訊28at.com

ClientCode 在收到返回后可以繼續向下處理,而不會繼續阻塞等待。實際上,消息被發送到隊列后,尚未被處理。在后續的消息消費階段,比 EmailService 的返回可能會稍晚一些。有一個消息隊列消費者 QueueConsumer 從消息隊列中取出消息,然后將其發送給 SmtpAdapter,即調用 SmtpAdapter。N3V28資訊網——每日最新資訊28at.com

處理邏輯與同步調用類似,SmtpAdapter 通過 SMTP 通信協議將消息發送到遠程服務器,執行郵件發送操作,通過 RemoteServer 進行處理。處理完成后,收到返回結果后通知消息隊列 Queue。N3V28資訊網——每日最新資訊28at.com

在這個過程中,客戶端的調用(即應用程序的調用)和實際的業務邏輯(發送郵件的操作)是異步的。在郵件發送操作的處理過程中,客戶端代碼已經返回,它可以繼續執行自己的后續操作,而不需要等待郵件的發送完成,這就是異步調用。N3V28資訊網——每日最新資訊28at.com

圖片圖片N3V28資訊網——每日最新資訊28at.com

使用異步調用架構的主要手段之一是通過消息隊列來構建。以下是該架構的圖示:N3V28資訊網——每日最新資訊28at.com

  1. 消息生產者(Message Producer):負責產生消息并將其發送到消息隊列。消息生產者是異步的,它發送完消息后就可以繼續執行其他任務,而不必等待消息被處理。
  2. 消息隊列(Message Queue):用于存儲和傳遞消息。消息隊列作為中介,接收生產者發送的消息,并將其提供給消費者。常見的消息隊列系統包括 RabbitMQ、Apache Kafka、ActiveMQ 等。
  3. 消息消費者(Message Consumer):從消息隊列中獲取消息并進行相應的業務邏輯處理。與消息生產者一樣,消息消費者也是異步的,它可以在獲取消息后立即開始處理,而無需等待消息的產生。

使用消息隊列構建一個異步調用架構,你需要了解3種角色,一種是消息的生產者,一種是消息隊列,還有一種是消息的消費者。N3V28資訊網——每日最新資訊28at.com

消息的生產者是客戶端應用程序代碼的一部分,用來初始化異步調用處理流程。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

在基于消息隊列的處理中,生產者的職責非常少,它要做的就是創建一個合法的消息,并把這個消息發送到消息隊列中,由應用開發者決定生產者的代碼在哪里執行,什么時候發送消息。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

消息隊列是消息發送的目的地,也是消息發給消費者的一個緩沖區。實現消息隊列的方法有很多種,可以使用共享文件夾,也可以利用關系數據庫或者 NoSQL 系統。N3V28資訊網——每日最新資訊28at.com

然而,最主要且常見的做法是使用專門的分布式消息隊列服務器。這些消息隊列服務器被設計用于高效地存儲、傳遞和處理大量的異步消息。它們提供了可靠性、可伸縮性和高性能的特性,以滿足不同應用場景的需求。N3V28資訊網——每日最新資訊28at.com

一些流行的分布式消息隊列系統包括:N3V28資訊網——每日最新資訊28at.com

  1. RabbitMQ:一個開源的消息隊列系統,實現了高級消息隊列協議(AMQP)。
  2. Apache Kafka:分布式流處理平臺,具有高吞吐量和可持久性的特點。
  3. ActiveMQ:一個開源的消息和集成模式服務器,實現了Java Message Service(JMS)規范。
  4. Amazon SQS(Simple Queue Service):由亞馬遜提供的托管消息隊列服務。
  5. Redis:一種內存中數據結構存儲,也可用作消息代理。

N3V28資訊網——每日最新資訊28at.com

業務架構的第三個重要角色就是消息的消費者。消息的消費者從消息隊列中接受并處理消息,消息的消費者也是由應用開發者實現的,但是它是一個異步處理的組件。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

圖片圖片N3V28資訊網——每日最新資訊28at.com

消息的消費者不需要知道生產者存在,它只依賴消息隊列中的消息。消息的消費者通常部署在獨立的服務器上,和消息的生產者完全隔離,并且可以通過添加硬件的方式進行伸縮。N3V28資訊網——每日最新資訊28at.com

圖片圖片N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

點對點模型是一種消息傳遞模型,其中消費者和生產者只需知道消息隊列的名稱。在這種模型中,生產者將消息發送到消息隊列,而消息隊列的另一端有多個消費者競爭消費消息。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

圖片圖片N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

每個到達消息隊列的消息只會被路由到一個消費者,因此每個消費者看到的是全部消息的一個子集。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

在這張圖中,有多個消息生產者和多個消息消費者。多個生產者將消息發送到消息隊列,而多個消費者在消息隊列中競爭性地消費消息。N3V28資訊網——每日最新資訊28at.com

每條消息只會被一個消費者消費,每個消費者只會消費消息隊列中的一部分消息。這種點對點的模型適用于需要確保每條消息只被一個接收者處理的場景,以及在消息生產者和消費者之間實現解耦的需求。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

在發布訂閱模型中,消息可能被發送到不止一個消費者,生產者發送消息到一個主題,而不是隊列中。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

消息被發布到主題后,就會被克隆給每一個訂閱它的消費者,每個消費者接收一份消息復制到自己的私有隊列。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

消費者可以獨立于其他消費者使用自己訂閱的消息,消費者之間不會競爭消息。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

常用的分布式消息隊列都支持發布訂閱模型,也就是說消息的發布訂閱模型是分布式消息隊列的一個功能特性。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

圖片圖片N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

兩種消息傳遞模型通常會根據業務需求和特點進行選擇。點對點模型適用于一些耗時較長、邏輯相對獨立的業務場景,例如發送郵件。因為發送郵件是一個比較耗時的操作,應用程序對于郵件發送是否成功并不太關心,而且發送郵件的邏輯相對獨立。在這種情況下,應用程序只需要把郵件消息放入消息隊列中就可以立即返回。消費者則只需從消息隊列中取出郵件消息進行處理,通過遠程服務器將郵件發送出去。由于每封郵件只需要被發送一次,因此消息只需要被一個消費者消費即可。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

圖片圖片N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

相反,對于一些需要多個消費者協同處理的、涉及多個步驟的業務,例如新用戶注冊,通常會選擇發布訂閱模型。新用戶注冊成功后,可能需要發送激活郵件、歡迎短信,將用戶注冊數據寫入數據庫,并將新用戶信息發送給關聯企業的系統,以實現一次注冊即可登錄多個關聯產品的需求。在這種情況下,可以使用按主題發布的方式,即發布訂閱模型。新用戶注冊消息可以發布到一個主題,多個消費者可以訂閱這個主題,分別處理不同的任務,如發送郵件、發送短信、寫入數據庫等。這種模型允許多個消費者同時對同一消息進行處理,實現了業務邏輯的解耦和靈活性的提高。N3V28資訊網——每日最新資訊28at.com

N3V28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-55165-0.html同步架構和異步架構的區別,你知道嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 什么是塊元素、行元素以及行內塊元素

下一篇: 2023時間序列預測熱門研究點總結

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 石頭自清潔掃拖機器人G10S評測:多年黑科技集大成之作 懶人終極福音

    科技圈經常能看到一個詞叫“縫合怪”,用來形容那些把好多功能或者外觀結合在一起的產品,通常這樣的詞是貶義詞,但如果真的是產品縫合的好、縫合的實用的話,那它就成了中性詞,今
  • 7月安卓手機性價比榜:努比亞+紅魔兩款新機入榜

    7月登場的新機有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產品,而且努比亞和紅魔也一貫有著不錯的性價比,所以在本次的性價比榜單
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • 中國家電海外掘金正當時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態LT(ID:LingTai_LT)2023年,出海市場戰況空前,中國創業者在海外紛紛摩拳擦掌,以期能夠把中國的商業模式、創業理念、戰略打法輸出海外,他們依
  • 阿里瓴羊One推出背后,零售企業迎數字化新解

    作者:劉曠近年來隨著數字經濟的高速發展,各式各樣的SaaS應用服務更是層出不窮,但本質上SaaS大多局限于單一業務流層面,對用戶核心關切的增長問題等則沒有提供更好的解法。在Saa
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就“胡錫進炒股是否知道認真報道”展開討論。有
Top 主站蜘蛛池模板: 高邮市| 静海县| 陕西省| 定安县| 壶关县| 基隆市| 上虞市| 抚州市| 五家渠市| 田林县| 双牌县| 巴青县| 滦平县| 亳州市| 光山县| 湘阴县| 海晏县| 塘沽区| 吴桥县| 图片| 垣曲县| 文化| 门头沟区| 罗平县| 双流县| 古田县| 东台市| 内丘县| 华池县| 新化县| 牡丹江市| 新闻| 绥宁县| 台北县| 海门市| 德格县| 高尔夫| 保德县| 东海县| 安庆市| 长武县|