Monolithic單體式架構指的是盡管是模塊化邏輯,但是最終還是會打包并部署為一個單一應用。
基準代碼
基準代碼和應用之間總是保持一一對應的關系:一旦有多個基準代碼,就不能稱為一個應用,而是一個分布式系統。
多個應用共享一份基準代碼是有悖于12-Factor原則的,解決的方法是將代碼拆分為獨立的類庫,然后依靠依賴管理策略去加載他們。
依賴關系
應用程序不會隱式依賴系統級的類庫。它一定通過依賴清單,確切地聲明所有依賴項。
在運行過程中通過依賴隔離工具來確保程序不會調用系統中存在但清單中未聲明的依賴項。
配置
配置寫在環境變量中,可以非常方便的在不同的部署間做修改,環境變量和語言系統無關。不可能不小心嵌入代碼庫。
后端服務
12-Factor應用不會區別對待本地或第三方服務。兩種都是附加資源。
Docker利用容器將資源進行有效隔離。
- 客戶端如何訪問這些服務?
APIGateway 即API網關,所有請求首先會經過這個網關,然后到達后端服務,有點類似于Facade模式。API網關作為系統接口對外的統一出口,可以減少調用方對服務實現的感知。 - 服務之間如何通信?
IPC -->同步調用REST 異步消息調用RPC - 服務怎么找?
基本都是通過zookeeper等類似技術做服務注冊信息的分布式管理 - 服務掛了怎么辦?
分布式一個最大的特點是:網絡是不可靠的。
HYSTRIX提供高容錯,如重試機制、限流、負載均衡、降級等。
hystrix對應的中文名字是“豪豬”,豪豬周身長滿了刺,能保護自己不受天敵的傷害,代表了一種防御機制,這與hystrix本身的功能不謀而合,因此Netflix團隊將該框架命名為Hystrix,并使用了對應的卡通形象做作為logo。
在一個分布式系統里,許多依賴不可避免的會調用失敗,比如超時、異常等,如何能夠保證在一個依賴出問題的情況下,不會導致整體服務失敗,這個就是Hystrix需要做的事情。Hystrix提供了熔斷、隔離、Fallback、cache、監控等功能,能夠在一個、或多個依賴同時出現問題時保證系統依然可用。
自測題
- 應用想要做到持續部署就必須縮小本地與線上差異。開發人員應該反對在不同環境間使用不同的后端服務,即使適配器已經可以幾乎消除使用上的差異。
對 - 微服務架構每個服務都有自己的數據庫,而不像傳統架構下多個服務共享一個數據庫。
對
- 關于微服務12要素中的“Dependences依賴”,下列哪一項理解是不正確的?
這一做法應用到生產和開發環境時可以不一致。 - 單體式應用的特點不包括下列哪一項?
每一個單體式應用的模塊都是微型六角形應用,都有自己的業務邏輯和適配器。 - 微服務被定義為特定背景下,為了開發出速度更快、更有彈性且用戶體驗更佳的應用而采用的自動化系統,下列哪一種場景環境不適合微服務?
必須理解其他部件運作原理