微服務筆記--概念
一、微服務架構與SpringCloud
微服務是什麽呢?微服務架構和微服務是同一個嗎?
微服務架構是一種設計方法,而微服務應該是指使用這種設計方法而設計的一個應用。
微服務架構是將復雜系統使用組件化的方式進行拆分,並使用輕量通信方式進行整合的一種設計方法。微服務就是通過這種設計方法拆分出來的一個獨立的組件化小應用。
組件,通常以代碼庫的形式,提供函數是調用;而微服務的組件,卻以應用的方式,通過Http通信提供接口服務。
微服務架構定義的精髓是:分而治之,合而用之。將復雜的事情進行拆分,再使用輕量級通信http進行整合設計。
微服務的http通信不同於傳統的做法。傳統的需要事先設定IP和端口,而微服務卻采用服務註冊與發現,使用服務的實例名稱進行調用。
微服務的特點:小型化、自治化、扁平化、輕量級設計、漸進式設計。
SOA(Service-Oriented Architecture,面向服務架構),是一種粗粒度、松耦合的面向服務架構設計方法。
SOA是一種企業級的架構設計方法,使用企業服務總線(ESB)的方式來構建一個更高效、更可靠的系統。如:Dubbo、Dubbox、CXF等都是一些比較優秀的SOA開源工具。
微服務輕量級設計與SOA重量級設計的區別:
①微服務的通信設計使用簡單的HTTP協議,使用Restful實現。而SOA一般使用復雜的協議,如WebService或BPEL等,還需要使用服務描述性語言來定義標準接口。
②微服務的自治性與SOA的集中式管理。
③應用規模不同。SOA應用規模有限,微服務更能適應互聯網的環境。
搭建微服務框架,我們使用SpringCloud微服務開發工具套件。
二、微服務架構最佳設計
1、合理劃分微服務。在水平方面,按業務功能不同劃分微服務,劃分出來的稱為Rest API。負責業務功能的行為設計,完成數據管理工作,提供接口服務。
在垂直方面,以Rest API微服務為基礎實現前後端分離設計,創建WebUI微服務。只專註於人機交互界面設計,數據存取通過Rest API。
2、微服務治理
①Eureka ②Ribbon ③Zuul ④Hystrix ⑤Turbine ⑥Sleuth ⑦Config
3、Rest API微服務設計
①使用數據庫集群 ②讀寫分離設計 ③使用緩存 ④保證微服務獨立性
4、WebUI微服務設計
①使用FeignClient實現負載均衡調用②使用Hystrix實現容錯設計③使用非阻塞的異步編程技術實現高並發調用(如:CompletableFuture)
④使用分布式文件系統 ⑤微服務之間的調用規則:通過WebUI調用Rest API、Rest API之間只能通過MQ進行相互通信 、WebUI之間可使用與之對應的實例進行相互跳轉。
⑥數據最終一致性(CAP)【實時同步或使用消息通道】⑦分布式集群架構設計:微服務+數據庫集群+分布式文件系統集群⑧微服務運行環境安全設計:防火墻設計+防攻擊設計+訪問控制設計+數據保密設計。
微服務筆記--概念