基于Sermant的全链路灰度发布在汽车行业DMS系统的应用

作者:聂子雄 华为云高级软件工程师

摘要

随着汽车产业的智能升级,DMS系统作为汽车行业的经销管理系统也面临着更加多种多样的业务场景的挑战。借助Sermant,华为云能够为DMS系统提供一整套端到端全链路灰度发布方案,这套方案可以适应DMS系统应用中更多灵活多变的场景。

一、背景  

汽车行业是一个庞大的产业,涵盖了设计、制造、销售、维修等多个方面。目前,全球汽车行业已经成为了重要的经济支柱之一,每年产生数万亿美元的产值。汽车行业的发展也推动了相关产业的发展,如石油、钢铁、橡胶、玻璃等原材料行业,以及银行、保险、物流等服务行业。随着环保意识的提高和新能源技术的不断发展,汽车行业也面临着转型升级的挑战。目前汽车行业正在向智能化、电动化和共享化方向发展,面对更加多种多样的需求,行业相关的IT系统也需要不断进步以适应这些场景。

在汽车行业IT系统中,经常会提到DMS系统,那什么是DMS系统呢?DMS系统是指汽车经销商管理系统(Dealer Management System),它是一种专门为汽车经销商和售后服务提供商设计的软件系统,用于管理和优化他们的业务流程。DMS系统可以帮助汽车经销商实现业务数字化、自动化和智能化,提高业务效率、降低成本、提升服务质量,是现代化汽车经销商必备的管理工具。目前很多经销商的DMS系统基本上都是做过微服务化改造,里面不同微服务模块之间会相互调用,因此如何高效地使用和管理这些微服务模块是DMS系统的重要挑战之一。

二、痛点场景

目前DMS系统已经广泛应用在汽车经销商的业务当中,其中有一类是DMS系统在实际使用中的痛点场景,具体有:

  • 客户想在某一个门店A上线自己的新业务,作为业务试点门店,比如新品汽车销售,或者打折促销活动等。和新业务相关的流量只会流入试点门店B。
  • 为了节约成本以及降低部署服务工作量,希望能够实现逻辑上的环境隔离。例如,测试环境有部分服务复用生产环境上的模块,开发测试人员只需要聚焦于需要测试的服务模块。
  • 客户的交易、商品服务有新的业务要上线,新上线的功能间有依赖和交互,要在上线前做一些测试工作。
  1. 用户计划让测试人员专门账号来进行现网测试(类似于游戏等白名单控制的开服前验证)。
  2. 用户引入少量比例的生产流量进行验证。

三、解决方案

3.1  单点灰度发布方案是否可行?

针对上述问题,一般的思路是通过灰度发布去解决,通过灰度发布,可以引入部分的测试流量到新业务模块,也能控制带有具体特征的流量只流入到对应的测试模块,其余流量保持原有方式不动。

但是经过仔细考虑,就会发现如果只做单点灰度发布,其实是无法完善地解决以上场景的痛点问题,主要体现在:

  • 业务特征时常只在第一跳,也就是特征只在入口,传递过程中会丢失。

  • 除了第一跳入口,后续微服务之间进行调用的时候也会把特征给丢失。

3.2 全链路灰度方案是怎样的?

因此,仅仅依靠单点灰度发布的能力是不够的,还需要能够做到整条微服务调用链的可灰度,也就是全链路灰度能力,这样就可以灵活解决DMS系统在这一类业务中遇到的问题。目前要实现全链路灰度,一般要考虑这些问题的处理:

1)在第一跳的地方(一般是网关),我们需要能选中各种类型的流量,把这部分流量染色,再路由到正确的目标。

2)除了第一跳,剩下调用链路中的各个微服务能够识别染色标,透传染色标,并路由到正确的目标。

3)能对异常情况进行妥善处理。

目前,华为云针对以上难点,设计出一套相对完善的全链路灰度发布方案,整体方案如下:

1)在前端部分,请求会统一携带流量标签参数发到华为云CSE应用网关上面。

2)CSE应用网关会选中各种类型的流量,将这些流量根据需求分别染色,比如通过请求header进行标记染色。

3)CSE应用网关会将染色后的流量转发到带有不同tag的后端微服务实例,tag可以由应用发布流水线注入到相应发布的微服务实例当中。

4)借助微服务实例上挂载的Sermant Agent,接收到应用网关流量的微服务实例会通过Sermant Agent提供的流量染色以及标签透传能力(适配Dubbo,SpringCloud)将流量特征保留并转发到合适的下一跳微服务实例。对于后续链路上的微服务实例,都可以通过微服务实例上面的Sermant Agent进行特征的传递。

3.3 为什么要选择Sermant Agent?

考虑到目前Dubbo和SpringCloud是国内使用量较多的微服务开发框架,为了不产生过多框架适配工作量,因此选用了基于Java Agent技术的Sermant Agent,利用这种无侵入式的特点,用户只需要在微服务实例启动时将Sermant Agent挂载到实例进程当中即可。Sermant Agent针对Dubbo和SpringCloud两种主流微服务框架适配了流量染色以及标签透传的能力。通过流量染色和标签透传,Sermant Agent就可以实现流量特征的保留以及传递到下一跳。Sermant Agent进行流量染色以及标签透传的全流程如下:

通过配置中心,用户可以在控制台界面下发服务粒度的染色规则,用于判断入方向的流量特征是否符合特定条件,若匹配则对该流量进行染色,在同一调用链的出方向流量中携带该染色标签然后通过请求透传给下一跳,因此用户可以通过下发自定义的染色规则到对应微服务,允许目的特征流量进入微服务实例并为出流量赋予新的特征。

在全链路灰度发布的场景下,Sermant Agent染色规则相对简单,sermant Agent会允许目的特征的流量进入微服务实例然后染色时带上相同的特征,染色后的流量再流入到对应tag的微服务实例。

四、总结

基于Sermant的全链路灰度发布方案可以解决DMS系统目前在一些如新业务在试点门店测试上线等业务场景遇到的困难,并且这一套方案能适应各类敏捷迭代的业务场景。

在开发测试过程中,客户可以根据需求在逻辑上划分出一套属于自己的服务链路,只需要关注自己设定的特征流量即可,这种模式可以为客户省去搭建DMS系统中一些共用的模块时间以及节约环境资源,并且还可以很方便地将带有试点特征的流量引入到含有自己试点应用的链路环境当中。

在发布过程中,客户还可以根据需要把一部分生产流量引入到自己的新版本业务链路环境当中,完成新版本的验证。

----------------------------------------------------------------------------------

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

  • Sermant 官网:Sermant
  • GitHub 仓库地址:GitHub - huaweicloud/Sermant: Sermant, a proxyless service mesh solution based on Javaagent.
  • 扫码加入 Sermant 社区交流群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习训练中常用的三个基础库tqdmargparseyaml

文章目录 训练常用工具[tqdm][argparse][yaml]tqdm1. 导入tqdm2. 传入可迭代对象快速使用进阶1:通过update()自定义进度条每次更新的步长进阶2:通过set_description和set_postfix自定义进度条内容 Argparse第一步:创建ArgumentParser对象第二…

机器学习在智能音箱中的应用探索与实践:让声音更懂你

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

2024 ccfcsp认证打卡 2023 03 01 田地丈量

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n in.nextInt(); // 输入 n,表示矩形的数量int a in.nextInt(); // 输入 a,表示整个区域的长度int b in.nextInt()…

Hive详解(5)

Hive 窗口函数 案例 需求:连续三天登陆的用户数据 步骤: -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…

如何在Portainer中创建Nginx服务并搭建静态站点实现公网访问本地网站

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…

报错:TypeError: Cannot handle this data type: (1, 1, 3), <f8

报错内容: 解决方法: 这个错误是由于 PIL 库无法处理特定的数据类型引起的。为了解决这个问题,你可以尝试将数据类型转换为 PIL 可以处理的类型,比如转换为 uint8 类型。你可以在调用 Image.fromarray() 方法之前,将…

SQL,group by分组后分别计算组内不同值的数量

SQL,group by分组后分别计算组内不同值的数量 如现有一张购物表shopping 先要求小明和小红分别买了多少笔和多少橡皮,形成以下格式 SELECT name,COUNT(*) FROM shopping GROUP BY name;SELECT name AS 姓名,SUM( CASE WHEN cargo 笔 THEN 1 ELSE 0 END)…

使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件

一、使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件 一、创建 Vue 项目 1. 使用 Vite 创建 Vue 项目 npm create vitelatest # npm yarn create vite # yarn pnpm create vite # pnpm选择 Vue 和 TS 进入项目…

在Windows中使用NVM安装node.js

NVM介绍 Node.js版本管理器(Node Version Manager),简称NVM,是一款用于在单个系统上轻松安装和管理多个Node.js版本的命令行工具。它允许用户根据项目需求在不同版本之间自由切换,解决了因为不同项目依赖于不同Node.j…

Python快速入门系列-6(Python高级特性)

第六章: Python高级特性 6.1 列表推导式与生成器6.1.1 列表推导式6.1.2 生成器6.1.2.1 生成器表达式6.1.2.2 生成器函数6.2 装饰器与迭代器6.2.1 装饰器6.2.2 迭代器6.3 异常处理与错误调试6.3.1 异常处理6.3.1.1 try-except语句6.3.1.2 try-except-else语句6.3.2 错误调试6.3…

【缺陷】硅光电二极管中的DT侧壁陷阱态的DLTS表征

【A DLTS study on Deep Trench Processing induced Trap States in Silicon Photodiodes】 概括 本研究通过深能级瞬态光谱(DLTS)技术对硅光电二极管中的深沟槽(DT)侧壁诱导的陷阱态进行了详细分析。研究发现,这些陷…

golang语言系列:通用技能之 Scrum、Kanban等敏捷管理策略

云原生学习路线导航页(持续更新中) 本文是 golang语言系列 文章,主要对编程通用技能 Scrum、Kanban等敏捷管理策略 进行学习 1.什么是敏捷开发 敏捷是一个描述软件开发方法的术语,它强调增量交付、团队协作、持续规划和持续学习。…

电商新秀视频号小店,2024年值得加入吗?

大家好,我是电商糖果 视频号小店去年的热度非常高,很多第一批入驻的商家,也赚的盆满钵满。 于是就有不少商家问糖果,关于视频号小店2024值不值得加入,想听听我的看法。 糖果做电商有六七年的时间了,喜欢…

基于springboot实现网上点餐系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网上点餐系统演示 摘要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网上点餐系统当然也不能排除在外,随着网络技术的不断成熟,带动了网上点餐系统…

【解決|三方工具】Obi Rope 编辑器运行即崩溃问题

开发平台:Unity 2021.3.7 三方工具:Unity资产工具 - Obi Rope   问题背景 使用Unity三方开发工具 - Obi Rope 模拟绳索效果。配置后运行 Unity 出现报错并崩溃。通过崩溃日志反馈得到如下图所示 这是一个序列化问题造成的崩溃,指向性为 Obi…

基于8086数码管数字钟计时器设计

**单片机设计介绍,基于8086数码管数字钟计时器设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086数码管数字钟计时器设计是一个结合了微处理器控制、数码管显示以及计时功能的综合性项目。通过此设计,我们…

(负载点电源)18V/2A同步降压芯片快速瞬态响应逐周期限流保护

1. 产品特性 ➢ 输入电压范围: 4.5V~18V ➢ 最大负载: 2A ➢ 内部 PWM 控制器以达到快速瞬时响应 ➢ 软启保护时间 tss: 1ms ➢ 逐周期限流保护 ➢ 内部补偿 ➢ 可调的输入欠压锁定 ➢ 短路保护,过温保护 2. 功能描述 P…

前端-css-01

1.CSS 长度单位和颜色设置 1.1CSS 中的长度单位 px 像素 em 字体大小的倍数(字体默认是16px) % 百分比 1.2CSS 中的颜色设置方式 1.2.1使用颜色名表示颜色 red、orange、yellow、green、cyan、blue、purple、pink、deeppink、skyblue、greenyellow .…

【漏洞复现】通天星CMSV6弱口令漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

机器学习-生存分析:基于QHScrnomo模型的乳腺癌患者风险评估与个性化预测

一、引言 乳腺癌作为女性常见的恶性肿瘤之一,对女性健康构成威胁。随着医疗技术的不断进步,个性化医疗逐渐成为乳腺癌治疗的重要方向。通过深入研究乳腺癌患者的风险评估和个性化预测,可以帮助医生更准确地制定治疗方案,提高治疗效…