一.單體架構和微服務架構的比較前端
1.單體架構的優點和不足數據庫
單體架構的優點:在項目的初期便於開發、便於測試、便於部署後端
單體架構的不足:設計模式
什麼是橫向擴展和垂直擴展?緩存
1)橫向擴展
也叫 水平擴展
,用更多的節點支撐更大量的請求。 如成千上萬的螞蟻完成一項搬運工做性能優化
2)縱向擴展
又叫 垂直擴展
,擴展一個點的能力支撐更大的請求。如利用1我的的能力,如蜘蛛俠逼停火 服務器
2.什麼是微服務架構?網絡
微服務架構自己來源於互聯網的思路,所以組件對外發布的服務強調了採用HTTP Rest API的方式來進行。架構
將單體應用拆分紅多個高內聚低耦合的小型服務,獨立部署,能夠採用不一樣的語言以及存儲,每一個小型服務運行在獨立進程當中,服務間採用輕量級通訊機制,而非採用進程內調用的方式進行通訊。app
3.微服務架構的優點
2、微服務所要解決的主要問題
1.服務的拆分
2.數據一致性
4.服務治理—服務註冊與發現
5.服務網關
它的定義相似於面向對象設計模式中的Facade模式,它的存在就像是整個微服務架構系統的門面同樣,全部的外部客戶端訪問都須要通過它來進行調度和過濾。
由它來實現請求路由、負載均衡、校驗過濾等功能,以及與服務治理框架的結合,請求轉發的熔斷機制、服務的聚合等。
好比將多個服務的數據聚合在一塊兒返回給前端
6.可靠性
熔斷:是指服務不可用在必定的時間內達到必定的數量,自動關閉該服務的調用開關,直接調用降級邏輯,這樣下降資源耗盡的風險
微服務整個系統都須要在咱們的監控體系中,包括註冊中心的監控、 服務進程的監控、流量的監控、日誌的監控,狀態的監控等
好比說在電商app中,咱們沒法進行下單操做,在分佈式服務架構中 ,日誌是散落在多個服務上的,咱們若是說登陸每臺服務器進行檢索是很是低效的,這就須要咱們進行日誌格式的標準化,並利用必定的手段將日誌聚合起來進行檢索查詢,咱們須要將這些檢索查詢的組件放到共享庫當中,或者代碼腳手架進行提供,以方便咱們和業務代碼進行解耦。
在微服務場景中,一個客戶端發起的請求要通過多個服務的調用,咱們不知道該請求經歷哪些服務的調用,調用哪些服務出現了問題,每一個服務的輸入輸出是什麼,這都給咱們定位問題帶來的困難;除此以外若是一個請求耗時挺長,咱們不知道哪一個服務耗時最長,這就給咱們性能優化帶來了困難。隨着架構的演進,咱們須要知道服務之間的依賴關係,這就須要咱們的分佈式追蹤。
3、SOA和微服務的比較
SOA:ESB、SOAP
微服務:輕量級MQ、REST、RPC
SOA:共享數據庫
微服務:一服務一數據庫
SOA:服務粒度比較粗,多個單體的組合
微服務:粒度更小的服務