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

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

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

SOA/ESB架構(gòu)升級(jí)之路:從微服務(wù)到ServiceMesh,再到Sermant

IT科技蘇辭 ? 來(lái)源: IT科技蘇辭 ? 作者: IT科技蘇辭 ? 2023-04-17 15:17 ? 次閱讀

SOA/ESB架構(gòu)是一種常見(jiàn)的企業(yè)級(jí)應(yīng)用架構(gòu)模式,它將應(yīng)用分為多個(gè)服務(wù),通過(guò)ESB(企業(yè)服務(wù)總線)來(lái)進(jìn)行服務(wù)間的通信和集成。SOA/ESB架構(gòu)的優(yōu)點(diǎn)是可以實(shí)現(xiàn)服務(wù)的復(fù)用、隔離和安全,但是也存在一些問(wèn)題,如:

- ESB本身是一個(gè)單點(diǎn)故障,如果ESB出現(xiàn)問(wèn)題,會(huì)影響所有的服務(wù)

- ESB的性能和可擴(kuò)展性受限于其硬件和軟件資源,如果服務(wù)數(shù)量和流量增加,ESB可能會(huì)成為瓶頸

- ESB的管理和維護(hù)成本較高,需要專業(yè)的團(tuán)隊(duì)來(lái)進(jìn)行配置、監(jiān)控和調(diào)優(yōu)

- ESB的功能和協(xié)議可能不夠靈活和標(biāo)準(zhǔn)化,導(dǎo)致服務(wù)間的耦合度較高

隨著云計(jì)算和容器技術(shù)的發(fā)展,SOA/ESB架構(gòu)模式在目前公有云上的典型參考架構(gòu)是將應(yīng)用部署在Kubernetes中,通過(guò)Ingress來(lái)暴露外部訪問(wèn)入口,通過(guò)Service來(lái)定義內(nèi)部服務(wù)發(fā)現(xiàn)和負(fù)載均衡,通過(guò)ConfigMap和Secret來(lái)管理配置和敏感信息。這種架構(gòu)模式相比于傳統(tǒng)的SOA/ESB架構(gòu),有以下優(yōu)勢(shì):

- Kubernetes提供了高可用、彈性伸縮、自愈等特性,可以保證應(yīng)用的穩(wěn)定性和可靠性

- Kubernetes支持多種云廠商和平臺(tái),可以實(shí)現(xiàn)應(yīng)用的跨云部署和遷移

- Kubernetes提供了豐富的生態(tài)系統(tǒng),可以集成各種開(kāi)源或商業(yè)的工具和服務(wù),如監(jiān)控、日志、鏈路追蹤等

然而,SOA/ESB架構(gòu)雖然在隔離性、安全性上存在一定優(yōu)點(diǎn),但是短板也非常明顯。首先,應(yīng)用之間仍然需要通過(guò)ESB來(lái)進(jìn)行通信和集成,這會(huì)增加網(wǎng)絡(luò)延遲和復(fù)雜度,也會(huì)降低應(yīng)用的自治性和靈活性。其次,ESB仍然是一個(gè)單點(diǎn)故障和性能瓶頸,如果ESB出現(xiàn)問(wèn)題或者無(wú)法滿足流量需求,會(huì)影響整個(gè)系統(tǒng)的可用性和效率。最后,ESB仍然需要專業(yè)的團(tuán)隊(duì)來(lái)進(jìn)行管理和維護(hù),這會(huì)增加運(yùn)維成本和風(fēng)險(xiǎn)。

為了解決這些問(wèn)題,許多企業(yè)開(kāi)始嘗試對(duì)SOA/ESB架構(gòu)進(jìn)行改造,從微服務(wù)到ServiceMesh,再到Sermant。

微服務(wù)是一種輕量級(jí)的服務(wù)架構(gòu)模式,它將應(yīng)用拆分為多個(gè)小而獨(dú)立的服務(wù),每個(gè)服務(wù)負(fù)責(zé)一個(gè)單一的業(yè)務(wù)功能,并且通過(guò)輕量級(jí)的協(xié)議(如HTTP、REST、gRPC等)來(lái)進(jìn)行通信。微服務(wù)的優(yōu)點(diǎn)是可以實(shí)現(xiàn)服務(wù)的高內(nèi)聚、低耦合、快速迭代、獨(dú)立部署等。但是微服務(wù)也帶來(lái)了一些挑戰(zhàn),如:

- 服務(wù)數(shù)量增加導(dǎo)致管理復(fù)雜度增加

- 服務(wù)間通信需要處理網(wǎng)絡(luò)不可靠、超時(shí)重試、負(fù)載均衡等問(wèn)題

- 服務(wù)間需要實(shí)現(xiàn)統(tǒng)一的認(rèn)證、授權(quán)、限流、熔斷等功能

- 服務(wù)間需要實(shí)現(xiàn)跨服務(wù)的監(jiān)控、日志、鏈路追蹤等功能

為了解決這些挑戰(zhàn),ServiceMesh應(yīng)運(yùn)而生。ServiceMesh是一種基于代理模式的微服務(wù)架構(gòu),它將服務(wù)間的通信、治理、監(jiān)控等功能從應(yīng)用代碼中剝離出來(lái),交由一個(gè)獨(dú)立的代理(如Envoy)來(lái)處理。ServiceMesh的優(yōu)點(diǎn)是可以實(shí)現(xiàn)服務(wù)的自治性、靈活性、可觀察性和安全性,同時(shí)降低了應(yīng)用開(kāi)發(fā)和運(yùn)維的復(fù)雜度。但是ServiceMesh也存在一些問(wèn)題,如:

- 引入了額外的代理,可能會(huì)增加網(wǎng)絡(luò)延遲和資源消耗

- 需要對(duì)應(yīng)用進(jìn)行一定程度的改造,以適應(yīng)ServiceMesh的通信和治理模式

- 需要學(xué)習(xí)和掌握新的技術(shù)和工具,如Istio、Linkerd等

Sermant是一種基于Java Agent的服務(wù)治理框架,它通過(guò)字節(jié)碼增強(qiáng)技術(shù)來(lái)實(shí)現(xiàn)服務(wù)的動(dòng)態(tài)注入和治理。Sermant的優(yōu)點(diǎn)是可以在不改變應(yīng)用代碼的前提下,實(shí)現(xiàn)服務(wù)的注冊(cè)發(fā)現(xiàn)、負(fù)載均衡、熔斷降級(jí)、認(rèn)證授權(quán)等功能,同時(shí)避免了ServiceMesh中代理帶來(lái)的性能損耗。Sermant的核心思路如下:

1. 使用Java Agent來(lái)動(dòng)態(tài)注入服務(wù)治理邏輯,無(wú)需修改應(yīng)用代碼

2. 采用AOP(面向切面編程)方式實(shí)現(xiàn)服務(wù)的攔截和增強(qiáng),避免了sidecar模式的性能損耗

3. 提供靈活的配置和擴(kuò)展機(jī)制,支持多種服務(wù)治理策略和插件

采用Sermant對(duì)SOA/ESB架構(gòu)進(jìn)行升級(jí)的步驟如下:

1. 準(zhǔn)備工作:確認(rèn)應(yīng)用支持Sermant框架,安裝Sermant Injector

2. 發(fā)布新版本的應(yīng)用,攜帶Sermant Java Agent

3. 在配置中心,將應(yīng)用加入白名單,實(shí)現(xiàn)灰度發(fā)布

4. 逐步將其他應(yīng)用升級(jí)為攜帶Sermant Java Agent的版本,加入白名單

5. 刪除應(yīng)用的舊版本,完成升級(jí)

總之,SOA/ESB架構(gòu)升級(jí)之路從微服務(wù)到ServiceMesh,再到Sermant,是一種逐步演進(jìn)和優(yōu)化的過(guò)程。通過(guò)采用Sermant框架,企業(yè)和組織可以更快速地實(shí)現(xiàn)云原生的微服務(wù)架構(gòu)改造,提高業(yè)務(wù)運(yùn)營(yíng)效率和降低成本。同時(shí),Sermant框架在性能、靈活性和易用性方面具有較大的優(yōu)勢(shì),值得關(guān)注和嘗試。

當(dāng)前Sermant已在華為云云服務(wù)CSE中被集成,用戶可以在華為云CSE云服務(wù)中使用相關(guān)功能。

審核編輯黃宇


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

    關(guān)注

    1

    文章

    281

    瀏覽量

    27386
  • ESB
    ESB
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    8841
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2387

    瀏覽量

    17202
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    架構(gòu)與設(shè)計(jì) 常見(jiàn)微服務(wù)分層架構(gòu)的區(qū)別和落地實(shí)踐

    前言 強(qiáng)調(diào)內(nèi)外隔離的六邊形架構(gòu),逐漸發(fā)展衍生出的層層遞進(jìn)、注重領(lǐng)域模型的洋蔥架構(gòu),再到和DDD完美契合的整潔架構(gòu)。
    的頭像 發(fā)表于 10-22 15:34 ?52次閱讀
    <b class='flag-5'>架構(gòu)</b>與設(shè)計(jì) 常見(jiàn)<b class='flag-5'>微服務(wù)</b>分層<b class='flag-5'>架構(gòu)</b>的區(qū)別和落地實(shí)踐

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

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

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

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

    Proxyless的多活流量和微服務(wù)治理

    1. 引言 1.1 項(xiàng)目的背景及意義 在當(dāng)今的微服務(wù)架構(gòu)中,應(yīng)用程序通常被拆分成多個(gè)獨(dú)立的服務(wù),這些服務(wù)通過(guò)網(wǎng)絡(luò)進(jìn)行通信。這種架構(gòu)的優(yōu)勢(shì)在于
    的頭像 發(fā)表于 08-28 16:54 ?1489次閱讀
    Proxyless的多活流量和<b class='flag-5'>微服務(wù)</b>治理

    【算能RADXA微服務(wù)器試用體驗(yàn)】Radxa Fogwise 1684X Mini 規(guī)格

    通過(guò)網(wǎng)絡(luò)可以了解,算能RADXA微服務(wù)器的具體規(guī)格: 處理器:BM1684X 算力:高達(dá)32Tops INT8峰值算力 內(nèi)存:16GB LPDDR4X 內(nèi)存 存儲(chǔ):64GB eMMC 編程框架
    發(fā)表于 02-28 11:21

    解析 Sermant 熱插拔能力:服務(wù)運(yùn)行時(shí)動(dòng)態(tài)掛載 JavaAgent 和插件

    一、概述 Sermant 是基于 Java 字節(jié)碼增強(qiáng)技術(shù)的無(wú)代理服務(wù)網(wǎng)格,其利用 Java 字節(jié)碼增強(qiáng)技術(shù),為宿主應(yīng)用程序提供服務(wù)治理功能,以解決大規(guī)模微服務(wù)場(chǎng)景中的
    的頭像 發(fā)表于 02-18 10:09 ?817次閱讀
    解析 <b class='flag-5'>Sermant</b> 熱插拔能力:<b class='flag-5'>服務(wù)</b>運(yùn)行時(shí)動(dòng)態(tài)掛載 JavaAgent 和插件

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

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

    如何搭建微服務(wù)架構(gòu)的全局圖景

    如果一直保持共用數(shù)據(jù)庫(kù)的模式,則整個(gè)架構(gòu)會(huì)越來(lái)越僵化,失去了微服務(wù)架構(gòu)的意義。因此小明和小紅一鼓作氣,把數(shù)據(jù)庫(kù)也拆分了。所有持久化層相互隔離,由各個(gè)服務(wù)自己負(fù)責(zé)。另外,為了提高系統(tǒng)的實(shí)
    的頭像 發(fā)表于 12-27 15:16 ?436次閱讀
    如何搭建<b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>的全局圖景

    如何構(gòu)建彈性、高可用的微服務(wù)?

    基于微服務(wù)的應(yīng)用程序可實(shí)現(xiàn)戰(zhàn)略性數(shù)字轉(zhuǎn)型和云遷移計(jì)劃,對(duì)于開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),這種架構(gòu)十分重要。那么,如何來(lái)構(gòu)建彈性、高可用的微服務(wù)呢?RedisEnterprise給出了一個(gè)完美的方案。文況速覽
    的頭像 發(fā)表于 11-26 08:06 ?416次閱讀
    如何構(gòu)建彈性、高可用的<b class='flag-5'>微服務(wù)</b>?

    設(shè)計(jì)微服務(wù)架構(gòu)的原則

    微服務(wù)是一種軟件架構(gòu)策略,有利于改善整體性能和可擴(kuò)展性。你可能會(huì)想,我的團(tuán)隊(duì)需不需要采用微服務(wù),設(shè)計(jì)微服務(wù)架構(gòu)有哪些原則?本文會(huì)給你一些靈感
    的頭像 發(fā)表于 11-26 08:05 ?501次閱讀
    設(shè)計(jì)<b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>的原則

    docker微服務(wù)架構(gòu)實(shí)戰(zhàn)

    隨著云計(jì)算和容器化技術(shù)的快速發(fā)展,微服務(wù)架構(gòu)在軟件開(kāi)發(fā)領(lǐng)域中變得越來(lái)越流行。微服務(wù)架構(gòu)將一個(gè)大型的軟件應(yīng)用拆分成多個(gè)小型的、獨(dú)立部署的服務(wù),
    的頭像 發(fā)表于 11-23 09:26 ?578次閱讀

    springcloud微服務(wù)架構(gòu)

    Spring Cloud是一個(gè)開(kāi)源的微服務(wù)架構(gòu)框架,它提供了一系列工具和組件,用于構(gòu)建和管理分布式系統(tǒng)中的微服務(wù)。它基于Spring框架,旨在通過(guò)簡(jiǎn)化開(kāi)發(fā)過(guò)程和降低系統(tǒng)復(fù)雜性來(lái)幫助開(kāi)發(fā)人員構(gòu)建彈性
    的頭像 發(fā)表于 11-23 09:24 ?1065次閱讀

    Flask如何升級(jí)到 Quart 應(yīng)用程序

    本文詳細(xì)介紹了典型的生產(chǎn)環(huán)境的 CRUD 應(yīng)用程序 Flask Quart 的轉(zhuǎn)換,并展示相關(guān)的性能改進(jìn)優(yōu)勢(shì)。 將這個(gè) Flask-pyscopg2 應(yīng)用程序升級(jí)到 Quart-asyncpg
    的頭像 發(fā)表于 11-01 16:23 ?615次閱讀
    Flask如何<b class='flag-5'>升級(jí)到</b> Quart 應(yīng)用程序

    深入探討微服務(wù)和事件驅(qū)動(dòng)架構(gòu)區(qū)別

    微服務(wù)不同,事件驅(qū)動(dòng)架構(gòu)不要求強(qiáng)制的粒度。事件處理器可以有不同的規(guī)模,可以是響應(yīng)特定事件的小型功能,也可以是處理多個(gè)事件的大型子系統(tǒng)。在物流系統(tǒng)中,事件驅(qū)動(dòng)架構(gòu)可以包括用于包裹跟蹤更新的小型事件處理器,也可以有更大的子系統(tǒng)用于
    的頭像 發(fā)表于 10-30 15:06 ?500次閱讀