摘要:本文介紹如何將Spring Cloud應用從開源Consul無縫遷移至華為云Nacos,
本文分享自華為云社區《0停機遷移Nacos?Java位元組碼技術來幫忙》,作者:華為云PaaS服務小智,
1.市場遷移云環境痛點
市場微服務遷移云環境難主要有以下幾點場景:
? 微服務規模小,使用微服務引擎CSE成本太高,
? dubbo/Nacos微服務架構改造dubbo-servicecomb接入CSE需要投入的成本高,且社區dubbo-servicecomb未投入人力維護,可能遇到很多適配問題,
? 僅想使用CSE的治理能力,配置中心仍然使用Nacos,或者后期微服務整改后使用CSE,但是目前想使用Nacos過渡情況,
? 傾向使用Nacos作為配置中心使用,其它使用華為云的其它組件,如CCE、中間件等,
? 使用Nacos或者想用Nacos的客戶,專案整改比較緊急,調整框架遷移CSE時間不夠,
? 想使用Nacos作為配置中心,但是又不想去動原有的代碼邏輯,
2.概述
結合市場痛點,華為云提供托管版Nacos引擎,能幫助客戶免去運維Nacos集群的煩惱,更加聚焦業務本身的實作,同時華為云也提供專業的Nacos專家支持,本文介紹如何將Spring Cloud應用從開源Consul無縫遷移至華為云Nacos,
3.什么是Sermant Agent
Sermant Agent是一種基于JavaAgent的無代理服務網格技術,它利用JavaAgent來檢測主機應用程式,并具有增強的服務治理功能,以解決海量微服務架構中的服務治理問題,
Sermant Agent處于快速發展階段,當前已支持多種服務治理能力,包含流量治理、注冊、優雅上下線及動態配置能力,
4. 為什么使用Sermant Agent接入
4.1代碼零侵入,配置很簡單
相較于SDK方式接入,基于Sermant Agent的接入會更加快捷高效,配置簡單,且應用無需做任何代碼改造,僅需在服務啟動時附帶Sermant Agent即可動態接入到CSE的Nacos,
4.2支持多種治理能力
Sermant Agent默認集成流量治理能力,當前支持熔斷、限流、隔離倉以及重試治理能力,該能力可基于CSE配置中心進行配置與發布,
4.3支持多種注冊中心
Sermant Agent目前支持業內主流的注冊中心,已經支持了ServiceComb ServiceCenter、Naocs,Eureka、Zookeeper等正在開發中,
4.4支持應用不停機遷移
Sermant Agent支持服務的雙注冊,可根據配置中心下發的服務訂閱策略,動態修改當前服務的訂閱策略,并基于該能力幫助線上應用在業務不中斷的前提下完成服務遷移,
不僅如此,Sermant Agent提供優雅上下線能力,在服務重啟、上下線時提供保障,在保護服務的同時,規避服務下線時可能存在的流量丟失問題,
5.接入原理
當然,在說明原理之前,我們首先需要了解什么是Java Agent,
Java Agent是在JDK1.5之后引入的新特性,它支持JVM將位元組碼檔案讀入記憶體之后,JVM使用對應的位元組流在Java堆中生成一個Class物件之前,用戶可以對其位元組碼進行修改的能力,JVM使用修改之后的位元組碼進行Class物件的創建,從而實作Java應用的非代碼侵入的業務邏輯修改和替換,
Sermant Agent正是基于動態修改位元組碼的技術,在服務啟動時,動態增強原服務的注冊邏輯,那Sermant Agent是如何在不修改代碼的前提下接入Nacos呢?主要流程如下:
Sermant Agent接入Nacos的時序圖
包含以下6個步驟:
1. 首先服務攜帶Sermant Agent啟動;
2. 服務啟動時,針對服務執行位元組碼增強操作(基于Java Agent的位元組碼增強),主要針對注冊與配置兩塊,在步驟3-5體現;
3. 通過位元組碼增強,動態識別原應用的注冊中心;
4. 注入啟動配置,動態關閉原應用的注冊中心自動配置邏輯;
5. 隨后通過Spring的SpringFactory機制注入基于Spring Cloud實作的注冊Nacos的自動配置類,由Spring接管;
6. 當應用發起注冊時,會通過步驟5注入的注冊邏輯向CSE的Nacos發起注冊,最終完成接入,
6.簡單零代碼修改,輕松接入CSE的Nacos
接入場景分為虛機接入和容器接入,大家可以根據自身需求選擇合適的接入方式,
6.1虛機場景接入CSE的Nacos
虛機部署的應用可通過Sermant Agent接入到CSE的Nacos,
基于ECS將應用接入CSE的Nacos流程如下:
6.2容器場景接入CSE的Nacos
容器部署的應用可通過Sermant Injector自動掛載Sermant Agent,從而通過Sermant Agent接入到CSE的Nacos,
基于CCE將應用接入CSE的Nacos流程如下:
7.更多版本支持
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/539773.html
標籤:其他
上一篇:Unity中實作A*尋路
