0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

華為云微服務(wù)引擎0停機(jī)遷移Nacos?它是這樣做的

科技之光2 ? 來源:科技之光2 ? 作者:科技之光2 ? 2022-12-29 20:01 ? 次閱讀

華為云微服務(wù)引擎| 0停機(jī)遷移Nacos? “它”是這樣做的

遷移云環(huán)境****場(chǎng)景

? 微服務(wù)規(guī)模小,使用微服務(wù)引擎CSE成本太高。

? dubbo/Nacos微服務(wù)架構(gòu)改造dubbo-servicecomb接入CSE需要投入的成本高,且社區(qū)dubbo-servicecomb未投入人力維護(hù),可能遇到很多適配問題。

? 僅想使用CSE的治理能力,配置中心仍然使用Nacos,或者后期微服務(wù)整改后使用CSE,但是目前想使用Nacos過渡情況。

? 傾向使用Nacos作為配置中心使用,其它使用華為云的其它組件,如CCE、中間件等。

? 使用Nacos或者想用Nacos的客戶,項(xiàng)目整改比較緊急,調(diào)整框架遷移CSE時(shí)間不夠。

? 想使用Nacos作為配置中心,但是又不想去動(dòng)原有的代碼邏輯。

概述

結(jié)合市場(chǎng)痛點(diǎn),華為云提供托管版Nacos引擎,能幫助客戶免去運(yùn)維Nacos集群的煩惱,更加聚焦業(yè)務(wù)本身的實(shí)現(xiàn),同時(shí)華為云也提供專業(yè)的Nacos專家支持。本文介紹如何將Spring Cloud應(yīng)用從開源Consul無縫遷移至華為云Nacos。

什么是Sermant Agent

Sermant Agent是一種基于JavaAgent的無代理服務(wù)網(wǎng)格技術(shù)。它利用JavaAgent來檢測(cè)主機(jī)應(yīng)用程序,并具有增強(qiáng)的服務(wù)治理功能,以解決海量微服務(wù)架構(gòu)中的服務(wù)治理問題。

Sermant Agent處于快速發(fā)展階段,當(dāng)前已支持多種服務(wù)治理能力,包含流量治理、注冊(cè)、優(yōu)雅上下線及動(dòng)態(tài)配置能力。

為什么使用Sermant Agent接入

代碼零侵入,配置很簡單

相較于SDK方式接入,基于Sermant Agent的接入會(huì)更加快捷高效,配置簡單,且應(yīng)用無需做任何代碼改造,僅需在服務(wù)啟動(dòng)時(shí)附帶Sermant Agent即可動(dòng)態(tài)接入到CSE的Nacos。

支****持多種治理能力

Sermant Agent默認(rèn)集成流量治理能力,當(dāng)前支持熔斷、限流、隔離倉以及重試治理能力,該能力可基于CSE配置中心進(jìn)行配置與發(fā)布。

支持多種注冊(cè)中心

Sermant Agent目前支持業(yè)內(nèi)主流的注冊(cè)中心,已經(jīng)支持了ServiceComb ServiceCenter、Naocs,Eureka、Zookeeper等正在開發(fā)中。

支持應(yīng)用不停機(jī)遷移

Sermant Agent支持服務(wù)的雙注冊(cè),可根據(jù)配置中心下發(fā)的服務(wù)訂閱策略,動(dòng)態(tài)修改當(dāng)前服務(wù)的訂閱策略,并基于該能力幫助線上應(yīng)用在業(yè)務(wù)不中斷的前提下完成服務(wù)遷移。

不僅如此,Sermant Agent提供優(yōu)雅上下線能力,在服務(wù)重啟、上下線時(shí)提供保障,在保護(hù)服務(wù)的同時(shí),規(guī)避服務(wù)下線時(shí)可能存在的流量丟失問題。

接入原理

當(dāng)然,在說明原理之前,我們首先需要了解什么是Java Agent。

Java Agent是在JDK1.5之后引入的新特性,它支持JVM將字節(jié)碼文件讀入內(nèi)存之后,JVM使用對(duì)應(yīng)的字節(jié)流在Java堆中生成一個(gè)Class對(duì)象之前,用戶可以對(duì)其字節(jié)碼進(jìn)行修改的能力,JVM使用修改之后的字節(jié)碼進(jìn)行Class對(duì)象的創(chuàng)建,從而實(shí)現(xiàn)Java應(yīng)用的非代碼侵入的業(yè)務(wù)邏輯修改和替換。

Sermant Agent正是基于動(dòng)態(tài)修改字節(jié)碼的技術(shù),在服務(wù)啟動(dòng)時(shí),動(dòng)態(tài)增強(qiáng)原服務(wù)的注冊(cè)邏輯。那Sermant Agent是如何在不修改代碼的前提下接入Nacos呢?主要流程如下:

包含以下6個(gè)步驟:

  1. 首先服務(wù)攜帶Sermant Agent啟動(dòng);
  2. 服務(wù)啟動(dòng)時(shí),針對(duì)服務(wù)執(zhí)行字節(jié)碼增強(qiáng)操作(基于Java Agent的字節(jié)碼增強(qiáng)),主要針對(duì)注冊(cè)與配置兩塊,在步驟3-5體現(xiàn);
  3. 通過字節(jié)碼增強(qiáng),動(dòng)態(tài)識(shí)別原應(yīng)用的注冊(cè)中心;
  4. 注入啟動(dòng)配置,動(dòng)態(tài)關(guān)閉原應(yīng)用的注冊(cè)中心自動(dòng)配置邏輯;
  5. 隨后通過Spring的SpringFactory機(jī)制注入基于Spring Cloud實(shí)現(xiàn)的注冊(cè)Nacos的自動(dòng)配置類,由Spring接管;
  6. 當(dāng)應(yīng)用發(fā)起注冊(cè)時(shí),會(huì)通過步驟5注入的注冊(cè)邏輯向CSE的Nacos發(fā)起注冊(cè),最終完成接入。

簡單零代碼修改,輕松接入CSE的Nacos

接入場(chǎng)景分為虛機(jī)接入和容器接入,大家可以根據(jù)自身需求選擇合適的接入方式。

虛機(jī)場(chǎng)景接入CSE的Nacos

虛機(jī)部署的應(yīng)用可通過Sermant Agent接入到CSE的Nacos。

基于ECS將應(yīng)用接入CSE的Nacos流程

容器場(chǎng)景接入CSE的Nacos

容器部署的應(yīng)用可通過Sermant Injector自動(dòng)掛載Sermant Agent,從而通過Sermant Agent接入到CSE的Nacos。

基于CCE將應(yīng)用接入CSE的Nacos流程

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2491

    瀏覽量

    17427
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    華為 Flexus 服務(wù)器 X 實(shí)例的購買及使用體驗(yàn)

    價(jià)比服務(wù)。其中,華為 Flexus 服務(wù)器 X 實(shí)例是一款性能強(qiáng)勁的
    的頭像 發(fā)表于 12-24 17:26 ?132次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> Flexus <b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>器 X 實(shí)例的購買及使用體驗(yàn)

    寶藏級(jí)微服務(wù)架構(gòu)工具合集

    大量數(shù)據(jù)流。這些工具各有特色,可根據(jù)具體需求和場(chǎng)景選擇合適的來構(gòu)建和管理微服務(wù)架構(gòu)。以下是UU小編整理的幾個(gè)熱門的微服務(wù)架構(gòu)工具及其概括性介紹:
    的頭像 發(fā)表于 12-21 16:33 ?140次閱讀

    NVIDIA NIM微服務(wù)登陸亞馬遜科技

    經(jīng)過優(yōu)化的 NIM 微服務(wù)現(xiàn)可在 Amazon Bedrock Marketplace、SageMaker JumpStart 和 AWS Marketplace 上獲取,用于各種 NVIDIA 和生態(tài)系統(tǒng)模型。
    的頭像 發(fā)表于 12-06 13:33 ?207次閱讀

    計(jì)算遷移的步驟與注意事項(xiàng)

    計(jì)算遷移是一個(gè)復(fù)雜且關(guān)鍵的過程,需要細(xì)致的規(guī)劃和執(zhí)行。以下是計(jì)算遷移的一般步驟及注意事項(xiàng): 一、計(jì)算
    的頭像 發(fā)表于 10-24 09:20 ?585次閱讀

    微服務(wù)架構(gòu)與容器的關(guān)系與區(qū)別

    微服務(wù)架構(gòu)與容器密切相關(guān)又有所區(qū)別。微服務(wù)將大型應(yīng)用拆分為小型、獨(dú)立的服務(wù),而容器基于容器技術(shù),為
    的頭像 發(fā)表于 10-21 17:28 ?226次閱讀

    容器服務(wù)引擎是什么意思?

    容器服務(wù)引擎是什么意思?容器服務(wù)引擎是一種基于云原生架構(gòu)的容器編排工具,能夠幫助用戶快速構(gòu)建
    的頭像 發(fā)表于 10-19 17:08 ?179次閱讀

    容器引擎屬于saas層服務(wù)嗎?二者是什么關(guān)系

    容器引擎屬于SaaS層服務(wù)容器引擎通常被視為一種平臺(tái)即服務(wù)(PaaS)的變體或擴(kuò)展,雖然它
    的頭像 發(fā)表于 10-12 10:57 ?222次閱讀

    入門級(jí)攻略:如何容器化部署微服務(wù)

    第一步理解容器化基礎(chǔ),第二步創(chuàng)建Dockerfile,第三步構(gòu)建推送鏡像,第四步部署微服務(wù),第五步管理微服務(wù)、第六步優(yōu)化更新。容器化部署微服務(wù)是現(xiàn)代軟件開發(fā)中的一種高效方法,可提供良好的可移植性、可擴(kuò)展性和管理性。容器化部署
    的頭像 發(fā)表于 10-09 10:08 ?156次閱讀

    容器服務(wù)引擎是什么?如何使用

    容器服務(wù)引擎(CloudContainerEngine,簡稱CCE),是一個(gè)企業(yè)級(jí)的Kubernetes集群托管服務(wù),提供高度可擴(kuò)展、高性能的云原生應(yīng)用部署和管理方案。容器
    的頭像 發(fā)表于 09-30 10:17 ?192次閱讀

    IT資源遷移服務(wù)器的關(guān)鍵因素

    隨著計(jì)算技術(shù)的不斷成熟和普及,越來越多的企業(yè)選擇將他們的IT資源遷移服務(wù)器上。這種轉(zhuǎn)變不僅可以降低成本、提高靈活性,還可以提升安全性和效率。本文將深入探討將IT資源
    的頭像 發(fā)表于 09-18 11:21 ?325次閱讀

    龍智Atlassian ITSM解決方案、遷移解決方案詳解:高速ITSM實(shí)施+端到端的遷移服務(wù)

    隨著計(jì)算技術(shù)的不斷成熟與普及,企業(yè)對(duì)于高效、靈活的IT服務(wù)管理(ITSM)與無縫的遷移解決方案的需求日益增長。如何有效管理復(fù)雜的IT環(huán)境,加速業(yè)務(wù)上
    的頭像 發(fā)表于 09-04 09:41 ?282次閱讀
    龍智Atlassian ITSM解決方案、<b class='flag-5'>云</b><b class='flag-5'>遷移</b>解決方案詳解:高速ITSM實(shí)施+端到端的<b class='flag-5'>云</b><b class='flag-5'>遷移</b><b class='flag-5'>服務(wù)</b>

    重塑服務(wù)華為 Flexus X 實(shí)例破解服務(wù)傳統(tǒng)難題

    在數(shù)字化轉(zhuǎn)型的大潮中,計(jì)算不僅是企業(yè)加速變革的引擎,更是其增強(qiáng)競(jìng)爭力的關(guān)鍵。企業(yè)通過“上”能夠迅速響應(yīng)市場(chǎng)變化,從而在激烈的商業(yè)競(jìng)爭中占據(jù)有利地位。然而,隨著企業(yè)對(duì)
    的頭像 發(fā)表于 08-12 09:54 ?580次閱讀
    重塑<b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>,<b class='flag-5'>華為</b><b class='flag-5'>云</b> Flexus X 實(shí)例破解<b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>傳統(tǒng)難題

    如何使用服務(wù)器刷寫自定義固件?

    并不清楚。 我們發(fā)現(xiàn)服務(wù)器位于 iot.espressif.cn 地址,并且該模塊正在那里發(fā)送請(qǐng)求。然后通過互聯(lián)網(wǎng)將固件發(fā)送到模塊。 我們想嘗試一下它是否可以從我們的本地服務(wù)器下
    發(fā)表于 07-15 08:23

    Java微服務(wù)隨機(jī)掉線排查過程簡析

    我們的業(yè)務(wù)共使用 11 臺(tái)(阿里服務(wù)器,使用 SpringcloudAlibaba 構(gòu)建微服務(wù)集群, 共計(jì) 60 個(gè)微服務(wù), 全部注冊(cè)在同一個(gè)
    的頭像 發(fā)表于 01-13 17:41 ?942次閱讀
    Java<b class='flag-5'>微服務(wù)</b>隨機(jī)掉線排查過程簡析

    游戲公司不使用微服務(wù)架構(gòu)的原因

    微服務(wù)基本只有 request/response 的模式。不了 streaming?微服務(wù)通常要求應(yīng)用是無狀態(tài)的才能做到水平擴(kuò)展。streaming 本身就是加入了狀態(tài)
    的頭像 發(fā)表于 12-29 11:18 ?443次閱讀