逃離單體地獄
FTGO單體架構
???????作者用國外FTGO公司(一家做線餐飲外賣)的應用程序舉例,闡述了單體架構的優(yōu)缺點。FTGO應用架構如下:
應用程序是單體應用,具有六邊形架構,最內側是業(yè)務邏輯,包含訂單管理、配送管理、用戶管理等。業(yè)務邏輯外邊是實現(xiàn)用戶界面的適配器和與外部系統(tǒng)對接的適配器。外部系統(tǒng)如:消息服務、郵件服務、支付服務、數(shù)據(jù)庫。通過這些適配器,業(yè)務邏輯可以訪問數(shù)據(jù)庫,調用外部服務。
單體架構的好處
- 應用開發(fā)簡單:只需要構建這一個應用就可以了。
- 易于大規(guī)模的更改:可以更改代碼和數(shù)據(jù)庫模式,然后構建和部署。
- 測試相對簡單直觀:只有這一個應用,測接口或者使用Selenium就行了,Selenium是一個可以控制瀏覽器的工具。
- 部署簡單:部署時開發(fā)者唯一要做的把WAR文件復制到安裝了tomcat服務器上。
- 橫向擴展不費吹會之力:可以運行多個實例,有一個負載均衡器進行調度。這里提一下什么是橫向擴展和縱向擴展:
橫向擴展和縱向擴展都是一種架構理念。
橫向擴展是向環(huán)境中添加機器或節(jié)點,如給服務新增一臺機器/節(jié)點,給mysql新增個從庫等,各個節(jié)點共同完成。眾人拾柴火焰高
縱向發(fā)展是提高單個節(jié)點的處理能力,如給mysql增加內存、提升機器cpu性能等。注重個人發(fā)展,個人能力頂呱呱
單體架構的壞處
- 過度復雜性嚇退開發(fā)者:系統(tǒng)龐大復雜,開發(fā)者很難梳理出其中邏輯,更改或新增功能時,困難又耗時,這種情況隨著每一次開發(fā)會越來越糟糕,有點像業(yè)內說的“堆shi山”,哈哈哈。
- 開發(fā)速度緩慢:系統(tǒng)太龐大,構建、啟動、測試、部署花費的時間會越來越長,嚴重影響開發(fā)效率。
- 難以擴展:這里的擴展是指系統(tǒng)提供的功能越多,就需要越多的資源。如內存、cpu、gpu。一般的服務器滿足不了,得需要高性能的服務器。
- 交付不可靠:一個模塊出了問題,整個服務就可能故障或宕機。容易出問題的其中一個原因就是因為系統(tǒng)過于龐大而無法進行全面的測試。
拯救之道:微服務架構
微服務概念
Netfix著名架構師將微服務定義為面向服務的架構,由松耦合和具有邊界上下文多的元素組成。作者描述了一個三維可擴展模型來更好的說明
X軸:復制實例,并實現(xiàn)負載均衡,提高吞吐量和可用性。沒啥好說的。屬于上邊提到的橫向擴展了。
Y軸:根據(jù)功能把應用拆分成服務。降低應用復雜性。
Z軸:根據(jù)請求的屬性就行路由請求,每個實例負責數(shù)據(jù)的一部分子集。如查詢用戶信息,根據(jù)useId將請求路由到對應實例。
微服務的一個關鍵特性就是每個服務之間都是松耦合的,僅通過API進行通信,實現(xiàn)松耦合的方式之一就是每個服務都有自己的私有數(shù)據(jù)庫
FTGO微服務架構
將單體應用拆成訂單管理、配送管理、餐館管理、用戶管理等服務。每個服務和API都有著其清晰的定義,有著獨立數(shù)據(jù)庫,也可以獨立開發(fā)、部署、擴展文章來源:http://www.zghlxwxcb.cn/news/detail-699995.html
微服務好處
- 大型的復雜應用程序可以持續(xù)交付和持續(xù)部署,是微服務最大好處
- 每個服務相對較小,易維護、可獨立擴展、部署、容錯性高,可實現(xiàn)團隊自治。巴拉巴拉…
微服務弊端
微服務并不是一種銀彈(類似一種特效武器),不是說用微服務就可以解決軟件中所有問題了。文章來源地址http://www.zghlxwxcb.cn/news/detail-699995.html
- 服務拆分和定義是一個挑戰(zhàn)。如何拆分和定義確實需要考慮好。不然可能拆分成一組耦合度很高的微服務架構。
- 分布式系統(tǒng)帶來的復雜性。一個服務變成了多個了,那么服務之間就需要通信了。這比一個服務調用本地方法要復雜,需要考慮遠程服務不可用或高延遲情況,做故障處理。開發(fā)的時候要打開多個應用了,測試的時候之前要部署一個應用,現(xiàn)在可能要部署多個了。如果應用不屬于同一個團隊,部署錢要和其他團隊溝通好。
- 什么階段使用微服務?剛開始開發(fā)一個項目,需要快速迭代的時候,精心設計分布式架構會減緩開發(fā)速度。當問題復雜的時候,就需要將應用程序分解成一組服務了。但如何將重構復雜的應用程序,也是一個問題。
到了這里,關于《微服務架構設計模式》第一章的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!