首页 > 其他分享 >SOA/ESB架构升级之路:从微服务到ServiceMesh,再到Sermant

SOA/ESB架构升级之路:从微服务到ServiceMesh,再到Sermant

时间:2023-04-17 15:37:08浏览次数:37  
标签:SOA 架构 服务 ESB 应用 ServiceMesh Sermant


SOA/ESB架构是一种常见的企业级应用架构模式,它将应用分为多个服务,通过ESB(企业服务总线)来进行服务间的通信和集成。SOA/ESB架构的优点是可以实现服务的复用、隔离和安全,但是也存在一些问题,如:

  • ESB本身是一个单点故障,如果ESB出现问题,会影响所有的服务
  • ESB的性能和可扩展性受限于其硬件和软件资源,如果服务数量和流量增加,ESB可能会成为瓶颈
  • ESB的管理和维护成本较高,需要专业的团队来进行配置、监控和调优
  • ESB的功能和协议可能不够灵活和标准化,导致服务间的耦合度较高

随着云计算和容器技术的发展,SOA/ESB架构模式在目前公有云上的典型参考架构是将应用部署在Kubernetes中,通过Ingress来暴露外部访问入口,通过Service来定义内部服务发现和负载均衡,通过ConfigMap和Secret来管理配置和敏感信息。这种架构模式相比于传统的SOA/ESB架构,有以下优势:

  • Kubernetes提供了高可用、弹性伸缩、自愈等特性,可以保证应用的稳定性和可靠性
  • Kubernetes支持多种云厂商和平台,可以实现应用的跨云部署和迁移
  • Kubernetes提供了丰富的生态系统,可以集成各种开源或商业的工具和服务,如监控、日志、链路追踪等

然而,SOA/ESB架构虽然在隔离性、安全性上存在一定优点,但是短板也非常明显。首先,应用之间仍然需要通过ESB来进行通信和集成,这会增加网络延迟和复杂度,也会降低应用的自治性和灵活性。其次,ESB仍然是一个单点故障和性能瓶颈,如果ESB出现问题或者无法满足流量需求,会影响整个系统的可用性和效率。最后,ESB仍然需要专业的团队来进行管理和维护,这会增加运维成本和风险。

为了解决这些问题,许多企业开始尝试对SOA/ESB架构进行改造,从微服务到ServiceMesh,再到Sermant。

微服务是一种轻量级的服务架构模式,它将应用拆分为多个小而独立的服务,每个服务负责一个单一的业务功能,并且通过轻量级的协议(如HTTP、REST、gRPC等)来进行通信。微服务的优点是可以实现服务的高内聚、低耦合、快速迭代、独立部署等。但是微服务也带来了一些挑战,如:

  • 服务数量增加导致管理复杂度增加
  • 服务间通信需要处理网络不可靠、超时重试、负载均衡等问题
  • 服务间需要实现统一的认证、授权、限流、熔断等功能
  • 服务间需要实现跨服务的监控、日志、链路追踪等功能

为了解决这些挑战,ServiceMesh应运而生。ServiceMesh是一种基于代理模式的微服务架构,它将服务间的通信、治理、监控等功能从应用代码中剥离出来,交由一个独立的代理(如Envoy)来处理。ServiceMesh的优点是可以实现服务的自治性、灵活性、可观察性和安全性,同时降低了应用开发和运维的复杂度。但是ServiceMesh也存在一些问题,如:

  • 引入了额外的代理,可能会增加网络延迟和资源消耗
  • 需要对应用进行一定程度的改造,以适应ServiceMesh的通信和治理模式
  • 需要学习和掌握新的技术和工具,如Istio、Linkerd等

Sermant是一种基于Java Agent的服务治理框架,它通过字节码增强技术来实现服务的动态注入和治理。Sermant的优点是可以在不改变应用代码的前提下,实现服务的注册发现、负载均衡、熔断降级、认证授权等功能,同时避免了ServiceMesh中代理带来的性能损耗。Sermant的核心思路如下:

  1. 使用Java Agent来动态注入服务治理逻辑,无需修改应用代码
  2. 采用AOP(面向切面编程)方式实现服务的拦截和增强,避免了sidecar模式的性能损耗
  3. 提供灵活的配置和扩展机制,支持多种服务治理策略和插件

采用Sermant对SOA/ESB架构进行升级的步骤如下:

  1. 准备工作:确认应用支持Sermant框架,安装Sermant Injector
  2. 发布新版本的应用,携带Sermant Java Agent
  3. 在配置中心,将应用加入白名单,实现灰度发布
  4. 逐步将其他应用升级为携带Sermant Java Agent的版本,加入白名单
  5. 删除应用的旧版本,完成升级

总之,SOA/ESB架构升级之路从微服务到ServiceMesh,再到Sermant,是一种逐步演进和优化的过程。通过采用Sermant框架,企业和组织可以更快速地实现云原生的微服务架构改造,提高业务运营效率和降低成本。同时,Sermant框架在性能、灵活性和易用性方面具有较大的优势,值得关注和尝试。

当前Sermant已在华为云云服务CSE中被集成,用户可以在华为云CSE云服务中使用相关功能。

标签:SOA,架构,服务,ESB,应用,ServiceMesh,Sermant
From: https://blog.51cto.com/u_15801904/6195273

相关文章

  • 一篇文章了解SoapUI接口测试的全部流程
    SoapUI接口测试介绍相信很多人使用过SoapUI来做接口测试,SoapUI是一款很出色的API测试工具准备接口我们想要测试一个接口,那我们就得先准备好这个接口,方便后续的测试~所以我这里准备了一些接口,用来测试:并且我们在/pet/findByStatus接口中添加status参数SoapUI创建接口接着......
  • REST和SOAP的区别
    SOAP简单对象访问协议(SimpleObjectAccessProtocol,SOAP)是一种基于XML的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),基于“通用”传输协议是SOAP的一个优点。它还支持从消息系统到远程过程调用(Remote......
  • REST 与 SOAP 之间的差异
    本文主要探讨REST和SOAP之间的主要区别。其实把他俩放一起讨论,就好像拿苹果和橘子对比一样,因为SOAP是一种基于XML的协议格式,而REST是一种架构风格。本文摘要什么是REST?什么是SOAP?REST和SOAP有何不同?REST和SOAPREST和SOAP没有可比性。REST是一种软件架构风......
  • 使用wsimport快速生成soap客户端代码
    在jdk的bin目录下cmd进入操作界面使用命令wsimport.exe-encodingutf-8-keep-s输出java文件路径wsdl文件路径 ......
  • Teamcenter_SOA开发:使用查询构建器查询数据
    Teamcenter中的查询构建器可以查询对象信息,今天使用ItemName这个查询来查询Teamcenter中的对象,并打印出对象的信息。搭建环境参见Teamcenter_SOA开发:使用SOA登录Teamcenter-huangym1-博客园(cnblogs.com)1//tcnx_projectexe.h2#pragmaonce3//MandatoryUFIn......
  • Teamcenter_SOA开发:使用SOA登录Teamcenter
    本文TeamcenterSOA使用C++参考SOA的例子进行编写,以下代码为登录Teamcenter,代码工程在Teamcenter四层环境下运行。SOA的库文件、样例文件、帮助文件在Teamcenter的安装包中可以找到。  运行以下bat文件打开vs后再打开工程,不然调试运行会报错:1cd/d%~dp02setUGII_......
  • PHP5 soap web services
    一.开发环境:1WAMPserverPHP5.3+apache+mysql的集成环境2.Eclipse+PHP插件3。python2.5和PHP5语言版本二:开发代码1.python做一个服务端,发布为python......
  • System.Web.Services.Protocols.SoapException: 服务器无法处理请求。
    在postman调用webservice时提示这个,但是用网页可以调用。<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-enve......
  • 【Eolink】Apikit V10.8.0 版本发布!增加支持 DUBBO、TCP、SOAP 、HSF、UDP 的接口协议
    Apikit 最新功能来袭!......
  • ServiceMesh
    Sidecar设计模式在系统设计时,边车模式通过给应用程序添加边车的方式来拓展应用程序现有的功能,分离通用的业务逻辑,比如日志记录、流量控制、服务注册和发现、限流熔断等功......