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)功能。
審核編輯黃宇
-
SOA
+關(guān)注
關(guān)注
1文章
281瀏覽量
27386 -
ESB
+關(guān)注
關(guān)注
0文章
8瀏覽量
8841 -
華為云
+關(guān)注
關(guān)注
3文章
2387瀏覽量
17202
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論