0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

技术速递 | 分布式政企应用如何快速实现云原生的微服务架构改造

华为DevCloud 来源:未知 2023-04-19 00:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:杨奕 华为云技术规划专家

在以往的文章《云原生微服务治理技术朝无代理架构的演进之路》中,我们介绍了几种微服务架构模式,如下图所示。

04278c40-de08-11ed-bfe3-dac502259ad0.png

注:图片来源https://twitter.com/bibryam/status/1026429379587567616

今天主要是介绍,第一种SOA/ESB架构,在Java语言场景下,如何朝第三种 云原生ServiceMesh架构的演进的问题。

SOA/ESB架构简介和问题概览

首先我们来看看 SOA/ESB 架构模式 在目前公有云上的典型参考架构。

如下图所示,以华为云为例,以该模式部署应用时,其使用到的典型云服务为 弹性负载均衡 (ELB) + 弹性伸缩(AS,包含ECS)。在这种场景下:

·需要发起调用的客户端程序,通过配置好的域名或地址,直接调用到ELB上,通过ELB去调用到后端的ECS服务器。

·ELB上需要配置后端服务器的多个IP地址。当然,一般这类操作可以简化为添加某类弹性伸缩组。这样,当ECS发生弹性伸缩时管理员无需处理ELB配置,ELB即可自动刷新ECS的IP列表的变化。

(配置操作可参见:https://support.huaweicloud.com/usermanual-as/as_01_0102.html)

044cebf2-de08-11ed-bfe3-dac502259ad0.png

值得注意的是,以上的模式可能存在几种变种。

·对于ELB,可能会采用API网关替代,或者用户自建的KONG, APISIX,Envoy等,具体取决各个企业的自身业务场景。例如,某些互联网公司倾向于采用企业自建的KONG,其主要原因是除了基本的服务发现和负载均衡能力以外,网关还需要处理面向内部跨域调用的一些鉴权情况处理。

·对于弹性伸缩,可能也会直接采用Kubernetes的Deployment + HorizontalPodAutoscaler替代。这当然取决于企业内部的基础架构采用情况,看是更倾向于使用虚拟机架构还是容器架构。

以上架构虽然在隔离性、安全性上存在一定优点,但是短板也非常明显。

·性能和资源开销。这个比较好理解,相对微服务架构,SOA/ESB架构上网络增加了额外一跳,而且ELB的引入也会导致资源的额外消耗增多。

·运维成本。毕竟额外引入了一个ELB的组件,因此在微服务之间调用时,瓶颈在哪里,ELB是否需要扩缩容,都是问题。

045b7118-de08-11ed-bfe3-dac502259ad0.png          

微服务和云原生架构改造方法和问题

对于如何改造 SOA/ESB 架构,朝微服务架构或云原生架构演进,业界也有很多方法。主要是以下两类。

046af4bc-de08-11ed-bfe3-dac502259ad0.png

·通过修改代码,将应用改造为微服务架构。例如直接在代码中引入比如SpringCloud的服务注册发现和负载均衡等组件。当然,这种改造往往也并不简单,主要取决于现有应用已采用的开发框架等。比如应用本身没有采用spring来进行开发,那么直接采用SpringCloud可能会为应用带来海量的改造成本。

·采用istio方案,通过有限改造应用,将架构升级为ServiceMesh架构。之所以该方案说是有限改造,而不是无改造,也是因为在服务调用方式上,istio方案对应用并不是完全无限制。其至少需要在客户端将调用的http调用地址改造成为k8s原生的服务地址,调用的服务治理才能被envoy有效接管。当然,改造完毕后,用户在接下来在面向边车的性能衰减,更复杂的调用运维问题上,恐怕一个也不会少。

综上所述,两种方案都存在比较明显的短板。接下来分析下采用Sermant方式进行架构改造,如何弥补上述两种方案的短板。

Sermant对SOA/ESB架构升级的思路

采用Sermant (https://sermant.io/zh/) 对SOA/ESB架构升级,本质上的最后的架构终态是Service-Mesh。但是因为采用的方法稍有不同,从而导致方案在性能和运维问题上都不存在短板。主要是以下两点:

·首先,Sermant采用Java Agent来动态注入增强的服务逻辑治理,因此应用侧理论可以做到完全不用改代码。

·其次,由于Sermant的核心逻辑是以AOP (面向切面编程) 方式,Java Agent和业务属于同一进程,因此在性能方面不存在sidecar形态的特别大的损耗。

Sermant方案架构如下图所示。

048c7146-de08-11ed-bfe3-dac502259ad0.png

在核心技术点上,Sermant改造方案的功能主要有以下几个方面:

·内置的服务注册发现机制。(上图中的第一点和第三点)

-插件本身会带服务注册功能,在Provider应用启动的时候自动到注册中心进行服务注册。

- 在Consumer应用进行URL服务调用的时候,通过微服务服务发现+负载均衡机制替代原先的服务直调。

·域名到服务名(有时也称应用名)的转换。(上图中的第二点)

- 服务发现时,由于原先的调用采用URL直调,并不包含应用信息。这就需要一个调用关系到应用名的映射。对于这块内容,未来我们计划做成了一个动态配置,存储到配置中心里。这样当有应用需要发起调用时,Sermant直接将URL转换成应用名,就可以在注册中心获取响应的应用IP列表。

- 通过URL获取Provider应用名后,由于在改造过程中,不用Provider应用并不是同批次发布携带Sermant Java Agent,因此还需要有个白名单机制,来配合灰度发布。

·增强的客户端侧负载均衡、重试、隔离、降级机制。(上图中的第四点)

- 通过URL获取Provider应用名后,由于在改造过程中,不用Provider应用并不是同批次发布携带Sermant Java Agent,因此还需要有个白名单机制,来配合灰度发布。

-此外,对于一些必要的东西向流量的治理能力,如服务间的3A认证等,也需要进一步在Sermant端补齐。

以上便是Sermant改造方案的主要功能点。另外,在实操中如何针对现有环境进行升级还是需要一定方法,避免对现有环境进行太大冲击。以下详细叙述。

采用Sermant

对SOA/ESB架构升级的方案实操

应用改造在具体局点上不可能一蹴而就,因此在具体上实施上肯定是一个慢慢灰度的过程。以Kubernetes容器场景为例,介绍下在上百个微服务应用上千实例的情况下,如何采用Sermant对SOA/ESB基于灰度进行安全可控的云原生架构升级。

04a427c8-de08-11ed-bfe3-dac502259ad0.gif

以下为准备工作:

准备步骤一:

自身应用是否支持。当前Sermant支持的微服务升级的Java框架可以在该文档中查询。如未支持,可以考虑给社区提Issue解决。

参考链接:

https://sermant.io/zh/document/plugin/springboot-registry.html#%E8%AF%A6%E7%BB%86%E6%B2%BB%E7%90%86%E8%A7%84%E5%88%99

准备步骤二:

在Kubernetes中安装Injector,方便以非侵入方式让Java应用自动挂载Sermant Java Agent.

(本步骤可选。如跳过,则需要手动改变应用部署脚本加载Sermant Java Agent。)

参考链接:

https://sermant.io/zh/document/user-guide/injector.html

以下介绍详细实施过程。假设初始架构如下。一共三个App,其中App1通过ELB连接到App2和App3。为简化表述,图中为应用均为单实例,实际生产中的实例可能会有多个。

04a8ef74-de08-11ed-bfe3-dac502259ad0.png

接下来,在Kubernetes中对新版本的App1, App2进行发布(图中为V2版本),并在发布时携带Sermant Java Agent,以及激活SpringBoot注册插件。但是此时可以先不配置Provider白名单规则,因此发布后,应用流量应该还是走ELB,未发生任何变化。

04b4f422-de08-11ed-bfe3-dac502259ad0.png

接着在配置中心,将App2加入到白名单中。此时,对识别到App2的应用,挂有Sermant Java Agent的App1实例 (图中的V2实例) 会对App2的实例以负载均衡方式直接发起调用。与此同时,App1访问App3的流量没有变化。

04c0522c-de08-11ed-bfe3-dac502259ad0.png

验证成功后,删除App1、 App2的V1版本,App1到App2的流量通过注册中心的注册发现,完全实现直连。同时,App1访问App3的流量维持不变。

04cd0b52-de08-11ed-bfe3-dac502259ad0.png

至此,使用Sermant对App1、App2的云原生架构升级结束。后续其他App应用,可以按照类似方案,进行灰度升级,直至所有应用全部挂载上Sermant,完成微服务直连改造。

结束语

Sermant 作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护,广泛欢迎大家的加入。

当前Sermant已在华为云云服务CSE中被集成,用户可以在华为云的CSE云服务中使用相关功能。(点击文末“阅读原文”跳转,了解更多相关功能)

戳“阅读原文”了解更多!


原文标题:技术速递 | 分布式政企应用如何快速实现云原生的微服务架构改造

文章出处:【微信公众号:华为DevCloud】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为
    +关注

    关注

    218

    文章

    36284

    浏览量

    262969

原文标题:技术速递 | 分布式政企应用如何快速实现云原生的微服务架构改造

文章出处:【微信号:华为DevCloud,微信公众号:华为DevCloud】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    技术深挖】EtherCAT如何实现超高精度同步?深度解析分布式时钟 (DC)

    技术深挖】EtherCAT如何实现超高精度同步?深度解析分布式时钟 (DC)
    的头像 发表于 05-21 13:57 33次阅读
    【<b class='flag-5'>技术</b>深挖】EtherCAT如何<b class='flag-5'>实现</b>超高精度同步?深度解析<b class='flag-5'>分布式</b>时钟 (DC)

    新一代微服务全家桶AlibabaCloud+SpringCloud实战

    吃透双云微服务架构,职场晋升架构师快车道 2026年,一场静默的架构革命正在重塑整个技术职场。(搜星 课it。top) 当你还在纠结\"要不
    发表于 05-18 17:04

    AI Ceph 分布式存储教程资料大模型学习资料2026

    快速扩缩容,分布式存储必须支持模型文件的秒级分发。通过利用分层存储策略,将冷数据归档至廉价的大容量 HDD,将热数据(如活跃的模型权重)置于高性能 SSD,并结合全局命名空间的技术,AI
    发表于 05-01 17:35

    微电网主从控制架构:集中式调度与分布式执行的协同机制

    微电网主从控制架构作为一种兼顾“全局优化”与“本地响应”的经典控制模式,核心逻辑是构建“主控制器统筹调度、从控制器分布式执行”的协同体系,打破传统集中式控制响应滞后、分布式控制无序运行的局限,
    的头像 发表于 04-11 09:55 1495次阅读
    微电网主从控制<b class='flag-5'>架构</b>:集中式调度与<b class='flag-5'>分布式</b>执行的协同机制

    微电网集中式架构vs分布式架构:设计差异与选型依据

    微电网作为整合“源、储、荷、网”的新型能源系统,其架构设计直接决定系统的运行效率、可靠性、扩展性与经济性,是微电网规划建设的核心环节。在微电网主流架构中,集中式架构分布式
    的头像 发表于 04-02 11:40 519次阅读
    微电网集中式<b class='flag-5'>架构</b>vs<b class='flag-5'>分布式</b><b class='flag-5'>架构</b>:设计差异与选型依据

    西格电力微电网总体架构设计:分层分布式控制体系构建

    随着分布式新能源规模化渗透、负荷需求多元化升级,微电网作为整合“源、储、荷、网”多单元的新型能源系统,其安全稳定、高效经济运行的核心诉求,对总体架构设计与控制体系提出了更高要求。微电网总体架构是系统
    的头像 发表于 03-31 11:44 609次阅读
    西格电力微电网总体<b class='flag-5'>架构</b>设计:分层<b class='flag-5'>分布式</b>控制体系构建

    2022全新版!Java分布式架构设计与开发实战(完结)

    历史数据;一致性哈希则在节点增减时最小化数据迁移量,通过虚拟节点技术实现负载均衡,特别适合动态扩展的分布式集群。 全局唯一ID生成是分库分表必须解决的基础问题。传统数据库自增ID在多分片环境下会导致ID冲突
    发表于 03-30 15:20

    Springboot+SpringData+SpringCloud微服务架构课程

      后端进阶必学:SpringCloud 微服务高可用落地实战 在互联网技术飞速迭代的今天,单体应用架构已逐渐难以承载亿级流量的重担。对于渴望突破瓶颈、迈向架构师行列的后端开发者而言,
    的头像 发表于 03-19 16:08 573次阅读

    分布式光伏环境监测站的技术架构与应用实践

    分布式光伏环境监测站的技术架构与应用实践 柏峰【BF-GFQX】一、系统技术架构解析 分布式光伏
    的头像 发表于 10-13 10:05 815次阅读
    <b class='flag-5'>分布式</b>光伏环境监测站的<b class='flag-5'>技术</b><b class='flag-5'>架构</b>与应用实践

    Jtti海外VPS微服务架构下的日志采集与分析优化方案

    随着跨境业务和分布式应用的普及,越来越多的企业在海外VPS上构建微服务架构,以提升系统扩展性和灵活性。然而,微服务化带来了一个新的挑战:日志数据分散在多个
    的头像 发表于 08-27 17:13 757次阅读

    【节能学院】Acrel-1000DP分布式光伏监控系统在奉贤平高食品 4.4MW 分布式光伏中应用

    分布式光伏本地和远程通信方案,并研究分布式光伏采集模型的构建、多源数据融合估计、面向分布式光伏的有功、无功功率优化控制等关键技术实现了对小
    的头像 发表于 08-23 08:04 3742次阅读
    【节能学院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控系统在奉贤平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中应用

    分布式光伏发电监测系统技术方案

    分布式光伏发电监测系统技术方案 柏峰【BF-GFQX】一、系统目标 :分布式光伏发电监测系统旨在通过智能化的监测手段,实现分布式光伏电站的
    的头像 发表于 08-22 10:51 3588次阅读
    <b class='flag-5'>分布式</b>光伏发电监测系统<b class='flag-5'>技术</b>方案

    电商API的微服务架构优化策略

    ​ 随着电子商务的快速发展,API(应用程序编程接口)已成为电商平台的核心组件,负责连接用户、商家和后台系统。微服务架构通过将应用拆分为独立、可扩展的服务单元,显著提升了系统的灵活性和
    的头像 发表于 07-23 14:30 779次阅读
    电商API的<b class='flag-5'>微服务</b><b class='flag-5'>架构</b>优化策略

    电力系统分布式故障实时定位技术——精准抗干扰快速响应

    在电力系统中,分布式故障的快速定位与隔离对保障电网稳定运行至关重要。传统的故障检测方法受限于干扰强、定位延迟高的问题,难以满足现代智能电网的高可靠性需求。我们的分布式故障实时定位技术
    的头像 发表于 07-11 10:43 749次阅读
    电力系统<b class='flag-5'>分布式</b>故障实时定位<b class='flag-5'>技术</b>——精准抗干扰<b class='flag-5'>快速</b>响应

    云原生环境里Nginx的故障排查思路

    本文聚焦于云原生环境下Nginx的故障排查思路。随着云原生技术的广泛应用,Nginx作为常用的高性能Web服务器和反向代理服务器,在容器化和
    的头像 发表于 06-17 13:53 1253次阅读
    <b class='flag-5'>云原生</b>环境里Nginx的故障排查思路