敦煌智旅:Serverless 初探,运维提效 60%

news2024/9/23 13:20:17

作者: 百潼

行业新趋势

在后疫情时代,文旅行业开始复苏,在行业的发展趋势中,我们看到了一个充满机遇和挑战的未来。通过不断创新和适应市场需求,文旅行业继续不断发展壮大,为消费者提供更加丰富多样的旅游体验。与此同时,文旅行业也朝着科技融合,创新颠覆的趋势发展。科技带动产业向“新消费、新供给、新企业”的“智慧旅游”、“智慧企业”进化;产业数字化,数字产业化同时进行。科技正在重塑产业链,数字科技和内容服务的重要性同时提升。科技带来文旅产业链和产业束的快速扩张,形成新的市场领域,项目运营收入空间更大。因此文旅产业做好数字化转型成为必然趋势。

数字文旅的新星:敦煌智旅

敦煌智旅是一家致力于智慧旅游大数据和旅游行业应用系统创新与研发的新型互联网企业。公司依托“旅游+互联网+金融”,以核心旅游资源为入口,以信息化建设为抓手,以互联网营销为手段,整合旅游产业链资源、经营落地游客,推动目的地商业繁荣,构建大旅游生态圈。在文旅行业的数字化转型新浪潮中,敦煌智旅迅速抓住机会,开启了 “智旅云平台” 之路。

数字化转型过程中,企业面临的三大挑战

敦煌智旅的平台从一开始就构建在阿里云的 ECS 上。近几年来公司业务不断扩张,已经与多个旅游景区展开合作,也包含了很多大型景区合作,比如月牙泉和黄河石林等等。然而,业务规模的扩大同时也暴露出原有平台的很多不足,主要存在以下三个方面的挑战:

1)流量跨度大,资源预留难度大

在节假日期间,例如五一或国庆节,游客量会迎来高峰,一天内的接待量可能突破十万级。平常的时候,游客数量可能只有一两万。高峰与淡季的流量差异极大,导致对资源的需求跨度也很大,甚至达到了十倍以上。在过去,为了应对节假日的高峰,研发同学会提前准备多台服务器来支持像下单系统这样的核心业务。等流量高峰过后再释放这些服务器资源。但是这种方式处理效率很低,每次处理高峰都需要手动进行预留服务器的配置。

2)运维工作繁重且效率不高

由于智旅云平台的业务持续拓展和更新,系统发版操作也变得频繁。旧系统中使用的是多个 ECS 节点,每次发布更新时,需要登录到每台服务器上单独发布,这不仅增加了工作量,而且还出现过漏发的情况。研发团队在这种情况下还需要承担一部分运维工作,整体的工作效率非常低。

3)服务器资源利用率不足

当系统部署在 ECS 上时,在业务量达到峰值时期,在流量较低的时段,CPU 利用率就只有百分之十几,甚至个位数,这些资源利用不起来,极大程度上造成了浪费。

所以提升运维效率和资源利用率,以及系统的弹性能力成为敦煌智旅技术团队的当务之急。

选型

“我们当时在做一个新平台,总监在阿里云官网的产品目录上发现了 SAE 这个产品,看到有灰度发布,日志收集这样的能力,觉得非常匹配我们的业务诉求,就了解了一下,尝试用了一下,发现发包很方便,上线部署比原来省时省力,觉得效果还不错,就采用了。”

选择阿里云 Serverless 应用引擎(简称 SAE),不用做任何改造,WAR/JAR 包直接上传部署,也不用买机器运维机器,发版的时候也不需要逐台部署机器,为研发同学节省了大量时间。并且,SAE 就是一个超大规模的弹性资源池,想弹多少弹多少,想什么时候弹就什么时候弹,非常适合敦煌智旅节假日期间难以预估的流量激增。

解决方案

敦煌智旅决定把新平台部署在阿里云 Serverless 应用引擎上,SAE 提供了一个开箱即用的 Serverless PaaS 平台,提供了微服务、监控等能力, 帮助敦煌智旅很好地解决了发版困难、运维困难、弹性能力不足和资源利用率低等痛点问题。

01 高效发版

SAE 支持应用一键部署,秒级完成从源代码仓库或 War、Jar 代码包部署 SAE 应用,并支持自动 CD。同时也提供应用模板、CLI 命令行工具、组件库、成本管家等能力,帮助开发者们快速高效的交付应用程序。帮助敦煌智旅的技术同学解决了发版效率低,发版过程繁琐的困难。

“以前每次发版都需要我们在 ECS 上逐台部署,每发一个新版本要整整 1 天的时间,还需要几个同学时刻监控新版本的情况,一旦有 bug 还需要立刻逐台 ECS 下线新版本,不仅过程繁琐,而且还容易业务受损。”

“现在每次发版的时候,只需要将打包好的镜像直接部署在 SAE 上,半天就能发布一个新版本,如果有问题在控制台上一键回滚老版本就可以了,之前要一个团队完成的工作,现在一个人就可以完成,不仅提升了人效,也彻底避免了之前漏发的情况”。

02 服务发现

与此同时,SAE 具备无侵入微服务治理的能力,支持 Spring Cloud、Dubbo 零代码改造迁移至 SAE。提供服务注册&发现、环境隔离、配置管理、限流降级、应用无损上下线、服务鉴权、全链路灰度等能力。敦煌智旅基于 SAE 网关和内置的 Nacos 能力实现微服务的服务发现。

“我们之前的那些部署在 ECS 上的老系统,前经常需要给每一个应用改 IP 地址,效率非常低,还经常漏改和改错。SAE 内置的 Nacos 用起来非常方便,再也不用不用针对每一个应用改 IP 地址了,而且我们本来的框架就是用的微服务,SAE 和我们的原始架构非常的适配。”

03 监控与日志采集

敦煌智旅还基于 SAE 集成的监控告警能力实现了日常开发过程中的监控和日志采集。SAE 基于 EBPF 技术提供无侵入的应用监控和告警能力,支持任意语言和任意框架。提供七层入口流量监控,也提供 Java 应用级别&链路级别的监控。

“我们在研发的过程中非常需要持久化日志,看到 SAE 集成的 SLS 日志功能,原来需要用排除法逐一排查故障,现在利用监控和持久化日志就能有效的定位问题,帮助我们非常迅速地排查故障。”

04 自适应弹性

SAE 提供自适应弹性的能力,能实现百毫秒级弹性伸缩,根据流量自适应调整应用实例;支持白屏化配置多种弹性策略和像 QPS、RT、TCP 连接数等弹性指标。

利用 SAE 的指标弹性策略,敦煌智旅现在在每次节假日或周末时候都能根据流量峰值自动进行弹性扩容,就不再需要提前预估流量峰值来预留机器,避免了高峰期不够,低谷期浪费情况的出现。

“我们之前在节假日之前都要自己提前扩容,需要预估流量提前几个小时备好几台机器,安排 3 个同学值班,等流量洪峰过去之后再立刻缩容,避免资源浪费,但经常预估没那么准确,老系统有业务受损的情况。用了 SAE 之后,完全满足了我们的弹性需求,只需要提前在控制台上配置好指标弹性策略,根本不用提前多开 ECS 部署业务,也不用同学值班,用 SAE 的自适应弹性就能轻松应对流量洪峰,在流量低谷期自动缩容,完全不用我们担心。”

敦煌智旅的研发同学说,“我们现在还处在对 SAE 的持续探索阶段,之后合作的景区越来越多,之后会尽快接入灰度发布和 CICD 的能力。”

使用效果

1)运维提效,效率提升 50% 至 60%: 通过阿里云 Serverless 应用引擎 SAE,在每一次发布新版本的时候,开发运维同学不再需要逐一部署每一台服务器,发包更方便了,新增节点也更方便了,大大简化了原本繁杂的部署工作。研发运维同学能更多的专注于业务本身,过去可能需要一整天才能完成的版本发布和部署,现在缩短至半天内便可顺利完成,运维效率得到了极大提升。

2)无需提前预留资源,轻松应对 10 倍突增流量洪峰: 基于 Serverless 应用引擎 SAE,在每一次节假日之前,不需要再提前准备服务器节点,借助 SAE 强大的弹性能力,在流量高峰期前只需事先设定好弹性伸缩策略,系统就会自动根据实际流量进行资源的快速伸缩,就能轻松应对周末和节假日高于平时 10 倍的流量峰值。敦煌智旅不但保障了用户体验,同时也实现了资源的高效利用,从而显著提升了弹性效率,大大提升了服务的可靠性。

3)成本更优,降本成为意外之喜: 基于 Serverless 应用引擎 SAE,敦煌智旅不用再担心为了扛住流量洪峰预留的资源在流量低谷期的时候浪费,原来在高峰期预留的资源,在低谷期有 80% 都是浪费的。现在应用部署在 SAE 上,在流量高峰期过后,SAE 会自动帮助缩容,能保证资源在低谷期基本不浪费。

总结和期待

“新平台的所有业务部署在 SAE 上,相比于老的平台,在平时开发工作、发版需求和应对弹性能力上都更灵活了,新平台的诉求都能满足。但同时也对 SAE 有了新的期待:目前的 SAE 的 Web 日志会截断,有时候还要依赖 Pod 来排障,希望 SAE 的日志功能可以更强大,实时日志更流畅。”

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

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

相关文章

UnQLite:多语言支持的嵌入式NoSQL数据库深入解析

文章目录 1. 引言2. Key/Value 存储接口2.1 关键函数2.2 使用示例2.3 高级操作:批量文件存储 3. 游标的使用4. UnQLite-Python使用示例4. UnQLite数据库引擎架构5.1 Key/Value存储层5.2 文档存储层5.3 可插拔的存储引擎5.4 事务管理器与分页模块5.5 虚拟文件系统 6.…

右值引用与左值引用

目录 1. 左值与右值2. 左值引用与右值引用 1. 左值与右值 2. 左值引用与右值引用

千益畅行,旅游卡,案例分享

旅游卡作为新旅游这个赛道,到处都是金矿,看你怎么去挖,商机无限。千益畅行旅游卡作为旅游卡源头,提供优质完善的服务,你只需要去铺卡搞钱,其他的售后交给我们! #旅游卡服务#

使用静态IP为什么比动态IP的人多?

在网络世界中,IP地址就好比我们的身份证,用来标识我们在互联网上的唯一身份。而静态IP与动态IP,则是这“身份证”的两种不同分配方式。 一、静态IP与动态IP的区别 动态IP:动态IP地址如同租住的公寓,用户每次上网时&a…

【Qt】常见控件 —— QWidget(下)

文章目录 QWidget 的 windowlcon 属性使用 qrc文件管理资源qrc的使用方式在项目中创建 qrc文件把图片 导入到qrc 文件中 QWidget 的 windowOpacity属性 QWidget 的 windowlcon 属性 windowlcon 表示 一个窗口的图标 ( 只能针对 顶层窗口使用 ) windowlcon() 表示 获取到控件的…

吴恩达机器学习课后作业-05偏差与方差

偏差与方差 题目欠拟合改进欠拟合影响偏差和方差因素训练集拟合情况训练集和测试集代价函数选择最优lamda 整体代码 训练集:训练模型 验证集︰模型选择,模型的最终优化 测试集:利用训练好的模型测试其泛化能力 #训练集 x_train,y_train data[X],data[ y]#验证集 …

【C++ Primer Plus习题】4.9

问题: 解答: #include <iostream> using namespace std;typedef struct _CandyBar {string brand;float weight;int calorie; }CandyBar;int main() {CandyBar* snack new CandyBar[3];snack[0] {"德芙",2.1,20};snack[1] { "箭牌",2.2,16 };sna…

鸿蒙(API 12 Beta3版)【使用Image完成图片编码】图片开发指导依赖JS对象

开发者可以调用本模块的Native API接口&#xff0c;完成图片编码&#xff0c;即将PixelMap压缩成不同格式的存档图片。 当前支持编码为JPEG、WebP 和 PNG 格式。 适用场景 图片编码转换。 通过传入图片源ImageSource&#xff0c;封装成想要的格式。 图片编辑 编辑PixelMap后…

【C# 】使用List<实体类>

1. 使用List<实体类> 要在C#中使用List<EntityTemp>并实现查找数据输出&#xff0c;首先需要定义EntityTemp类&#xff0c;并创建一个List<EntityTemp>类型的列表。然后&#xff0c;你可以使用LINQ或其他方法来查找和输出数据。 假设EntityTemp类具有一个…

最新最全的Pytest接口自动化测试框架教程

pytest编写的规则&#xff1a; 1、测试文件以test_开头&#xff08;以_test结尾也可以&#xff09; 2、测试类以Test开头&#xff0c;并且不能带有__init__方法 3、测试函数以test_开头 4、断言必须使用assert pytest.main([-s,-v]) &#xff1a;用来执行测试用例 -s 打印prin…

pcdn闲置带宽被动收入必看教程。第六讲:交换机配置实战篇

pcdn闲置带宽被动收入必看教程。第六讲&#xff1a;交换机配置实战篇 本章节将介绍如何通过简单的步骤配置交换机&#xff0c;以汇聚所有宽带并集中管理速率&#xff0c;最终接入服务器或软路由&#xff0c;实现远程管理分配速率给具体的服务器或小主机等。 交换机配置步骤 1…

Redis:Redis为什么快

文章目录 一、Redis为什么快二、Redis的单线程模型三、高效的数据结构1、跳表 四、内存的高效使用五、I/O多路复用机制六、网络优化 一、Redis为什么快 单机的Redis每秒可以支撑十几万的并发&#xff0c;相对于MySQL来说&#xff0c;性能是MySQL的十几倍。速度快主要有一下因素…

Docker快速上手

Docker 前言一、基本组成二、常用命令2.1 Docker服务2.2 image相关命令2.3 Container相关命令 三、Docker Volume 容器卷3.1 匿名挂载3.2 具名挂载 四、Docker 网络模式4.1 bridge桥接模式4.2 host主机模式4.3 None模式4.4 Container模式4.5 Customer模式 前言 本篇文章不再赘…

2024计算机技术与软件专业技术资格考试-系统规划与管理(高级)

2024年报名时间&#xff1a;2024年8月22日10:00-9月2日16:00 2024年考试时间&#xff1a;2024年11月9日-11月12日 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试是原中国计算机软件专业技术资格和水平考试&#xff08;简称软件考试&#xff09;的完善与发展。…

windows 10x64 22H2专业纯净版2028.8.24

Windows 10 22H2专业版19045.3208&#xff0c;据传这版最稳定&#xff0c;速度快。原版制作&#xff0c;打齐KB5028166和服务堆栈更新KB5028318补丁。 禁用了系统升级&#xff0c;删除Windows Defender&#xff0c;禁用打印机服务&#xff0c;需要安装打印机的自行打开服务Prin…

逆序对的数量——归并排序

逆序对的数量 归并排序的解法&#xff0c;今天自己拿前台样例模拟了一遍才算是入门了归并排序的感觉 #include<bits/stdc.h>using namespace std; typedef long long ll; const int N1e510; int a[N]; int temp[N]; int k;ll mergesort(int q[],int l,int r) {if(l>r)…

string类的使用与实现

标准库中的string类 string类(了解) string类的文档介绍 注意&#xff1a;在使用string类时&#xff0c;必须包含#include头文件以及using namespace std; auto和范围for 在了解string的用法前在学习一个知识&#xff1b; auto关键字 auto是作为一个新的类型指示符来指示编译器…

若依AjaxResult的get(AjaxResult.CODE_TAG)有时返回的200,有时返回的字符串“200“

这个项目是多模块项目&#xff0c;之前通过web json格式&#xff0c;多模块之前传输用的RestTemplate&#xff0c;但是对接其它系统时要用XML就添加了XML的依赖。 原来 原来ajaxResult.get(AjaxResult.CODE_TAG).equals(200)能返回true&#xff0c; 现在get(AjaxResult.CODE…

3.2.6 盘古开天地start_kernel

点击查看系列文章 》 Interrupt Pipeline系列文章大纲-CSDN博客 3.2 内核初始化(盘古开天地) 3.2.1 内核初始化的神话 3.2.2 从头 (Head)开始 3.2.3 从头初始化到身体 3.2.4 宇之内存的空分复用 3.2.5 宙之CPU的时分复用 3.2.6 盘古开天地start_kernel 3.2.6 盘古开天地start_…

abc 366 E+F(曼哈顿距离 x y 两个坐标分别计算)(贪心+01背包)

E题&#xff1a; 题意&#xff1a;给定的 xi yi 。求有多少点 到给人 若干定点 的曼哈顿距离 和 小于等于D. 因为D 最大时 1e6,-1e6<xi<1e6。 所以 可能的 点 的 x 的范围是 [-2e6 2e6] 同理 y 的 范围 一样。 将 x y 分开讨论。 我们可以枚举 某个x 的 个数&#xff0…