前天發的文章《基於Kubernetes 構建.NET Core 的技術體系》,有同學問.NET Core上有Spring Cloud類似的平台嗎? .NET Core出現這么久了,這個為雲原生應用開發而准備的系統需要Spring cloud這樣的全家桶嗎?今天寫下這篇文章的目的就是陳述一下容器化時代還需要Spring Cloud這樣的基礎設施嗎? 大家希望使用Spring Cloud的初衷都是為了實現應用的微服務化。然而對於微服務而言,有六個基本必須實現的:
- 進程通訊
- 服務注冊與發現
- 負載均衡
- 配置中心
- 熔斷器
- 網關路由
我們已經進入到容器化時代,Kubernetes成為了市場上容器編排的事實標准,而且k8S 同樣具備了微服務所需要的服務注冊與發現、負載均衡、配置中心。Spring cloud 的核心是Netflix微服務框架,非常成熟,但是在netflix oss開發初期,那個時候還沒有docker,我們現在所有的服務都是通過虛擬容器承載的。
Netflix OSS的許多內容都是在一個已經過去的年代寫出來的,那時所有東西都只能運行在AWS雲上而沒有其它選擇。關於那個年代的許多寶貴遺產和前提假設都已經被封裝到了Netflix的庫里面,對於現在你運行的環境(比如Linux容器)已經不適用了。在Linux容器、Docker、容器管理系統等等出現之后,我們越來越看到把我們的微服務運行在Linux容器(公有雲、私有雲,或者都要等等)里的巨大價值。另外,因為這些容器都是直接把這些服務打包起來,所以我們傾向於不要過多關心在容器里面運行的到底是什么技術(是Java?還是Node.js?或者Go?或者.NET Core?)
Kubernetes是多語言的,不僅僅針對Java平台,而是以通用的方式為所有語言解決分布式計算問題。Kubernetes提供了配置管理、服務發現、負載均衡、跟蹤、統計、單實例、平台級和應用棧之外的調度工作。該應用不需要任何客戶端邏輯的庫或代理程序,可以用任何語言編寫。這意味着一個平台可以被多個團隊(包括使用Spring
的Java
開發人員)使用,並提供多種用途:應用程序開發、測試環境、構建環境(源碼運行、構建服務、依賴倉庫)等。Kubernetes
解決了更廣的微服務架構問題。除了提供運行時服務,Kubernetes
也可以讓你制定環境、設置資源限制、RBAC、管理應用程序生命周期、允許自動擴容和自我修復(幾乎表現得像一個抗脆弱平台)。
- 在K8s集群中,沒有必要擁有Eureka。K8s中的ETCD擁有所有必要的信息。
- 您的應用程序將通過指定的K8s服務名稱聯系K8s API服務器以獲取端點信息。
- Kubernetes 可以解決你所遇到的問題,可能可以取代netflix的整套技術
.NET Core 就是為雲原生應用的開發而准備的平台,.NET Core相較於他的哥哥.NET的優勢也正是我們很容易的使用C# 語言去構建高內聚低耦合的雲原生系統。借助於K8S,service fabric, 我們很容易構建一個.NET Core的微服務生態。結合.NET Core和k8s 容器服務在騰訊雲上制作了一個教程 《.NET 微服務實戰 — 微信公眾號開發( https://cloud.tencent.com/developer/edu/major-100017)》,教程里例子-公眾號開發雖然簡單,我只是使用這個簡單例子來闡述一個簡單的問題,雲時代的.NET 是怎么樣的,我們要怎么樣使用.NET Core。