從.NET 5搬遷到.NET 6,可改進執行緒管理效能

微軟從2019年開始,為了要把內部處理收入的系統Microsoft Commerce移上Azure,因此逐步將程式碼庫移植到.NET 6版本,而這樣的升級改進整體服務品質指標,不只節省成本,也使得來自.NET Runtime的異常減少。

Microsoft Commerce是一組服務的集合,這些服務處理各種微軟的收入,包括來自龐大的產品和服務、維護授權資訊,甚至替每個營運區域計算稅收等。Microsoft Commerce涵蓋700多個服務,服務有大有小並在可用性、可擴展性和法遵都有不同要求,其中最大規模的服務,每秒需要處理超過110萬次請求,並在數十萬個核心上運作。

微軟在2019年的時候開始了這項搬遷計畫,考慮到要將Commerce搬上Azure,並且充分使用容器和Kubernetes,就需要轉向使用Linux,同時需要搬遷至.NET Core。這項搬遷工作其中最具代表性的工作,便是全球查詢服務GLS( Global Lookup Service),因為GLS歷經了最長的搬遷旅程。

GLS是一個分區服務,根據臨近程度映射微軟使用者到資料位置,微軟解釋,這是一個重要的基礎設施服務,支援著Xbox和微軟商店等消費商務場景。

GLS是一種分散式大規模RESTful服務,部署於全球4個地區,全球每秒請求超過10萬次,該服務最初是用.NET Framework 4.6.2編寫並在Windows虛擬機器上運作,作為Commerce搬遷到Azure的一部分工作,GLS程式碼庫從.NET Framework 4.6.2升級至.NET Core 3.1、5,然後是.NET 6,現在已可容器化在AKS(Azure Kubernetes Service)上運作。

微軟提到,Commerce各服務因差異,所以搬遷的時間都不一樣,但他們早期搬遷服務,花費的時間比晚期搬遷的服務要長得多,因為透過搬遷過程中的學習,使得搬遷過程越來越容易,部分從.NET Framework搬遷到.NET Core的服務,開發團隊可能會在搬遷過程執行額外的更新,使得測試和驗證的工作增加,但從5.0到6.0的遷移就更為直接,許多只需要更改幾行程式碼就可以獲得框架改進,時間通常不到一天。

微軟在衡量搬遷成功與否主要關注成本,從.NET Framework搬遷到.NET Core 3.1,部分服務可節省成本達80%,vCore減少35%以上,另外,微軟也提到,他們有一項重要的服務,搬遷到.NET Core 3.1後,服務延遲降低約78%,同時明顯提升穩定性。GLS的搬遷呈現了相似的成本下降,與最先的.NET Framework與Windows虛擬機器配置相比,搬遷後vCore減少30%,延遲降低20%。

.NET 5搬遷到.NET 6,GLS的改進主要體現於.NET指標上,像是即便保持相同RPS時,但是執行緒池中的執行緒數量下降,顯示執行緒管理效能變好,另外,升級也改進了連接管理,使得並行連接數下降,而且來自.NET Runtime的執行異常也隨之下降。

熱門新聞

Advertisement