微服务架构的优势与不足(二)
微處理架構(gòu)——處理復(fù)雜事物
許多公司,比如Amazon、eBay和NetFlix,通過采用微處理結(jié)構(gòu)模式解決了上述問題。其思路不是開發(fā)一個巨大的單體式的應(yīng)用,而是將應(yīng)用分解為小的、互相連接的微服務(wù)。
一個微服務(wù)一般完成某個特定的功能,比如下單管理、客戶管理等等。每一個微服務(wù)都是微型六角形應(yīng)用,都有自己的業(yè)務(wù)邏輯和適配器。一些微服務(wù)還 會發(fā)布API給其它微服務(wù)和應(yīng)用客戶端使用。其它微服務(wù)完成一個Web UI,運行時,每一個實例可能是一個云VM或者是Docker容器。
比如,一個前面描述系統(tǒng)可能的分解如下:
每一個應(yīng)用功能區(qū)都使用微服務(wù)完成,另外,Web應(yīng)用會被拆分成一系列簡單的Web應(yīng)用(比如一個對乘客,一個對出租車駕駛員)。這樣的拆分對于不同用戶、設(shè)備和特殊應(yīng)用場景部署都更容易。
每一個后臺服務(wù)開放一個REST API,許多服務(wù)本身也采用了其它服務(wù)提供的API。比如,駕駛員管理使用了告知駕駛員一個潛在需求的通知服務(wù)。UI服務(wù)激活其它服務(wù)來更新Web頁面。所有服務(wù)都是采用異步的,基于消息的通訊。微服務(wù)內(nèi)部機(jī)制將會在后續(xù)系列中討論。
一些REST API也對乘客和駕駛員采用的移動應(yīng)用開放。這些應(yīng)用并不直接訪問后臺服務(wù),而是通過API Gateway來傳遞中間消息。API Gateway負(fù)責(zé)負(fù)載均衡、緩存、訪問控制、API 計費監(jiān)控等等任務(wù),可以通過NGINX方便實現(xiàn),后續(xù)文章將會介紹到API Gateway。
微服務(wù)架構(gòu)模式在上圖中對應(yīng)于代表可擴(kuò)展Scale Cube的Y軸,這是一個在《The Art of Scalability》書中描述過的三維擴(kuò)展模型。另外兩個可擴(kuò)展軸,X軸由負(fù)載均衡器后端運行的多個應(yīng)用副本組成,Z軸是將需求路由到相關(guān)服務(wù)。
應(yīng)用基本可以用以上三個維度來表示,Y軸代表將應(yīng)用分解為微服務(wù)。運行時,X軸代表運行多個隱藏在負(fù)載均衡器之后的實例,提供吞吐能力。一些應(yīng)用可能還是用Z軸將服務(wù)分區(qū)。下面的圖演示行程管理服務(wù)如何部署在運行于AWS EC2上的Docker上。
運行時,行程管理服務(wù)由多個服務(wù)實例構(gòu)成。每一個服務(wù)實例都是一個Docker容器。為了保證高可用,這些容器一般都運行在多個云VM上。服務(wù)實例前是 一層諸如NGINX的負(fù)載均衡器,他們負(fù)責(zé)在各個實例間分發(fā)請求。負(fù)載均衡器也同時處理其它請求,例如緩存、權(quán)限控制、API統(tǒng)計和監(jiān)控。
這種微服務(wù)架構(gòu)模式深刻影響了應(yīng)用和數(shù)據(jù)庫之間的關(guān)系,不像傳統(tǒng)多個服務(wù)共享一個數(shù)據(jù)庫,微服務(wù)架構(gòu)每個服務(wù)都有自己的數(shù)據(jù)庫。另外,這種思路也影響到了企業(yè)級數(shù)據(jù)模式。同時,這種模式意味著多份數(shù)據(jù),但是,如果你想獲得微服務(wù)帶來的好處,每個服務(wù)獨有一個數(shù)據(jù)庫是必須的,因為這種架構(gòu)需要這種松耦合。下面的圖演示示例應(yīng)用數(shù)據(jù)庫架構(gòu)。
每種服務(wù)都有自己的數(shù)據(jù)庫,另外,每種服務(wù)可以用更適合自己的數(shù)據(jù)庫類型,也被稱作多語言一致性架構(gòu)。比如,駕駛員管理(發(fā)現(xiàn)哪個駕駛員更靠近乘客),必須使用支持地理信息查詢的數(shù)據(jù)庫。
表面上看來,微服務(wù)架構(gòu)模式有點像SOA,他們都由多個服務(wù)構(gòu)成。但是,可以從另外一個角度看此問題,微服務(wù)架構(gòu)模式是一個不包含Web服務(wù) (WS-)和ESB服務(wù)的SOA。微服務(wù)應(yīng)用樂于采用簡單輕量級協(xié)議,比如REST,而不是WS-,在微服務(wù)內(nèi)部避免使用ESB以及ESB類似功能。微服 務(wù)架構(gòu)模式也拒絕使用canonical schema等SOA概念。
轉(zhuǎn)載于:https://juejin.im/post/5b6a67a16fb9a04fe44bc857
總結(jié)
以上是生活随笔為你收集整理的微服务架构的优势与不足(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纪中2018暑假培训day3提高a组改题
- 下一篇: file类打印目录---树状结构,递归