譯者 | 李睿
審校 | 重樓
在快速發展的數字服務領域,對可擴展和彈性架構(系統從故障中快速恢復的能力)的需求已經達到頂峰。基于單元的架構的引入標志著一個關鍵的轉變,這種轉變旨在滿足超大規模(架構響應波動需求的快速擴展能力)的激增需求。這種方法對于快速擴展以響應波動的需求至關重要,并且已經成為數字化成功的基礎。這種策略讓亞馬遜公司和Facebook公司等科技巨頭以及DoorDash公司等服務平臺能夠在需求高峰期間巧妙地駕馭數字流量的浪潮,確保為全球用戶提供服務。
想象一下亞馬遜公司在“黃金會員日”的流量激增,或者Facebook公司在重大活動期間遭遇的全球高峰流量。同樣,DoorDash公司對完美處理大量訂單的追求展現了一個主題:對垂直擴展和水平擴展的架構的迫切需求——在不犧牲系統完整性或用戶體驗的情況下擴展容量。
在當前的形勢下,很多初創公司的業務得到前所未有的增長,快速擴展規模的夢想可能會成為可擴展性問題的噩夢。超高速增長(超出預期的快速擴張)是一項艱巨的挑戰,如果不能有效地擴大規模,就有可能導致公司倒閉。這一挑戰催生了超大規模的概念,強調了架構在適應和發展以滿足動態需求方面的靈活性。這一策略的關鍵是廣泛的并行化和嚴格的故障隔離,確保公司能夠在不陷入過度增長陷阱的情況下進行擴展。
基于單元的架構成為無法停機的應用程序和服務的信標。在宕機每一秒都意味著重大聲譽或財務損失的場景中,這種架構范例被證明是無價的。它對以下方面尤其重要:
這種架構創新是為了直接響應對快速擴展的數字服務日益增長的需求而開發的。它提供了一個可擴展、有彈性的框架,以支持持續的服務交付和運營優勢。
基于單元的架構是一種現代的方法,可以根據分布式系統和微服務設計模式的原理創建既可擴展又有彈性的數字服務。這種架構將一個龐大的系統分解成更小的、獨立的部分,稱之為單元(Cell)。每個單元都是自立的,包含系統功能、數據存儲、計算、應用程序邏輯和依賴項的特定部分。這種模塊化設置允許每個單元獨立擴展、部署和管理,從而增強了系統從故障中恢復的能力,而不會引起廣泛的問題。
如果以城市規劃進行類比,可以認為基于單元的架構類似于一座精心設計的大都市,每個社區都自主運營,配備了自己的服務和設施,并為城市的繁榮發展做出貢獻。在停電或水管破裂等時期,只有受到影響的社區運營會中斷,而城市的其他社區則正常運營。正如一個社區經歷中斷而不會使整個城市癱瘓一樣,在這個架構中遇到問題的單元不會引發整體系統的故障。這確保了數字服務保持健壯和可靠,保持更高的正常運行時間和彈性。
基于單元的架構通過將一個龐大的系統分解成更小的、獨立的單元來構建可擴展的、健壯的數字服務。每個單元都有自己的數據存儲和計算能力,類似于城市中社區的運營方式。它們可以獨立運行,所以如果一個單元出現問題,不會影響系統的其他部分。這種設計有助于提高系統的穩定性和容量增長,而不會引發更多的問題。
圖1基于單元的架構
(1)單元:類似于社區,單元是這個架構的基本組成部分。每個單元都是一個自治的微服務集群,擁有能夠處理服務職責子集的資源。單元是應用程序的獨立版本,具有自己的計算能力、負載平衡器和數據庫。這種設置允許每個單元獨立運營,從而可以分別部署、監視和維護。這種獨立性意味著,如果一個單元遇到問題,并不會影響其他單元,這有助于系統有效地擴展,并保持健壯性。
(2)單元路由器:單元路由器起著類似于城市交通管理系統的關鍵作用。它們根據負載、地理位置或特定服務需求等因素動態地將請求路由到最合適的單元。通過有效地平衡各個單元之間的負載,單元路由器確保每個請求都由最適合處理它的單元處理,優化系統性能和用戶體驗,就像交通燈和標志引導車輛通行以確保城市交通順暢一樣。
(3)單元之間通信層:盡管每個單元具有自治性,但它們之間的合作對于處理跨系統的任務至關重要。單元之間通信層促進單元之間安全有效的信息交換。這一層就像城市的公共交通系統,連接不同的社區(單元),以確保整個架構的無縫協作和統一的服務交付。它確保了即使單元獨立運營仍然可以有效地協同工作,這反映了城市的不同部分是如何相互聯系的,同時又具有凝聚力。
(4)控制平臺:控制平臺是基于單元的架構的關鍵組件,充當管理運營的中心樞紐。它監督諸如設置新的單元(供應)、關閉現有單元(取消供應)以及在單元之間移動客戶(遷移)等任務。這確保了基礎設施對系統及其用戶的需求保持響應,允許動態資源分配和無縫的服務連續性。
基于單元的架構為有效擴展數字服務提供了一個健壯的框架,保證了它們在擴展期間的彈性和適應性。以下是它的優點:
(1)更高的可擴展性:通過定義和管理每個單元的容量,可以添加更多單元以進行擴展(通過添加數據庫和服務器等系統組件)并平均分配工作負載來處理增長。這避免了由于擴展(通過增加數據庫、服務器或子系統等系統組件的大小來適應增長)而導致的資源限制。隨著需求的增長,可以添加更多的單元,每個單元都包含已知容量,從而使系統具有固有的可擴展性。
(2)更安全的部署:使用單元可以使部署和回滾更順暢??梢砸淮螌⒏牟渴鸬揭粋€單元,從而最大限度地減少問題帶來的影響。金絲雀單元可以在實際條件下以最小的風險測試新的部署,為更廣泛的部署提供安全性。
(3)易于測試:測試大型且分散的系統可能具有挑戰性,特別是當它們變得更大時。然而,使用基于單元的架構,每個單元都保持在一個可管理的大小,使得測試它們在最大容量下的行為變得更加簡單。測試整個大型服務可能過于昂貴和復雜。但是,只測試一個單元是可行的,因為可以模擬單元可以處理的最重要的工作量,類似于單個客戶可能給應用程序提供的最重要的工作。這使得確保每個單元順利運行變得實用且具有成本效益。
(4)更低的“爆炸半徑”:基于單元的架構通過將問題隔離在單個單元內來限制故障的傳播,就像城市中的社區一樣。這種劃分確保一個單元中的問題不會影響整個系統,從而保持整體功能。每個單元獨立運行,最大限度地減少任何單一事件的影響區域或“爆炸半徑”,類似于大規模服務中的區域隔離。這種設置通過控制中斷和防止大范圍中斷來增強系統彈性。
圖2與傳統服務相比,基于單元的架構服務具有更強的故障恢復能力,并且具有更小的爆炸半徑
(5)提高可靠性和恢復能力
①更高的平均故障間隔時間(MTBF):基于單元的架構通過減少問題發生的頻率來提高系統的可靠性。這種設計使每個單元都很小且易于管理,允許定期檢查和維護,使運營更加平滑,并使其更可預測。由于客戶分布在不同的單元中,任何問題都只影響有限的一組請求和用戶。每次只在幾個單元上測試更改,使其易于恢復而不會產生廣泛的影響。如果將客戶劃分為十個單元,則一個單元中的問題只影響10%的客戶。這種管理變更和快速解決問題的受控方法意味著系統經歷更少的中斷,從而獲得更加穩定和可靠的服務。
②更低的平均恢復時間(MTTR):使用單元恢復更快、更直接,因為處理的是更小的、更可控的問題,而不是整個系統的問題。
(6)更高的可用性:基于單元的體系結構可以導致更少、更短的故障,從而提高服務的整體正常運行時間。盡管可能存在更多潛在的故障點(理論上每個單元都可能失敗),但每個故障的影響都會大幅降低,并且更容易修復。
以下是一個簡短的指南,可以幫助人們理解何時使用這種架構策略是有利的:
(1)高風險應用程序:如果停機可能嚴重影響客戶的業務,損害企業的聲譽,或導致大量的財務損失,那么基于單元的方法可以防止大范圍的中斷。
(2)關鍵經濟基礎設施:基于單元的架構確保金融服務行業(FSI)的持續運營,其中工作負載對經濟穩定至關重要。
(3)超大規模系統:太大或太關鍵而不能發生故障的系統(幾乎在任何情況下都必須保持運行的系統)是基于單元的設計的主要候選者。
(4)嚴格的恢復目標:基于單元的架構為需要小于5秒的恢復點目標(RPO)和小于30秒的恢復時間目標(RTO)的工作負載提供了快速恢復能力。
(5)具有專用需求的多租戶服務:對于租戶需要完全專用資源的服務,為其分配計算單元可確保隔離和專用性能。
盡管基于單元的架構在處理關鍵工作負載方面帶來了相當大的好處,但它也有自己的障礙,例如復雜性增加、成本上漲、需要專門的工具和實踐,以及需要在路由層上進行投資。
本節重點介紹在設計和實現基于單元的架構時發揮作用的關鍵設計因素。
單元設計是基于單元的架構的一個基本方面,在這種架構中,其中系統被劃分為更小的、獨立的單元。每個單元使用其資源獨立運行,使整個系統更具可擴展性和彈性。
在開始單元設計之前,需要確定系統中可以分離到一個單元的不同功能。這可能涉及根據服務的運營需求或用戶基礎對服務進行分組。一旦定義了這些邊界,就要為每個單元配備必要的資源,例如數據庫和應用程序邏輯,以確保它能夠自主運行。這種設置有助于有針對性的擴展和恢復,并最大限度地減少故障的影響,因為一個單元中的問題不會波及到其他單元。
在單元之間建立有效的溝通渠道和建立全面的監測是保持系統內聚和監督單元表現的關鍵步驟。通過系統地將其架構組織到單元中,企業可以創建一個健壯的框架,增強系統的可管理性和適應性。
以下是一些有關單元設計的設想,可以用來增強系統的彈性:
(1)跨可用性區域分布單元:通過在不同的可用性區域(AZ)中定位單元,可以保護系統免受單一數據中心或地理位置故障的影響。這種地理分布確保了即使一個可用性區域(AZ)遇到問題,其他可用性區域(AZ)中的其他單元也可以繼續運行,從而保持總體系統可用性,并降低完全服務停機的風險。
(2)實現冗余單元配置:在可用性區域(AZ)內部或之間創建單元的冗余副本可以進一步增強彈性。這種冗余意味著,如果一個單元發生故障,其職責可以立即由一個重復的單元接管,從而最大限度地減少服務中斷。這種方法需要仔細地在單元之間同步,以確保數據一致性,但可以顯著提高容錯性。
(3)為自主運營設計單元:確保每個單元可以獨立運營,并使用自己的一組資源、數據庫和應用程序邏輯,這一點至關重要。這種獨立性允許單元與系統中其他地方的故障隔離。即使一個單元出現問題,也不會擴散到其他單元,并使識別和糾正問題變得更容易。
(4)策略性地使用負載平衡器和單元路由器:集成能夠感知單元位置和健康狀態的負載平衡器和單元路由器可以有效地將流量從有問題的單元或可用性區域(AZ)重定向。這種動態路由功能允許實時調整流量,將用戶引導到健康的可用單元,并平衡負載,以防止任何一個單元或可用性區域(AZ)負擔過重。
(5)簡化單元復制和部署:在設計單元時考慮到復制和重新部署。在單元或可用性區域(AZ)出現故障的情況下,擁有在替代位置快速啟動新單元的機制是非常寶貴的。用于單元部署的自動化工具和模板可以加快這一過程,減少恢復時間并增強整體系統彈性。
(6)定期測試故障轉移過程:定期測試單元故障轉移過程,包括模擬故障和恢復演練,可以確保系統在實際停機期間按預期響應。這些測試可以揭示單元設計和故障轉移策略中的潛在弱點,從而不斷提高系統彈性。
通過將這些想法融入到單元設計中,可以創建一個更具彈性的系統,能夠承受各種故障場景,同時最大限度地減少對服務可用性和性能的影響。
單元劃分是基于單元的架構中的一項關鍵技術。它側重于將系統工作負載劃分為不同的單元,以優化性能、可擴展性和彈性。它涉及根據預定義的標準對用戶請求或數據進行分類和定向到特定的單元。這一過程確保單元不會不堪重負,提高了系統的可靠性和效率。
(1)確定劃分標準:確定在單元之間分配工作負載的基礎。其典型的標準包括地理位置、用戶ID、請求類型或日期范圍。這一步驟對于定義系統如何對請求進行分類并將請求路由到適當的單元至關重要。
(2)實現路由邏輯:在單元路由器或API網關內開發一種路由機制,該機制使用已識別的標準將傳入請求定向到正確的單元。這可能涉及考慮當前單元負載和可用性的動態決策算法。
(3)持續監測和調整:定期監測各個單元的性能和負載分布。使用這些數據調整分區標準和路由邏輯,以保持最佳的系統性能和可伸縮性。
有幾種算法可以用于有效的單元劃分,每種算法都有其優勢,并針對不同類型的工作負載和系統需求進行了定制:
(1)一致性哈希:請求是基于分區鍵(例如用戶ID)的哈希值進行分配的,從而確保在添加或刪除單元時工作負載分布均勻,并且進行最小的重組。
(2)基于范圍的劃分:將數據劃分為范圍(例如字母或數字),并將每個范圍分配給特定的單元。這是有序數據的理想選擇,允許高效的查詢操作。
(3)輪詢:這種方法以循環的方式在所有可用的單元中均勻地分配請求。它在實現基本級別的負載平衡方面非常簡單和有用。
(4)分片:與基于范圍的分區類似,但更復雜,分片涉及將大型數據庫拆分成更小、更快、更易于管理的部分或“分片”,每個部分由單獨的一個單元處理。
(5)動態劃分:根據工作負載特征或系統性能指標實時調整劃分。這種方法需要能夠分析系統狀態,并立即進行調整的先進算法。
通過深思熟慮地實現單元劃分并選擇適當的算法,可以顯著增強基于單元的架構的性能、可擴展性和彈性。定期檢查和調整分區策略,確保它繼續滿足系統不斷變化的需求。
在基于單元的架構中,單元路由器對于將流量引導到正確的單元、確保高效的工作負載管理和可擴展性至關重要。一個有效的單元路由器取決于兩個關鍵要素:流量路由邏輯和故障轉移策略,它們保持系統可靠性并優化性能。
(1)實現流量路由邏輯:首先定義如何將請求定向到各種單元的標準,包括用戶的地理位置、請求類型和所需的特定服務。其目的是減少延遲并均勻分配負載。采用實時適應計算單元可用性和工作負載變化的動態路由,可能通過與監視每個計算單元狀態和位置的服務發現工具集成來實現。
(2)建立故障轉移策略:可靠的故障轉移過程對于單元路由器確保系統的可靠性至關重要。如果任何單元變得無法訪問,路由器必須自動將流量重路由到下一個可用的單元,這需要最少的人工干預。這可以通過跨計算單元實施運行狀況檢查來實現,以快速識別和響應故障,從而保持用戶體驗的流暢性和服務的高可用性,即使在計算單元中斷期間也是如此。
圖3單元路由器通過在中斷期間將流量重定向到健康的單元來確保良好的用戶體驗,從而保持不間斷的服務可用性
對于單元路由器的實際實現,可以采用以下方法之一:
(1)負載均衡器:使用基于云的負載均衡器,根據設置的規則、特定的請求屬性(例如URL路徑或標頭)動態引導流量。
(2)API網關:API網關可以作為所有傳入請求的主入口,并根據配置的邏輯將它們路由到適當的單元。
(3)服務網格:服務網格提供了一個網絡層,可根據策略、服務發現和運行狀況促進高效的服務到服務通信和路由請求。
(4)自定義路由器服務:開發自定義服務允許基于詳細請求內容、當前單元負載或定制業務邏輯做出路由決策,從而提供對流量管理的定制控制。
為單元路由器選擇正確的實現策略取決于特定的需求,例如路由決策的粒度、與現有系統的集成能力以及管理的簡單性。每種方法提供不同程度的控制、復雜性和適應性,以滿足不同的架構需求。
單元大小是指確定每個單元的最佳大小和容量,以確保它能夠有效地處理其指定的工作負載,而不會造成過重的負擔。適當的單元大小至關重要,原因如下:
(1)均衡負載分布:正確大小的計算單元有助于在整個系統中實現工作負載的均衡分布,防止任何一個單元成為瓶頸。
(2)可擴展性:大小合適的單元可以更有效地擴展。隨著需求的增加,系統可以增加更多的單元或調整現有單元內的資源以適應增長。
(3)彈性和恢復:定義明確的更小單元可以更有效地隔離故障,限制任何單點故障的影響。這使系統更具彈性,并簡化了恢復過程。
(4)成本效率:優化單元大小有助于更有效地利用資源,避免在未充分利用的容量上花費不必要的費用。
單元大小需要仔細分析幾個因素:
有效的單元大小分級通常涉及理論分析和經驗測試的結合。從基于工作負載特征的最佳猜測估計開始,并根據觀察到的性能進行調整,以確保單元在系統發展時保持高效、響應性和成本效益。
基于單元的架構中的單元部署是在多個獨立單元之間分配和管理應用程序工作負載的過程。這一策略確保了可擴展性、彈性和高效的資源使用。有一個簡要的指南介紹了它通常是如何完成的,以及有效實施所需的技術選擇。
(1)自動部署管道:首先設置自動部署管道。這些管道處理應用程序的打包、測試和部署到各個單元。自動化確保一致性,減少錯誤,并支持跨單元的快速部署。
(2)藍/綠部署:使用藍/綠的部署策略來最大限度地減少停機時間并降低風險。通過將應用程序的新版本部署到一個單獨的環境(綠),同時保持當前版本(藍)的運行,可以在最新版本完全準備好并經過測試后將流量切換到最新版本。
(3)金絲雀版發布:在使更新在系統范圍內可用之前,逐步向一小部分單元或向用戶發布更新。這允許監視更改的影響,并在必要時回滾更改,而不會影響所有用戶。
通過利用這些部署策略和技術,可以在單元部署中實現高度的自動化和控制,從而確保應用程序保持可擴展性、可靠性和易于管理。
在基于單元的架構中,單元的可觀察性至關重要,它可以確保全面了解每個單元的運行狀況、性能和運營指標。它允許有效地監控、排除故障和優化系統,從而增強整體可靠性和用戶體驗。
為了實現徹底的單元可觀察性,需要關注三個關鍵領域:日志記錄、監視和跟蹤。日志記錄捕獲每個單元中的詳細事件和操作。監視實時跟蹤關鍵性能指標和運行狀況度量。跟蹤跟蹤在單元中移動的請求,確定工作流中的瓶頸或故障。
(1)日志工具:像Elasticsearch、Logstash、Kibana (ELK Stack)或Splunk這樣的解決方案提供了強大的日志記錄功能,允許集中匯總和分析來自所有單元的日志。
(2)監控解決方案:Prometheus與Grafana相結合,提供了強大的監控功能,并支持自定義指標。Amazon Cloud Watch或Google Operations(前身為Stackdriver)等云原生服務為部署在各自云平臺上的應用程序提供量身定制的集成監控解決方案。
(3)分布式跟蹤系統:Jaeger、Zipkin和AWS XRay等工具支持分布式跟蹤,幫助了解單元之間的請求流,并識別微服務交互中的延遲問題或故障。
(4)服務網格:Istio或Linkerd等服務網格本質上提供了可觀察性功能,包括監視、日志記錄和跟蹤單元之間的請求,而無需更改應用程序代碼。
通過利用這些工具并專注于全面的可觀察性,可以確?;趩卧募軜嫳3指咝阅?、彈性,并能夠支持應用程序的動態需求。
采用基于單元的架構改變了數字服務的結構和運營動態。將服務分解為獨立可擴展且具有彈性的單元,為管理復雜性和確保系統可用性提供了一個健壯的框架。然而,這種架構范例也引入了新的挑戰和復雜性。以下將深入介紹技術優勢和注意事項。
選擇基于單元的架構需要進行這些權衡,并評估可擴展性、彈性和運營靈活性的好處是否超過了實現和管理的復雜性。它最適用于需要高可用性的服務、正在快速擴展的服務或模塊化擴展和故障隔離至關重要的系統。
采用基于單元的架構可以顯著增強應用程序的可擴展性和彈性。以下是有效實施此方法的精簡最佳實踐:
(1)從堅實的基礎開始
(2)為靈活性和增長制定計劃
(3)關注可靠性
(4)確保獨立性和安全性
(5)優化部署和運營
通過遵循這些實踐,可以利用基于單元的架構來創建可擴展的、有彈性的、可管理的和安全的系統,以應對現代數字需求的挑戰。
雖然基于單元的架構為可擴展性和彈性提供了顯著的優勢,但它也引入了組織在采用這種方法時需要注意的特定挑戰和陷阱:
(1)管理和運營的復雜性
(2)初始設置和遷移挑戰
(3)設計和架構考慮
(4)資源利用及成本影響
(5)網絡和通信開銷
(6)安全性和合規性
(7)可擴展性vs. 內聚的權衡
組織應該投資于穩健的計劃,采用全面的自動化和監控工具,并確保團隊進行持續的培訓,以減少這些陷阱。提前了解這些挑戰可以幫助設計一個更具彈性、可擴展和高效的基于單元的架構。
從業務快速增長的初創公司到亞馬遜和Facebook等科技巨頭,基于單元的架構已經成為管理可擴展性和確保系統彈性的關鍵。這種架構模型已被許多行業采用,反映了它在處理大規模關鍵工作負載方面的有效性。以下是DoorDash、Slack和Roblox如何實現基于單元的架構來應對其獨特挑戰的簡要介紹。
面對高速增長的需求,DoorDash公司從單片系統遷移到基于單元的架構,這標志著其運營策略的關鍵轉變。這一轉變被稱為“Project SuperCell”,其驅動因素是有效管理波動的需求,并在不同市場中保持一致的服務可靠性。通過利用AWS公司的云計算基礎設施,DoorDash公司能夠隔離單個單元內的故障,防止大范圍的系統中斷。它極大地增強了該公司擴展資源和維持服務可靠性的能力,即使在需求高峰期間也是如此,展示了采用基于單元的方法的變革潛力。
Slack公司經歷了向基于單元的架構的重大轉變,以減少故障的影響并提高服務冗余度。由于對網絡中斷的審查,這一舉措揭示了僅依賴單一可用性區域的風險。新的單元架構旨在更有效地限制故障,并最大限度地減少潛在中斷的程度。通過在每個可用性區域采用隔離服務,Slack公司使其內部服務能夠在每個可用性區域獨立運行,從而減少了中斷的影響,加快了恢復過程。這一重新設計顯著提高了Slack公司的系統彈性,強調了基于單元的架構在確保高服務可用性和質量方面的作用。
Roblox公司向基于單元的架構的轉變顯示了它對快速增長的響應,以及為7000多萬日活躍用戶提供可靠、低延遲體驗的需求。Roblox公司通過采用單元基礎設施在其數據中心內創建隔離的集群,通過跨單元的服務復制增強系統彈性。這種設置允許在不中斷服務的情況下停用非功能單元,有效地控制故障。單元基礎設施極大地提高了Roblox的系統可靠性,使該平臺能夠在全球范圍內提供始終在線的沉浸式體驗。該策略強調了基于單元的架構在管理大規模動態工作負載和在平臺擴展時保持高服務質量方面的有效性。
DoorDash、Slack和Roblox的這些例子說明了基于單元的架構在解決規模和可靠性挑戰方面的戰略價值。通過將工作負載隔離到獨立的單元中,這些公司實現了更高的可擴展性、容錯性和運營效率,展示了這種方法在支持動態、高需求服務方面的有效性。
基于單元的架構代表了一種在數字時代實現超可擴展性和彈性的組織的變革性方法。亞馬遜、Facebook、DoorDash和Slack等公司已經證明了它們通過將系統分割成獨立、自給自足的單元,在管理過度增長和確保不間斷服務方面的有效性。
這種架構策略促進了動態擴展和健壯的故障隔離,并要求仔細考慮增加的復雜性、資源分配和對專用運營工具的需求。隨著企業不斷滿足數字增長的需求,采用基于單元的架構成為一種戰略解決方案,可以在不斷發展的數字環境中保持運營完整性,并提供一致的用戶體驗。
本文借鑒了行業領導者和實踐者的集體知識和經驗,包括來自技術博客的見解,來自亞馬遜、Slack和Doordash等公司的案例研究,以及來自更廣泛的技術社區的貢獻。
原文標題:Cell-Based Architecture:Comprehensive Guide,作者:Shantanu Kumar
本文鏈接:http://www.tebozhan.com/showinfo-26-89553-0.html基于單元的架構綜合指南
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: OpenTelemetry 實踐指南:歷史、架構與基本概念
下一篇: 游戲加速器價格貴?迅雷出手了!