聊聊.NET微服務(wù)
本文轉(zhuǎn)載自微信公眾號「全棧碼農(nóng)畫像」,作者小碼甲。轉(zhuǎn)載本文請聯(lián)系全棧碼農(nóng)畫像公眾號。
Microservices
微服務(wù)是一種構(gòu)建現(xiàn)代應(yīng)用程序的流行的體系結(jié)構(gòu),云原生系統(tǒng)擁抱微服務(wù)。
微服務(wù)是由一組(使用共享結(jié)構(gòu)交互的、獨立的小塊服務(wù))搭建的分布式集,具有以下特征:
- 在大型的領(lǐng)域上下文中,每個微服務(wù)實現(xiàn)特定的業(yè)務(wù)功能
- 每個微服務(wù)都自主開發(fā)的,且可以獨立部署
- 每個微服務(wù)都獨立封裝了自己的數(shù)據(jù)存儲技術(shù)(SQL,NoSQL)和編程平臺。
- 每一個微服務(wù)都運行在獨立進程,并使用標(biāo)準(zhǔn)的通信協(xié)議(例如HTTP/HTTPS、WebSocket或AMQP)與其他進程進行通信。
- 它們一起組成一個應(yīng)用程序
下圖對比單體與微服務(wù)應(yīng)用:
注意,單體應(yīng)用由分層架構(gòu)組成,在單個進程中執(zhí)行,通常使用關(guān)系型數(shù)據(jù)庫。
但是,微服務(wù)方法依據(jù)功能劃分為(邏輯+數(shù)據(jù))的獨立服務(wù),每個微服務(wù)都托管自己的數(shù)據(jù)存儲。
微服務(wù)依然遵守"十二要素應(yīng)用"中的One Codebase, One Application”原則。
每個微服務(wù)存儲在獨立代碼倉庫,通過版本管理進行跟蹤,可以部署到多個環(huán)境。
Why microservices?
微服務(wù)提供了敏捷能力
上一段落,我們已經(jīng)對比了單體和微服務(wù),我們看到了一些明顯的好處:
- 每個微服務(wù)都有自治的生命周期,可以獨立演進、多頻次部署。
你不必等待發(fā)布窗口即可部署新功能或更新,你可以只更新復(fù)雜應(yīng)用的一小部分區(qū)域,減少破壞整個系統(tǒng)的風(fēng)險。
- 每個微服務(wù)都可以獨立擴展。
不需要以應(yīng)用整體為單位進行擴展,而僅擴展那些需要更多處理能力或網(wǎng)絡(luò)帶寬的微服務(wù),這種細粒度的伸縮方法提供更好的控制力和成本優(yōu)勢。
學(xué)習(xí)微服務(wù)的最佳指南是《.NET Microservices: Architecture for Containerized .NET Applications》,這本書深入探討了微服務(wù)設(shè)計和架構(gòu),它是微服務(wù)實踐https://github.com/dotnet-architecture/eShopOnContainers的閱讀搭檔。
Developing microservices
可以使用任何現(xiàn)代開發(fā)平臺來創(chuàng)建微服務(wù)。
微軟.NET平臺是一個絕佳的選擇,免費、開源,內(nèi)置許多功能以簡化微服務(wù)開發(fā)。.NET是跨平臺的,可以在Windows、macOS和大多數(shù)Linux上構(gòu)建和運行應(yīng)用程序。
.NET的性能很高,在TechEmpower組織的性能基準(zhǔn)測試中,.NET相當(dāng)優(yōu)秀。
.NET由Microsoft和.NET社區(qū)在GitHub上維護。
Ref
https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/definition