微服務相比傳統服務的優勢

這是一道面試題,咱們先來分析這道題考察的是什么。

如果分析面試官主要考察以下幾個方面:

  1. 技術理解深度

  • 你是否清楚微服務架構(Microservices)和傳統單體架構(Monolithic)的本質區別。

  • 能否從設計理念、技術實現、適用場景等維度對比兩者。

  • 實際經驗與場景化思考

    • 是否在項目中應用過微服務,能否結合案例說明優勢(如提升開發效率、解決擴展性問題等)。

    • 能否辯證看待優勢(例如微服務并非銀子彈,會帶來復雜度上升)。

  • 系統設計能力

    • 是否理解架構選擇背后的權衡(Trade-offs),例如團隊規模、業務迭代速度對架構的影響。

  • 技術趨勢認知

    • 是否關注云原生、DevOps 等與微服務相關的技術生態(如 Kubernetes、Service Mesh)。

    那在回答這道題的時候就需要進行適當的擴展體現這部分的能力。但是同時要注意避免面試官覺得你跑題,所以在介紹每個優勢之前可以先做一個總結性的:這個問題我會結合對技術的理解、實際經驗、技術選型決策與技術趨勢幾個方面來說。

    ?高內聚、低耦合?

    微服務架構將一個大型應用拆分成多個小型、自治的服務,每個服務都圍繞特定的業務功能進行構建,具有高度的內聚性。各個微服務之間通過輕量級的通信機制(如RESTful API)進行交互,耦合度極低。這種特性使得每個微服務都可以獨立開發、測試、部署和運維,極大地提高了開發效率?。

    在多人維護單體應用的時候,可能很多人都遇到過代碼沖突的困境。代碼沖突本質上是耦合度高的外在表現。之前一個項目中由于服務還沒有做拆分,還要一個人兼顧好幾個項目的開發,多分支切換。導致每次發布生產前要花半天的時間做沖突合并。

    有次合并后有個地方沒有沖突,但是代碼邏輯是老的(和提交順序有關)。被指出來之后人家說因為沒有沖突,就不是人家的問題。這種不對結果負責的態度也就只能給個眼神過去。(實際面試時注意這種話是不能說的哦)

    但是這種代碼一旦上線造成后果,那就面臨損失,服務拆分是合理的解決方案。

    ?獨立部署和靈活擴展?

    微服務是獨立的應用,可以單獨上線或更新,不需要停掉整個系統。這種設計使得部署更靈活,降低了發布風險,并且可以根據流量壓力獨立擴展,只對流量大的服務增加資源,而不用浪費資源擴展整個系統?。

    試想你有一個服務,原本上面的CURD接口有按照主鍵的增刪改查(稱為A類)和批量查詢(稱為B類)兩部分。A類可用性要求4個9。B類可用性要求2個9。這種情況下A類和B類獨立部署A類可能要求三地六中心部署,B類其實只要部署在1個機房里就滿足要求了。A類是核心業務,可以設置彈性伸縮策略,比如CPU大于80%時自動擴容,CPU持續1分鐘小于60%時自動縮容來保證可用性。而對于B類業務設置彈性伸縮策略會增加成本,必要性也不是很大。

    技術多樣性?

    每個服務可以選擇最適合的技術棧。例如,訂單服務可以用Java,AI服務可以用Python。這種靈活性支持技術創新,團隊可以嘗試使用新技術,而不必擔心影響其他服務?。

    ?按業務能力劃分服務與組織團隊?

    微服務架構將應用按業務能力劃分為不同的服務,每個服務要求在對應業務領域的全棧軟件實現。這種組織方式跨功能,包含實現業務所需的全面技能,有助于提高開發效率和團隊協作?。

    ?服務即產品?

    傳統的應用開發是基于項目模式的,而微服務架構將每個服務視為一個獨立的產品。這種模式使得服務的開發和維護更加靈活,能夠更快地響應市場變化?。

    下面的這個案例,如果不是采用微服務的架構,這種演進是很難做到的:

    我們團隊負責的有一個叫基礎數據的服務,這個服務連接了全公司唯一一個六機房平等的數據庫,六機房平等是指雖然寫入數據在同一個機房,但數據可以六機房平等的讀。公司的其他團隊也想使用這個數據庫,所以開始時我們承接了很多其他團隊的個性化需求,導致了團隊成員為了支撐需求,疲于奔命。接到的需求在技術上很簡單,都是一些后臺操作數據,延遲要求不高的場景,CURD操作數據庫,技術含量低,維護人員平均半年就會轉崗或離職。我來了之后,對數據模型進行了抽象,將原本要開發成一張張數據表的,統一在一張數據表里,用json格式來存儲,我們提供SDK給用戶使用,里面提供了json和POJO的轉換等工具盡量符合之前的使用習慣。用戶不用再等我們開發,而是可以在后臺配置出他們需要的數據表定義,進行數據操作。這種方式,第一我們團隊無需開發支持需求快,第二,需求團隊開發量也減少了,因為本來是他們需要自己做后臺數據管理的界面。但難點是用戶不接受。原因首先是和原來的使用習慣不同,第二是他們擔心穩定性問題。統一數據表,數據上不隔離,還要使用我們的SDK。我當時做了很多的宣講,關鍵代碼挨行的給用戶解釋,開始時也只接入了一些非核心的系統。我們慢慢把系統做好做強,直到我們自己的核心系統也接入,大家才開始慢慢接受。因為我們的核心系統是關鍵的系統,這個說服力比較強。但還有一個關鍵難點,就是系統的定位,開始時想把它定位為配置中心,因為在功能和管理上和攜程阿波羅配置中心很像,但是領導對中心這個詞很敏感,因為中心意味著出了問題影響范圍大。后來經過仔細梳理思考,這個服務對數據做了嚴格的管控,包括標準的審核流程、嚴格數據準入、灰度生效、數據變更過程追蹤、一鍵回滾、定時生效、臨時生效等。并且數據可以不存我們的數據庫,外接數據源。所以最終定位為數據變更管控系統。因為業界代碼變更管控的產品相對成熟,數據變更管控的產品非常少,我們也在持續的完善它,希望能將它打造成業界標桿的產品。

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

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

相關文章

【KWDB 創作者計劃】_深度學習篇---向量指令集

文章目錄 前言一、加速原理數據級并行(DLP)計算密度提升減少指令開銷內存帶寬優化隱藏內存延遲二、關鍵實現技術1. 手動向量化(Intrinsics)優勢挑戰2. 編譯器自動向量化限制3. BLAS/LAPACK庫優化4. 框架級優化三、典型應用場景矩陣運算卷積優化歸一化/激活函數嵌入層(Embe…

跳躍游戲(每日一題-中等)

題解:定義一個變量,用來存儲可以到達的最遠位置。初始化為0。 然后對數組進行遍歷,遍歷開始的時候,先判斷當前這個位置和最遠位置誰大,如果最遠位置比較大,那么就說明當前這個位置也能達到,就看…

第七篇:linux之基本權限、進程管理、系統服務

第七篇:linux之基本權限、進程管理、系統服務 文章目錄 第七篇:linux之基本權限、進程管理、系統服務一、基本權限1、什么是權限?2、為什么要有權限?3、權限與用戶之間的關系?4、權限對應的數字含義5、使用chmod設定權…

音視頻小白系統入門課-2

本系列筆記為博主學習李超老師課程的課堂筆記,僅供參閱 往期課程筆記傳送門: 音視頻小白系統入門筆記-0音視頻小白系統入門筆記-1 課程實踐代碼倉庫:傳送門 音視頻編解碼 可以通過ffmpeg -f avfoundation -list_devices true -i "&…

外賣“三國殺”開新局,餓了么已手握AI牌

【潮汐商業評論/原創】 01 新戰役,新變量 外賣行業,又迎來了新一輪戰役。 前有京東宣布斥資百億進軍外賣市場,后有美團宣布發布即時零售品牌“美團閃購”。雙方在隔空秀肌肉、彰顯自身實力的同時,行業巨頭圍繞本地生活服務的攻…

HAProxy 和 Keepalived 區別

HAProxy 和 Keepalived 是在構建高可用和可擴展Web服務時常用的兩個開源軟件,但它們的核心功能和目的有顯著區別。 簡單來說: HAProxy: 主要是一個 負載均衡器 (Load Balancer) 和 反向代理 (Reverse Proxy)。它負責將客戶端的請求智能地分發到后端的多…

YOLO算法的革命性升級:深度解析Repulsion損失函數在目標檢測中的創新應用

## 一、目標檢測的痛點與YOLO的局限性 在自動駕駛、智能監控等復雜場景中,目標檢測算法常面臨致命挑戰——遮擋問題。當多個物體相互遮擋時,傳統檢測器容易出現漏檢、誤檢現象,YOLO系列算法盡管在速度與精度上表現優異,但在處理密集遮擋目標時仍存在明顯短板。 ### 1.1 遮…

第一篇:Django簡介

第一篇:Django簡介 文章目錄 第一篇:Django簡介一、純手寫一個簡易版的web框架1、軟件開發架構2、HTTP協議3、簡易的socket服務端4、wsgiref模塊5、動靜態網頁6、后端獲取當前時間展示到html頁面上7、字典數據傳給html文件8、數據從數據庫中獲取的展示到…

【筆記】CentOS7部署K8S集群

一、初始化(所有節點機器都要執行) 1. 關閉firewall防火墻 systemctl disable firewalld.service systemctl stop firewalld.service2. 關閉SELinux 臨時關閉 setenforce 0永久關閉 vim /etc/selinux/config SELINUXenforcing 改成 SELINUXdisable…

Ethan獨立開發產品日報 | 2025-04-22

1. Agent Simulate 用數千個數字人來測試你的人工智能應用。 Agent Simulate 讓你在發布之前,能夠在一個安全的環境中模擬和測試大型語言模型(LLM)代理。它幫助你調試行為、加快迭代速度,并降低生產風險,專為代理開發…

Photoshop安裝與配置--簡單攻略版

下載地址:Photoshop軟件工具下載 安裝完成后,即可運行Photoshop.exe;打開工具頁面后,按照下面簡單配置即可 1.編輯-》首選項-》常規 或者直接快捷鍵CtrlK 暫存盤:一定要設置為非C盤 2.性能 3.文件處理 以上配置比較基礎&#xf…

新手村:正則化

機器學習-正則化方法 新手村:正則化 什么是正則化? 正則化(Regularization) 是一種用于防止機器學習模型 過擬合(Overfitting)的技術。它通過在模型的 損失函數 中添加一個 懲罰項(Penalty Ter…

C語言 ——— 分支循環語句

目錄 分支循環語句 單分支 多分支 switch 分支語句 牛刀小試 判斷一個數是否是奇數 輸出 1-100之間 的奇數 計算 n 的階乘 計算 1! 2! 3! ... n! 在一個有序數組中查找具體的某一個數字 打印 100-200 之間的素數 求兩個整數的最大公約數 getchar函數 和 putc…

Element UI、Element Plus 里的表單驗證的required必填的屬性不能動態響應?

一 問題背景 想要實現: 新增/修改對話框中(同一個),修改時“備注”字段非必填,新增時"備注"字段必填 結果發現直接寫不生效-初始化一次性 edit: [{ required: true, message: "請輸入備注", trigger: "blur" }…

秀丸編輯器 使用技巧

參考資料 第II部?知っていると便利な秀丸の機能 検索テキストファイルの16進表示について秀丸エディタヘルプ目次秀丸エディタQ&A集(第9.6版)(HTML 形式)テンプレート(Ver9.43対応版) 目錄 零…

【期末復習-考試】軟件質量測試與保考試題庫(選擇題+填空題)

軟件質量測試與保證考試題庫(選擇題 填空題) 一、軟件測試基礎理論(200 題) (一)選擇題(100 題) 軟件測試的根本目的是( 發現軟件中的缺陷)A. 證明軟件無…

數據結構與算法學習筆記(Acwing提高課)----動態規劃·數字三角形

數據結構與算法學習筆記----動態規劃數字三角形 author: 明月清了個風 first publish time: 2025.4.23 ps??終于開始提高課的題啦,借的人家的號看,以后給y總補票叭,提高課的題比之前的多很多啊哈哈哈哈,基本上每種題型都對應了…

阿里巴巴安全工程師面試題:BAS

阿里巴巴新發布了針對應屆生的安全工程師招聘崗位,崗位要求: 研究新型前沿攻防技術,驗證正向和防御安全產品能力的有效性,挖掘其規則或引擎漏洞,并利用BAS(Breach and Attack Simulation)建立自…

【正則表達式】正則表達式使用總結

正則表達式除了匹配普通字符外,還可以匹配特殊字符,這些特殊字符被稱為“元字符”。? 特殊字符(元字符) ?限定符?:用于指定正則表達式中某個組件的出現次數。常見的限定符包括: *:0次或多次 +:1次或多次 ?:0次或1次 {n}:恰好n次…

數據庫對象與權限管理-Oracle數據字典詳解

1. 數據字典概念講解 Oracle數據字典是數據庫的核心組件,它存儲了關于數據庫結構、用戶信息、權限設置和系統性能等重要的元數據信息。這些信息對于數據庫的日常管理和維護至關重要。數據字典在數據庫創建時自動生成,并隨著數據庫的運行不斷更新。 數據…