微服務(Microservices)是一種架構風格,一個大型複雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是鬆耦合的。每一個微服務僅關注於完成一件任務並很好地完成該任務。在全部狀況下,每一個任務表明着一個小的業務能力。html
以往咱們開發應用程序都是單體型,雖然開發和部署比較方便,但後期隨着業務的不斷增長,開發迭代和性能瓶頸等問題,將會困擾開發團隊,微服務就是解決此問題的有效手段。前端
那麼咱們在具體實踐落地微服務時,咱們又須要作什麼?一個微服務框架到底又有什麼呢?特別是對於.NET生態圈的小夥伴們,一直都有不少困惑,不知該如何下手。spring
既然咱們不知道,又要高清楚,那最好的辦法是什麼呢?我認爲最有效的方式是研究成熟的產品。市面上成熟的微服務框架有一些, 而SpringCloud就是可供研究的對象,下面咱們一塊兒來看看SpringCloud是什麼?後端
從上面的技術棧圖中能夠看出:api
組件 | 選型 | 備註 |
---|---|---|
網關 | Zuul | |
服務註冊與發現 | Eureka Consul zookeeper |
|
服務調用 | Feign | 根據註解和選擇機器,拼接Url地址,發起請求 簡化服務調用 |
負載均衡 | Ribbon | 服務調用負載均衡,配合Feign和Euraka使用 |
斷路器 | Hystrix | 隔離、熔斷以及降級的一個框架 服務線程池隔離,實現不一樣服務的調度隔離,避免服務雪崩 |
Eureka:服務啓動時,Eureka會將服務註冊到EurekaService,而且EurakeClient還能夠返回過來從EurekaService拉去註冊表,從而知道服務在哪裏安全
Ribbon:服務間發起請求的時候,基於Ribbon服務作到負載均衡,從一個服務的對臺機器中選擇一臺架構
Feign:基於fegin的動態代理機制,根據註解和選擇機器,拼接Url地址,發起請求負載均衡
Hystrix:發起的請求是經過Hystrix的線程池來走,不一樣的服走不一樣的線程池,實現了不一樣的服務調度隔離,避免服務雪崩的問題框架
Zuul:若是前端後端移動端調用後臺系統,統一走zull網關進入,有zull網關轉發請求給對應的服務微服務
說明:若是.Net Core平臺下想要使用SpringCloud,可經過steeltoe來實現,具體可參考 https://steeltoe.io/
一個較完整的微服務架構包含的以下的組件
組件 | 選型 |
---|---|
網關 | Zuul Ocelot Kong Tyk Orange Spring Cloud Gateway apiaxle api-umbrella |
服務註冊與發現 | Eureka Consul zookeeper |
服務調用 | Feign restTemplate |
負載均衡 | Ribbon |
斷路器 | Hystrix |
配置管理 | Spring Cloud Config |
鏈路追蹤 | Spring Cloud Sleuth Zipkin HTrace SkyWalking |
安全 | Spring Cloud Security Auth2 IdentityServer4 |
監控 | spectator atlas |
消息、事件總線 | Spring Cloud Bus (Redis、RabbitMQ、Kafaka) |
上面已經介紹了一個微服務框架所包含的架構組件,那麼.NET下如何落地呢?接下來咱們從網關開始來一步一步實踐。 .NET下的網關,咱們推薦使用Ocelot,來開始咱們的Ocelot之旅. .Net微服務實踐(二):Ocelot介紹和快速開始