單體架構:
應用程序就是一個項目,在一個進程中運行
單體架構的優點是開發簡單、集中管理、沒有分布式損耗
微服務架構:
微服務架構是一種架構風格,旨在通過將單體程序的功能分解到各個離散的服務中心以實現對解決方案的解耦
微服務架構特點:
一組小的服務
獨立進程、獨立部署
輕量級通信,如http
基於業務構建微服務
無集中式管理,每個微服務可以用不同的技術棧
微服務架構優點:
強模塊化邊界
可獨立部署
技術多樣性
可以對單個服務進行負載;
微服務缺點:
系統結構復雜
運行效率低
運維復雜性
數據最終一致性
什么時候引入微服務
業務復雜、開發團隊過於龐大的情況下適合引入微服務架構
服務分層
聚合服務(也叫適配服務、邊界服務):做一些適配、聚合、裁剪的工作
基礎服務:
微服務架構要處理的問題:
服務間通訊、服務治理與服務發現、網關和安全認證、限流與容錯、監控等
如果使用.Net Core技術的微服務框架,推薦使用騰訊在用的框架Consul、Ocelot、.Net Core、Polly...。張善友將內部架構整理出一個開源項目NanoFabric(https://github.com/geffzhang/NanoFabric)
如何拆分微服務:
微服務應該按照領域划分
微服務與中台的區別:
微服務屬於技術架構,中台屬於業務架構,中台實施是基於微服務架構
服務注冊中心:
服務之間需要服務發現機制,用戶相互感知彼此的存在。服務啟動時會將自身的服務信息注冊到注冊中心,並訂閱自己需要的組件
它保存了各個可用服務實例的網絡地址,服務注冊中心必須高可用、實時更新功能。Netflix Eureka就是一個服務注冊中心,它提供了服務注冊和查詢服務信息的REST API,通過POST請求注冊自己的地址,每30秒發送一個PUT請求刷新注冊信息,通過DELETE注銷服務,通過GET查詢可用服務實例信息。
其他服務注冊中心:
consul:一個用於discovering和configuring的工具。它提供了允許客戶端注冊和發現服務的API。Consul可以進行服務健康檢查,以確定服務的可用性。
zookeeper:在分布式應用中被廣泛使用,高性能的協調服務。 Apache Zookeeper 最初為Hadoop的一個子項目,但現在是一個頂級項目。
etcd:高可用,分布式,強一致性的,key-value,Kubernetes和Cloud Foundry都是使用了etcd。
API網關:
接口對外通信都是通過API網關,網關的作用有:統一接入、安全防護、協議適配、流量管控、長短鏈接支持、容錯能力、日志記錄。有了網關之后,各個api服務團隊可以專注於自己的業務邏輯處理,而網關更專注於安全、流量、路由等問題。