尚未施工完成html
微服務架構是一種架構概念,旨在經過將功能分解到各個離散的服務中以實現對解決方案的解耦。它的主要做用是將功能分解到離散的各個服務當中,從而下降系統的耦合性,並提供更加靈活的服務支持。git
說到微服務,就要說說這個老頭,他是一個英國人,叫作Martin Fowler,後面移居了美國。 雖然他不是微服務概念的最先提出者,不過不少人都是經過他和James Lewis的文章瞭解微服務的概念。github
這是他2014年發佈的文章 martinfowler.com/articles/mi…spring
而微服務最先的提出是2012年,是這個傢伙說的,就是上面和Martin Flower合做出了文章的James Lewis。 James Lewis是ThoughtWorks的首席顧問,也是技術顧問委員會的成員。設計模式
俺尋思這人也是個神人,爲了寫這篇文章,就用谷歌和維基搜了一下,誰知道他這麼沒有牌面,只有推特以及上面那篇文章找到一個頭像及簡介。緩存
在傳統的開發模式中,咱們將全部功能打在一個 WAR 包內,基於三層架構和 MVC 來對應用進行解耦,並部署在一個 JavaEE 容器中。咱們能夠方便的對其進行集中式管理,與微服務架構相比,由於全部功能都在本地,因此功能間沒有通訊的問題。服務器
咱們能夠看出,微服務架構經過將複雜單體應用進行細粒度的拆分,能夠分別部署成不一樣的服務。再將功能模塊解耦後,不只能夠下降單獨服務器的壓力,由於都是獨立拆分出來的服務,也能實現獨立部署獨立開發。網絡
這樣的好處顯而易見,拆分後的服務交給不一樣團隊獨立維護,進行分佈式管理,彼此間不須要太多的顧忌,這樣能讓咱們實現更方便的代碼維護工做,同時開發時放心使用新的技術,而沒必要擔憂由於一個服務的故障使整個應用沒法使用。架構
優勢是架構簡單,擴展靈活,只對服務註冊器依賴。缺點是客戶端要維護全部調用服務的地址,有技術難度,通常大公司都有成熟的內部框架支持,好比 Dubbo 負載均衡
優勢是簡單,全部服務對於前臺調用方透明,通常在小公司在雲服務上部署的應用採用的比較多。
前面提到,Monolithic 方式開發一個很大的風險是,把全部雞蛋放在一個籃子裏,一榮俱榮,一損俱損。而分佈式最大的特性就是網絡是不可靠的。經過微服務拆分能下降這個風險,不過若是沒有特別的保障,結局確定是噩夢。因此當咱們的系統是由一系列的服務調用鏈組成的時候,咱們必須確保任一環節出問題都不至於影響總體鏈路。相應的手段有不少: