.Net微服務實踐(一)[框架]:微服務框架選型


微服務框架

微服務(Microservices)是一種架構風格,一個大型復雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表着一個小的業務能力。

以往我們開發應用程序都是單體型,雖然開發和部署比較方便,但后期隨着業務的不斷增加,開發迭代和性能瓶頸等問題,將會困擾開發團隊,微服務就是解決此問題的有效手段。

那么我們在具體實踐落地微服務時,我們又需要做什么?一個微服務框架到底又有什么呢?特別是對於.NET生態圈的小伙伴們,一直都有很多困惑,不知該如何下手。

既然我們不知道,又要高清楚,那最好的辦法是什么呢?我認為最有效的方式是研究成熟的產品。市面上成熟的微服務框架有一些, 而SpringCloud就是可供研究的對象,下面我們一起來看看SpringCloud是什么?

SpringCloud

SpringCloud技術棧

從上面的技術棧圖中可以看出:

  • 微服務框架核心是服務治理
  • 服務治理的核心組件包括網關服務注冊與發現服務調用

SpringCloud核心組件

組件 選型 備注
網關 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
apollo
鏈路追蹤 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介紹和快速開始


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM