微服務知識——4大主流微服務架構方案

文章目錄

  • 1、微服務聚合模式
  • 2、微服務共享模式
  • 3、微服務代理模式
  • 4、微服務異步消息模式

微服務是大型架構的必經之路,也是大廠重點考察對象,下面我就重點詳解4大主流微服務架構方案。

1、微服務聚合模式

微服務聚合設計模式,解決了如何從多個微服務中聚合數據,以便客戶端可以獲得所需的完整信息,而不需要多次請求不同的服務。

此類模式主要用于簡化客戶端的操作,減少與多個微服務交互的復雜性。

如下圖所示:
在這里插入圖片描述
通過構建一個聚合服務(又稱聚合層或聚合微服務),將多個微服務的響應數據進行聚合,形成一個統一的結果返回給客戶端。

聚合服務,通過調用多個微服務的 API,收集它們的響應并進行整合。

優點:

  • 簡化客戶端請求:客戶端只需調用聚合服務,不需要直接與多個微服務交互。
  • 減少服務間依賴:聚合服務可以減輕微服務之間的耦合度,服務間可以獨立變化。

缺點:

  • 聚合服務可能成為性能瓶頸,需特別關注聚合服務的可擴展性。
  • 如果聚合的服務很多,可能需要額外的處理來確保高效聚合。

2、微服務共享模式

微服務提倡的是:每個服務擁有自己的獨立數據庫(比如:數據庫獨立性原則),以確保服務之間的高內聚性、和低耦合性。

然而,在某些情況下,由于業務需求或技術限制,多個微服務可能需要共享數據。

如下圖所示:
在這里插入圖片描述
實際上在微服務架構的初期階段,很多企業可能會采用 共享數據庫 模式,來簡化系統的開發和維護,尤其是在微服務遷移的過渡階段。

這樣做雖然簡化了架構,但卻違反了微服務的原則,因為它導致了微服務之間的緊密耦合。

因此,“共享數據庫”模式通常被視為“過渡性”或“反模式”,不是長期推薦的設計。

3、微服務代理模式

微服務代理是一種中間層,用于處理服務之間的通信。

如下圖所示:
在這里插入圖片描述
在這種模式下,代理服務充當了其他微服務的代理,接收客戶端的請求并將其轉發給后端服務進行處理。

在 Sidecar 代理模式 中,Sidecar 是與每個微服務實例配對部署的。
每個微服務實例旁邊都有一個獨立的代理進程,這些代理共同組成一個統一的服務網格。

代理負責捕獲并管理服務的入站和出站流量。代理通常會與服務網格的 控制平面 交互,獲取流量路由、負載均衡、訪問策略等配置。

優點:

  • 解耦:客戶端和微服務之間的交互通過代理服務來處理。
  • 統一入口:所有請求都經過代理,易于管理、監控和控制。

缺點:

  • 代理服務需要額外的資源來處理請求,可能成為性能瓶頸。

4、微服務異步消息模式

異步消息設計模式,在微服務架構中非常重要,它允許微服務通過消息隊列、事件流等方式進行松散耦合的通信。

如下圖所示:
在這里插入圖片描述
微服務通過發布事件來通知其他服務發生了某個狀態變化。事件通常是業務變化或數據變化的通知,例如:訂單創建、支付成功…等。

優點:

  • 服務解耦:服務之間不需要直接調用,只有事件通知機制。
  • 提高吞吐量:通過異步處理,減少了服務的同步依賴。

缺點:

  • 事件的順序和一致性需要額外考慮,容易出現“事件丟失”或“消息重復消費”的問題。

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

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

相關文章

【HTML+CSS】使用HTML與后端技術連接數據庫

目錄 一、概述 1.1 HTML前端 1.2 后端技術 1.3 數據庫 二、HTML表單示例 三、PHP后端示例 3.1 連接數據庫 3.2 接收數據并插入數據庫 四、安全性 4.1 防止SQL注入 4.2 數據驗證與清洗 五、優化 5.1 索引優化 5.2 查詢優化 六、現代Web開發中的最佳實踐 6.1 使用…

T-SQL語言的數據庫編程

T-SQL語言的數據庫編程 1. 引言 在信息化迅速發展的今天,數據庫已經成為數據管理和使用的重要工具。其中,T-SQL(Transact-SQL)作為微軟SQL Server的擴展SQL語言,不僅用于數據查詢和管理,還能夠進行復雜的…

通信協議—WebSocket

一、WebSocket編程概念 1.1 什么是WebSocket WebSocket 是一種全雙工通信協議,允許在客戶端(通常是瀏覽器)和服務器之間建立持久連接,以實現實時的雙向通信。它是 HTML5 標準的一部分,相比傳統的 HTTP 請求&#xff…

cadence筆記--畫PMU6050原理圖和封裝

簡介 本文主要介紹使用Cadence自己畫一個PMU6050的原理圖PCB的實際用例,Cadence使用的是24.1版本。 原理圖 首先獲取PMU6050引腳參數,使用立創商城查詢PMU6050型號,點擊數據手冊如下圖所示: 如下圖所示,左邊是原理圖&…

CSS3 3D 轉換介紹

CSS3 中的 3D 轉換提供了一種在二維屏幕上呈現三維效果的方式,主要包括translate3d、rotate3d、scale3d等轉換函數,下面來詳細介紹: 1. 3D 轉換的基本概念 坐標系 在 CSS3 的 3D 空間中,使用的是右手坐標系。X 軸是水平方向&…

Text2SQL 智能報表方案介紹

0 背景 Text2SQL智能報表方案旨在通過自然語言處理(NLP)技術,使用戶能夠以自然語言的形式提出問題,并自動生成相應的SQL查詢,從而獲取所需的數據報表,用戶可根據得到結果展示分析從而為結論提供支撐&#…

FFmpeg音視頻采集

文章目錄 音視頻采集音頻采集獲取設備信息錄制麥克風錄制聲卡 視頻采集攝像機畫面采集 音視頻采集 DirectShow(簡稱DShow)是一個Windows平臺上的流媒體框架,提供了高質量的多媒體流采集和回放功能,它支持多種多樣的媒體文件格式&…

【漫話機器學習系列】056.F1值(F1 score)

F1值(F1 Score) 定義 F1值是機器學習中一種用于評估模型性能的指標,特別適合用于 不平衡數據集 的分類任務。它是 精確率(Precision) 和 召回率(Recall) 的調和平均值。通過綜合考慮精確率和召…

Mac安裝Homebrew

目錄 安裝修改homeBrew源常用命令安裝卸載軟件升級軟件相關清理相關 安裝 官網 https://brew.sh/不推薦官網安裝方式(很慢很慢或者安裝失敗聯網失敗) 檢測是否安裝homebrewbrew -v執行安裝命令 蘋果電腦 常規安裝腳本 (推薦 完全體 幾分鐘就…

在K8S中,如果后端NFS存儲的IP發送變化如何解決?

在Kubernetes中,如果后端NFS存儲的IP地址發生了變化,您需要更新與之相關的Peristent Volume(PV)或Persistent Volume Claim(PVC)以及StorageClass中關于NFS服務器IP的配置信息,確保K8S集群內的Pod能夠正確連接到新的NFS存儲位置。解決方案如下…

一文大白話講清楚webpack基本使用——9——預加載之prefetch和preload以及webpackChunkName的使用

文章目錄 一文大白話講清楚webpack基本使用——9——預加載之prefetch和preload1. 建議按文章順序從頭看,一看到底,豁然開朗2. preload和prefetch的區別2. prefetch的使用3. preload的使用4. webpackChunkName 一文大白話講清楚webpack基本使用——9——…

【Elasticsearch 】 聚合分析:桶聚合

🧑 博主簡介:CSDN博客專家,歷代文學網(PC端可以訪問:https://literature.sinhy.com/#/?__c1000,移動端可微信小程序搜索“歷代文學”)總架構師,15年工作經驗,精通Java編…

tensorflow源碼編譯在C++環境使用

https://tensorflow.google.cn/install/source?hlzh-cn查看tensorflow和其他需要下載軟件對應的版本,最好一模一樣 1、下載TensorFlow源碼 https://github.com/tensorflow/tensorflow 2、安裝編譯protobuf(3.9.2) protobuf版本要和TensorFlo…

P8738 [藍橋杯 2020 國 C] 天干地支

兩種方法 #include<bits/stdc.h> using namespace std;int main(){int year;cin>>year;string tg[10] {"geng", "xin", "ren", "gui","jia", "yi", "bing", "ding", "wu&…

Python 常用運維模塊之OS模塊篇

Python 常用運維模塊之OS模塊篇 OS 模塊獲取當前工作目錄更改當前工作目錄返回當前目錄路徑返回上一級目錄路徑遞歸生成目錄路徑刪除目錄創建目錄刪除目錄列出特定目錄下文件和子目錄刪除某個特定文件重命名某個文件獲取某個文件/目錄的信息輸出目錄路徑分隔符輸出文件行終止符…

uniapps使用HTML5的io模塊拷貝文件目錄

最近在集成sqlite到uniapp的過程中&#xff0c;因為要將sqlite數據庫預加載&#xff0c;所以需要使用HTML5的plus.io模塊。使用過程中遇到了許多問題&#xff0c;比如文件路徑總是解析不到等。尤其是應用私有文檔目錄’_doc’。 根據官方文檔&#xff1a; 為了安全管理應用的…

使用 F12 查看 Network 及數據格式

在瀏覽器中&#xff0c;F12 開發者工具的 “Network” 面板是用于查看網頁在加載過程中發起的所有網絡請求&#xff0c;包括 API 請求&#xff0c;以及查看這些請求的詳細信息和響應數據的。以下以常見的 Chrome 瀏覽器為例&#xff0c;介紹如何使用 F12 控制臺查看 Network 里…

Redis 2.6.12在Win10系統上的安裝教程

諸神緘默不語-個人CSDN博文目錄 這個版本的安裝包是跟同事要的&#xff0c;em&#xff0c;如果真的需要這個版本的話可以跟我要&#xff1a; 解壓后雙擊第一個bat文件&#xff0c;即可掛起Redis服務&#xff1a;

分布式數據庫中間件(DDM)的使用場景

華為云分布式數據庫中間件&#xff08;DDM&#xff09;是一款專注于解決數據庫分布式擴展問題的中間件服務&#xff0c;突破了傳統數據庫的容量和性能瓶頸&#xff0c;能夠實現海量數據的高并發訪問。以下是九河云總結的DDM的典型使用場景&#xff1a; 1. 互聯網應用 在電商、…

Ubuntu16.04 安裝OpenCV4.5.4 避坑

Ubuntu16.04 安裝C版OpenCV4.5.4 Ubuntu16.04 VSCode下cmakeclanglldb調試c 文章目錄 Ubuntu16.04 安裝C版OpenCV4.5.41. 下載Opencv壓縮包2. 安裝Opencv-4.5.43. 配置OpenCV的編譯環境4.測試是否安裝成功 1. 下載Opencv壓縮包 下載Opencv壓縮包&#xff0c;選擇source版本。…