1. 程式人生 > >什麽是微服務架構,.netCore微服務選型

什麽是微服務架構,.netCore微服務選型

技術 耦合 ref .net 服務治理 server nano 服務 orleans

什麽是微服務架構,.netCore微服務選型

https://www.cnblogs.com/uglyman/p/9182485.html

開發工具:VS2017 .Net Core 2.1

什麽是微服務?
單體結構:

缺點:
1)只能采用同一種技術,很難用不同的語言或者語言不同版本開發不同模塊;
2)系統耦合性強,一旦其中一個模塊有問題,整個系統就癱瘓了;一旦升級其中一個模塊,整個系統就停機了;
3)要上線必須一起上線,互相等待,無法快速響應需求;
4)集群只能是復制整個系統,即使只是其中一個模塊壓力大;

微服務:
不同模塊放到不同的進程/服務器上,模塊之間通過網絡通訊進行協作。
適用於:模塊比較多,訪問量比較大的互聯網類系統,並不是所有項目都適合微服務

優點:
1)可以用不同的語言或者語言不同版本開發不同模塊;
2)系統耦合性弱,其中一個模塊有問題,可以通過“降級熔斷”等手段來保證系統不血崩;
3)可以獨立上線,能夠迅速響應需求;
4)可以對不同模塊用不同的集群策略,哪裏慢集群哪裏。

缺點:
1)開發難度大,系統結構更復雜;
2)運行效率低;(網絡通訊沒有進程通訊快)

微服務架構要處理哪些問題?
服務間通訊;服務治理與服務發現;網關和安全認證;限流與容錯;監視等
第一代微服務:Dubbo(Java)、Orleans(.Net)等 和語言綁定緊密;
第二代微服務:Spring Cloud等 適合混合開發
第二代微服務:Service Mesh(Service Fabric(微軟內部使用的、開源的)、lstio、Conduit等)

目前:第三方微服務還在快速發展中,更新叠代比較快(還不完善)

.NetCore 微服務選型
為什麽是.net Core?雖然.Net Framework也可以實現微服務,但是.Net Core是為雲而生,用來實現微服務更方便,而且.Net Core可以跨平臺。(.Net Framewordk不會再有.Net5.x 下一代就是.Net Core)

第二代微服務架構:Consul+Ocelot+.Net Core+Polly+.....;
騰訊.net大隊長張善友把騰訊內部的架構實戰整理出一個開源項目NanoFabric(Github上可以搜到),NanoFabric不是一個獨立的技術,它只是幫我們搭建好了,配置好了的一個腳手架,只是一個膠水項目,文檔不全,僅供我們參考。

在SpringCloud中:EurekaServer做服務治理和服務發現、Hystrix做熔斷降級、Zuul做網關;
在NanoFabric中:Consul做服務治理和服務發現、Polly做熔斷降級、Ocelot做網關;

在微服務中,服務之間的通訊有倆種主要形式:
1)Restful,也就是傳輸Json格式數據。.net中就是對應的webapi技術 效率比較低,數據冗余,短連接
2)二進制RPC:二進制傳輸協議,比restful用的http通訊效率更高,但是耦合性更強。技術有Thrift、gRPC等

什麽是微服務架構,.netCore微服務選型