摘要: 某公司專注於休閒小遊戲和APP開發,面對海外市場擴展的挑戰,通過選擇Sermant框架,實現了零侵入式服務治理,提升了監控、動態日誌等核心能力,顯著降低了改造和運維成本。
一、背景
某公司以自主研發為核心,專注於休閒小遊戲和應用APP的研發與運營,產品覆蓋App Store、Google Play、國內安卓APP商店等多個發行渠道。公司致力於為全球手機用户提供優質易用的移動遊戲產品,併為廣告業主提供精確的互聯網廣告營銷方案。
在公司成立初期,容器化、微服務等成熟技術方案尚未普及,而初創企業往往缺乏足夠的資源去構建複雜的基礎設施。小遊戲服務端的業務邏輯相對簡單,因此在架構設計上多采用單體模式或煙囱式架構,部署流程也較為直接。然而,隨着國內遊戲版號政策的收緊,眾多小遊戲廠商開始轉向海外市場,以尋求新的業務增長點。這一戰略轉變帶來了諸多挑戰:不同國家和地區的玩家需求差異顯著,業務複雜性急劇上升;同時,合規性要求、網絡環境多樣性、業務邏輯的複雜性以及部署難度等問題也成倍增加。正是在這一背景下,小遊戲廠商面臨着微服務架構改造的迫切需求,以應對全球化運營中的種種挑戰。
二、服務現狀
截至目前,該公司的中台服務體系已涵蓋了80多個核心服務,在業務高峯期,服務實例數量超過900個,單個服務的峯值QPS達到5K以上。同時,海外流量佔比超過50%,業務覆蓋範圍遍及全球170多個國家和地區。
在這樣的業務規模和技術背景下,該公司面臨着複雜多樣的基礎設施環境:自建機房、IDC機房、多家主流雲服務商的公有云資源,以及國內外多區域部署的網絡架構。這種混合雲和多區域部署的複雜性,對微服務架構提出了更高的要求。不僅需要確保服務的高可用性和穩定性,還要兼顧跨區域、跨平台的網絡優化和資源調度效率。因此,對微服務架構設計必須充分考量這些複雜的網絡環境和業務需求,以實現全球化部署和高效運維的目標。
三、微服務架構選型
在微服務架構演進的落地實踐中,該公司探索了多種架構升級的解決方案,包括 Nacos SDK 接入、Consul Agent 方案、Service Mesh 網格化架構,以及阿里開源的 Koupleless 模塊化方案。這些方案各具特色,在不同應用場景下有一定優勢,同時也存在明顯的侷限性。
3.1 SDK 方案(如 Nacos )
優勢:成熟度高,與Spring Boot等框架無縫集成,適合快速搭建基礎能力。
痛點:存量系統改造需業務方全量升級代碼、測試驗證,該企業80+服務為例,歷史系統(如老舊訂單模塊)改造需跨團隊協調,週期長達數月,且後續能力迭代仍需業務側同步適配,協調成本極高。
3.2 Agent 方案(如 Consul )
優勢:無代碼侵入,通過獨立進程提供服務發現等基礎功能。
痛點:無法深度集成業務邏輯(如基於業務參數的流量控制),且Agent進程需獨立維護,升級時易引發兼容性問題(如與JDK版本的衝突)。
3.3 Service Mesh 方案
優勢:治理能力與業務解耦,支持精細化流量管理。
挑戰:強依賴容器化技術,傳統非容器化系統(如物理機部署的支付服務)改
造成本陡增,且Sidecar代理增加鏈路延遲,對高併發場景性能影響顯著。
3.4 模塊化方案(如 Koupleless )
優勢:輕量化模塊拆分,降低新業務接入成本。
風險:技術生態尚未完善(如監控工具缺失),複雜業務場景下模塊依賴管理易失控,生產環境穩定性驗證案例不足。
四、為什麼選擇 Sermant
Sermant是一款創新的Proxyless Service Mesh框架,其設計理念和技術實現極具巧思。它基於Java Agent技術構建,與業務服務運行在同一個進程中,因此性能損耗極低,同時能夠實現對業務服務的高度控制,完全滿足各種個性化需求。首先,由於採用Java Agent的實現方式,Sermant對業務代碼做到了零侵入,業務方無需修改任何代碼即可接入。其次,框架的升級與業務服務完全解耦,維護和管理更加便捷,大幅降低了運維成本。
與業界常見的Java Agent框架相比,Sermant的獨特之處在於其完整的功能覆蓋。雖然許多Java Agent框架主要用於調用鏈追蹤、監控等可視化場景,但Sermant將其擴展到了全面的服務治理領域,包括流量管理、服務發現、監控、多活容災等核心功能。
五、基於Sermant實現的功能
基於Sermant框架層,該公司自主研發了一系列功能強大的插件,全面提升了服務治理的能力。這些插件覆蓋了監控、服務註冊與發現、配置中心、動態日誌管理、日誌染色等核心領域,構建了一個完整且高效的服務治理體系。
5.1 監控場景
通過集成Sermant和Prometheus,先實現了實時採集服務運行的關鍵指標,提供多維度的可視化分析,包括JVM監控、接口監控、服務調用外部監控、SQL執行監控等。例如SQL執行監控可以實時監控SQL語句的執行性能,包括執行時間、掃描行數、鎖等待等關鍵指標,識別慢查詢與潛在優化點,提升數據庫操作效率,降低系統負載。
基於Sermant技術,實現了線上服務的無縫監控接入,無需進行任何代碼改造或業務邏輯調整。該解決方案已成功應用於1000+線上服務節點,有效降低了服務治理過程中對業務系統穩定性的影響,顯著提升了系統的可觀測性和運維效率。通過非侵入式的服務治理方式,確保了業務系統的連續性和穩定性,為大規模微服務架構的監控管理提供了可靠的技術支撐。
5.2 動態日誌與日誌染色
基於Sermant,該公司開發了動態日誌與日誌染色核心能力,來解決企業實現高效運維的問題。其中動態日誌支持運行時動態調整日誌級別,無需重啓服務即可在高負載場景減少日誌輸出以降低性能損耗,或在排查問題時快速開啓詳細日誌,平衡系統性能與診斷效率;日誌染色通過為請求鏈路注入唯一標識,實現跨服務全鏈路日誌精準追蹤,複雜業務場景下問題定位效率顯著提升。兩項能力均通過Java Agent技術實現,業務零代碼侵入,分鐘級完成接入,避免傳統方案改造風險,同時支持策略實時生效,降低運維成本。
5.3 註冊中心
服務註冊與發現插件實現了服務實例的自動化管理和高效路由;企業的集中式網關架構可以藉助 SpringBoot 註冊插件實現去網關並接入 Nacos 等註冊中心,逐步向雲原生無代理服務網格架構演進,並具有如下優勢:
• 代碼無侵入,降低企業接入成本。
• 服務治理功能升級只需更新 Sermant,業務應用不用重新出包,降低升級成本。
• 微服務可以灰度接入,保證架構升級的平滑演進,如下圖所示。
5.4 配置中心
基於Sermant實現了優先級加載、灰度發佈和動態配置的能力。通過靈活的優先級管理,能夠在複雜環境中精準控制配置的加載順序,避免配置衝突,提升系統的可維護性;在可控範圍內驗證配置變更的效果,確保業務平滑過渡,最大限度減少對線上環境的影響。通過動態配置能力,能夠快速適應業務需求變化,同時確保系統穩定性,為業務的持續迭代與優化提供堅實的技術保障。
六、落地實施
· 全面落地應用:已實現全量接入,覆蓋 80+ 服務 和 900+ 實例,形成了穩定的應用生態。
· 成本顯著優化:有效節省 20% 的運維成本 和業務溝通成本,提升了整體協同效率。
· 插件化能力輸出:公司公共組件通過 插件化 形式提供,減少了業務側頻繁進行 SDK 升級的工作量,大幅降低了升級推動的難度與成本。
七、展望
基於Sermant框架,自主研發插件,期望解決多數據中心和跨區域服務發現的複雜問題,實現高效的跨區域網絡訪問。具體而言,插件通過智能路由和負載均衡機制,能夠自動識別並選擇最優的數據中心或區域節點,確保服務調用的高效性與穩定性。
同時,為了進一步提升系統性能,期望通過攔截請求的方式,將同步調用轉化為異步化處理,並結合虛擬線程技術,降低跨區域訪問的延遲,提升系統的併發處理能力。
Sermant的實踐充分展現了字節碼增強技術在微服務治理領域的巨大潛力。通過零侵入、高性能的技術特性,該公司成功解決了傳統微服務架構中的諸多痛點,為業務提供了更加靈活、高效的治理能力。Sermant開源社區和行業夥伴持續深入合作,分享實踐經驗,共同探索字節碼增強技術的創新應用,致力於微服務治理領域的持續發展與突破。
Sermant 作為專注於服務治理領域的字節碼增強框架,致力於提供高性能、可擴展、易接入、功能豐富的服務治理體驗,並會在每個版本中做好性能、功能、體驗的看護,廣泛歡迎大家的加入。
• Sermant官網:https://sermant.io
• GitHub倉庫地址:https://github.com/sermant-io/Sermant
• 掃碼加入Sermant社區交流羣