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