阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化
在直播场景中,阿里云 Serverless 应用引擎 SAE 提供的无缝弹性伸缩与极速部署能力,确保直播间高并发时的流畅体验,降低了我们的运营成本,简化了运维流程。结合阿里云云原生数据库 PolarDB 的 Serverless 能力,实现了数据库资源按需自动扩展,在优化成本的同时极大增强了业务灵活性和响应速度。
——盟主直播研发 VP 张湃
盟主直播介绍
盟主直播是为用户打造传播、支付、结算和数据分析闭环的全新移动互联网平台,专注于企业级直播并搭建运营企业直播营销平台,以互动视频直播的方式帮助广大企业、自媒体和个人创业者放大自身的影响力,积累自己的受众粉丝,并通过一站式的交易提高企业的营销速度和效率。盟主直播深入 100 多个细分行业,既为约 400 家世界 500 强/中国 500 强企业提供服务,也为更多企业客户提供了超过 100 万场次的直播服务,获得了客户广泛的高度评价和赞誉。
业务挑战
盟主直播业务发展快速,原有基于 ECS 自建模式的直播平台架构逐渐暴露出难以适应当前业务快速发展,主要包括:系统稳定性、资源利用效率不高、运维复杂等问题。这些问题不仅影响了用户体验和业务连续性,也增加了运营成本和技术管理难度。
平台稳定性不足
- 流量波动性和高峰压力: 直播业务特性决定了其流量存在显著的日间波动和活动高峰,特别是在大型直播活动和流量高峰期间,系统需要能够迅速响应突发流量,这要求核心数据库系统和应用系统具备极致的弹性伸缩能力。
- 临时扩容的局限性: 在面对突发流量或大型直播活动时,传统的临时或提前扩容计算资源的方法不仅耗时,而且难以保证系统的 SLA,因此很难在直播高峰期间提供稳定的服务,增加了用户流失的风险。
容量规划难,资源利用率低
- 难以预测的流量洪峰: 大型直播项目和线上线下营销活动带来的流量洪峰难以准确预测,导致后端资源的规划变得复杂且具有不确定性。
- 低效的资源保有策略: 为了确保在流量高峰时有足够的计算资源,盟主直播采取了长期固定持有 ECS 服务器的策略,整体服务器资源全天平均资源利用率低于 20%,大部分时间段计算资源处于闲置状态,造成了成本浪费。
运维复杂度高
- 配置一致性维护: 直播业务的快速增长使得 ECS 集群规模越来越大,配置差异导致负载不均和性能问题,影响整体服务质量。
- 资源管理和性能监控: 需要全面监控评估当前资源水位,并根据不断变化的业务负载灵活调整资源分配,避免过度配置和资源争夺,增加了资源管理的复杂性。
- 灾难恢复的重要性: 随着业务的增长,及时发现并处理系统故障是保持业务连续性的关键,确保系统完整性和可用性,防止数据丢失和服务中断。
阿里云 Serverless 云原生解决方案
面对业务平台遇到的挑战,盟主直播经过深入的市场调研,并与阿里云技术团队进行了多轮技术交流和 POC 测试,最终选择了阿里云的 Serverless 应用引擎 SAE 和云原生数据库 PolarDB,该解决方案不仅解决了直播平台在稳定性、性能方面的挑战,还极大地提升了直播平台架构的健壮性,同时也显著减少了运维资源的投入,能够更加专注到业务创新和发展。
计算资源 Serverless 化
高效运维特性:
- 免运维托管:SAE(即:Serverless 应用引擎)为盟主直播提供了一站式的容器化应用全托管解决方案,用户无需关注底层硬件配置与维护,只需专注于应用逻辑的开发。SAE 自动处理计算资源的分配和优化,大大减轻了运维负担。
- 发布管理:支持应用程序解耦发布和前后端灰度发布,简化应用更新流程,避免逐个应用修改带来的配置不一致问题。
- 资源配置灵活性:资源配置可以随时修改并即时生效,统一的 CU 计费抵扣逻辑降低了机器规格更换的复杂性和资损风险。
弹性伸缩和成本优化:
- 动态扩缩容:SAE 根据实时请求数量动态调整实例数量,确保在直播流量高峰时提供充足的计算资源,而在低谷期缩减资源以实现成本最优化。
- 定时弹性与指标弹性结合:通过设定基于时间或流量指标的弹性伸缩规则,既能处理周期性流量变化,也能根据实际流量进一步优化资源配置,即使无人值守也能高效支持业务需求。
智能告警和高可用:
- 监控与报警:集成微服务引擎(MSE)、日志服务(SLS)和 SAE 自身的监控能力,提供全面的基础监控功能,包括 Metrics、Tracing 和 Logging,能够支持对日志的集中采集和监控,内置智能告警机制捕捉异常事务和慢事务,实时日志分析提高了问题定位效率。
- 高可用部署:通过简单设置即可实现多 AZ(Availability Zone)容灾部署,支持副本自动重启和恢复,在系统发生故障时自动切换至健康节点,增强了系统的容错能力和恢复速度。
业务 Serverless 架构图
数据库 Serverless 化
秒级扩缩容:
阿里云 PolarDB 数据库服务采用存算分离的技术架构,对解决盟主直播平台业务晚高峰流量突增的痛点有了更好的解决方案,即:通过 PolarDB Serverless 秒级扩容 CPU 能力,实现高效、轻松的应对,而且不需要提前预留计算资源,总体上实现了增效降本。
PolarDB Serverless
自动化运维:
数据库计算资源调整从每天晚上流量高峰来临前人工扩容、增加只读节点等转变为 Serverless 全自动模式,降低了 70% 的运维工作量,集群变配时长从 8 分钟缩短至 4 秒。
业务价值
通过阿里云的 Serverless 产品和技术,盟主直播实现了核心直播平台的云原生架构升级,不仅解决了盟主直播现有业务面临的挑战,还面向未来为盟主直播的平台扩展性提供了技术基础,有效提升了行业竞争力,具体包括:
- 提升业务稳定性和流畅度: 通过 SAE 和 PolarDB 提供的 Serverless 技术确保了在面对流量高峰时,依然能够保持直播平台的高性能和稳定性,实现了用户体验的大幅提升。
- 显著降低成本: SAE 和 PolarDB 的按需扩缩容特性,帮助盟主直播将整体资源利用率提升了近 50%,成本节约超过 60%。
- 提高工作效率: SAE 的全托管、免运维特性简化了资源预估和应用部署的流程和投入,运维团队的工作压力大幅减轻,整体工作效率提升了 40%。
- 增强业务连续性: PolarDB 支持主备切换过程中在途事务不中断,确保直播业务的连续性,即使在极端情况下也能为用户提供不间断的服务体验。
相关文章:
阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化
在直播场景中,阿里云 Serverless 应用引擎 SAE 提供的无缝弹性伸缩与极速部署能力,确保直播间高并发时的流畅体验,降低了我们的运营成本,简化了运维流程。结合阿里云云原生数据库 PolarDB 的 Serverless 能力,实现了数…...
C++ 多态 初学笔记
多态 虚函数虚函数的使用条件 虚函数详解对象多态多重继承时,类型转换的练习(1)情况1:(2)情况2:(3)情况3:(4)情况4: 对象多…...
深入剖析 Java 的 synchronized 锁升级过程
前言 在 Java 并发编程领域,synchronized关键字堪称保障线程安全的中流砥柱。随着 JDK 版本的迭代演进,synchronized锁的性能优化也在持续推进,其中锁升级机制尤为关键。本文将深度剖析synchronized锁从偏向锁、轻量级锁到重量级锁的升级历程…...
当文件补丁修改器因为文件操作权限有问题时,可以将文件拷贝到普通目录操作
文章目录 当文件补丁修改器因为文件操作权限有问题时,可以将文件拷贝到普通目录操作概述笔记直接在安装目录打补丁失败的情况将目标程序拷贝到补丁修改器的解压目录打补丁成功的情况备注END 当文件补丁修改器因为文件操作权限有问题时,可以将文件拷贝到普…...
【TCP】rfc文档
tcp协议相关rfc有哪些 TCP(传输控制协议)是一个复杂的协议,其设计和实现涉及多个RFC文档。以下是一些与TCP协议密切相关的RFC文档列表,按照时间顺序排列,涵盖了从基础定义到高级特性和优化的各个方面: 基…...
Linux探秘坊-------3.开发工具详解(1)
1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式,写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim (因为不支持鼠标,通常 使用键盘上的箭…...
如何在Python中进行JSON数据的序列化和反序列化?
在Python中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python内置的json模块提供了简单易用的方法来实现数据的序列化和反序列化。下面将详细介绍如何…...
SpringMVC (1)
目录 1. 什么是Spring Web MVC 1.1 MVC的定义 1.2 什么是Spring MVC 1.3 Spring Boot 1.3.1 创建一个Spring Boot项目 1.3.2 Spring Boot和Spring MVC之间的关系 2. 学习Spring MVC 2.1 SpringBoot 启动类 2.2 建立连接 1. 什么是Spring Web MVC 1.1 MVC的定义 MVC 是…...
Redis 3.2.1在Win10系统上的安装教程
诸神缄默不语-个人CSDN博文目录 这个文件可以跟我要,也可以从官网下载:https://github.com/MicrosoftArchive/redis/releases 这个是微软以前维护的Windows版Redis安装包,如果想要比较新的版本可以从别人维护的项目里下(https://…...
springboot医院信管系统
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...
A6.Springboot-LLama3.2服务自动化构建(三)——编写Pipeline构建仓库初始化脚本
下面我们接着上一篇文章《A5.Springboot-LLama3.2服务自动化构建(二)——Jenkins流水线构建配置初始化设置》继续往下分析,编写Pipeline构建脚本。 一、统一Shell执行环境 Jenkins执行Shell脚本时,会在Jenkins节点上创建一个临时的环境来执行该脚本。这个环境包含了Jenki…...
Android 10.0 自定义Window窗口层级新增Type类型功能实现
1.前言 在10.0的系统rom定制化开发过程中,在产品开发过程中,需要新增Window窗口类型来显示 特殊的窗口层级,Window窗口就是根据Type类型来显示的,所以接下来需要新增Type类型来 新增Window窗口显示类型,如图 2.自定义Window窗口层级新增Type类型功能实现的核心类 framew…...
Linux中的基本指令(一)
一、Linux中指令的存在意义 Linux中,通过输入指令来让操作系统执行,以此达到控制操作系统的目的,类似于Windows中的双击,右键新建文件,新建文件夹等 1.补:关于屏幕的几个操作指令 ①清屏指令 clear 回…...
Ruby语言的循环实现
Ruby语言的循环实现深入探讨 在程序设计中,循环是一种常见的控制结构,用于重复执行某些代码块。不同的编程语言提供了不同类型的循环结构,以满足不同的需求。Ruby是一种灵活且易于使用的编程语言,其循环实现方式独具一格…...
使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用
首先服务器上需要安装docker已经docker-compose,如果没有,可以参考我之前写的文章进行安装。 https://blog.csdn.net/a_lllk/article/details/143382884?spm1001.2014.3001.5502 1.下载并启动elk容器 先创建一个网关,让所有的容器共用此网…...
《Keras 3 在 TPU 上的肺炎分类》
Keras 3 在 TPU 上的肺炎分类 作者:Amy MiHyun Jang创建日期:2020/07/28最后修改时间:2024/02/12描述:TPU 上的医学图像分类。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…...
团体程序设计天梯赛-练习集——L1-012 计算指数
前言 这道题简单至极,几行代码就全都解决了。这次多来几个写法; L1-012 计算指数 真的没骗你,这道才是简单题 —— 对任意给定的不超过 10 的正整数 n,要求你输出 2 的n次方 。不难吧? 输入格式: 输入…...
【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展
我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 引言 在当今科技飞速发展的时代,制造业正经历着前所未有的变革,工业4.0的浪潮席卷而来。工业4.0旨在通过将…...
深度学习篇---数据集分类
文章目录 前言第一部分:VOC数据集标签、COCO数据集格式1.VOC数据集标签的特点及优缺点特点优点缺点 2.COCO数据集标签的特点及优缺点特点优点缺点 3.YOLO数据集标签的特点及优缺点特点优点缺点 第二部分:VOC格式和YOLO格式1.VOC格式3.YOLO格式3.区别(1)文…...
力扣hot100之螺旋矩阵
class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:# 用四个数对应4个遍历的方向[0, 1, 2, 3] - [右,下,左,上]go_state 0 # 起始必须向右# record_matrix [[0] * n for _ in range(m)]n_0, n_1, n_2, n_3 …...
嵌入式知识点总结 C/C++ 专题提升(一)-关键字
针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.C语言宏中"#“和"##"的用法 1.1.(#)字符串化操作符 1.2.(##)符号连接操作符 2.关键字volatile有什么含意?并举出三个不同的例子? 2.1.并行设备的硬件寄存…...
Android 高版本如何获取App安装列表?
有个需求需要获取App内的安装列表,但是现在在高版本Android中,只能获取到一部分App效果,我获取的代码如下: val calendar Calendar.getInstance()val packageManager context.packageManagerval usageStatsManager context.getSystemService(Context.USAGE_STATS_SERVICE) …...
StarGAN:原理、用途及最新发展
一、引言 StarGAN是一种具有广泛应用的生成模型,具有同时生成多种类别数据的能力。它由Yunjey Choi等人在2017年提出,旨在实现图像多域间迁移,尤其适用于人脸属性转换。StarGAN的提出,标志着生成对抗网络(Generative A…...
TCP报文格式与核心机制
TCP与UDP都是传输层的重要协议,TCP的特性包括有连接、可靠传输、面向字节流、全双工。 TCP的报文格式如下: 一、报文格式 1.源端口号、目的端口号 源端口和目的端口是五元组中重要的两个性质,源端口即数据是从哪里来的,目的端…...
【2024年华为OD机试】 (B卷,100分)- 金字塔,BOSS的收入(Java JS PythonC/C++)
一、问题描述 微商模式收入计算 题目描述 微商模式中,下级每赚 100 元就要上交 15 元。给定每个级别的收入,求出金字塔尖上的人的收入。 输入描述 第一行输入 N,表示有 N 个代理商上下级关系。接下来输入 N 行,每行三个数&am…...
缓存、数据库双写一致性解决方案
双写一致性问题的核心是确保数据库和缓存之间的数据同步,以避免缓存与数据库数据不同步的问题,尤其是在高并发和异步环境下。本文将探讨双写一致性面临的主要问题和解决方案,重点关注最终一致性。 本文讨论的是最终一致性问题 双写一致性面…...
开放银行数据保护与合规实践案例
总体原则 开放银行的数据处理基本原则指的是数据处理者在数据生命周期的各阶段进行各种数 据处理时均应遵循的根本准则,是指导监管机构制定规范、进行管理以及开放银行进 行具体数据处理行为的纲领。根据《民法典》《个人信息保护法》《数据安全法》 《网络安全法…...
51c自动驾驶~合集47
我自己的原文哦~ https://blog.51cto.com/whaosoft/13083194 #DreamDrive 性能爆拉30%!英伟达:时空一致下的生成重建大一统新方案~ 从自车的驾驶轨迹中生成真实的视觉图像是实现自动驾驶模型可扩展训练的关键一步。基于重建的方法从log中生成3D场景…...
2024年AI与大数据技术趋势洞察:跨领域创新与社会变革
目录 引言 技术洞察 1. 大模型技术的创新与开源推动 2. AI Agent 智能体平台技术 3. 多模态技术的兴起:跨领域应用的新风口 4. 强化学习与推荐系统:智能化决策的底层驱动 5. 开源工具与平台的快速发展:赋能技术创新 6. 技术安全与伦理:AI技术的双刃剑 7. 跨领域技…...
【protobuf】二、proto3语法详解①
文章目录 前言Ⅰ. 字段规则Ⅱ. 消息类型的定义和使用1、定义2、使用1️⃣消息类型可作为字段类型使⽤2️⃣可导入其他 .proto 文件的消息并使用 -- import 3、创建通讯录 2.0 版本的 .proto 文件4、通讯录 2.0 版本的读写实现 -- 第一种验证方式5、decode选项 -- 第二种验证方式…...
React 中hooks之useLayoutEffect 用法总结以及与useEffect的区别
React useLayoutEffect 1. useLayoutEffect 基本概念 useLayoutEffect 是 React 的一个 Hook,它的函数签名与 useEffect 完全相同,但它会在所有的 DOM 变更之后同步调用 effect。它可以用来读取 DOM 布局并同步触发重渲染。 2. useLayoutEffect vs us…...
实战经验:使用 Python 的 PyPDF 进行 PDF 操作
文章目录 1. 为什么选择 PyPDF?2. 安装 PyPDF3. PDF 文件的合并与拆分3.1 合并 PDF 文件3.2 拆分 PDF 文件 4. 提取 PDF 文本5. 修改 PDF 元信息6. PDF 加密与解密6.1 加密 PDF6.2 解密 PDF 7. 页面旋转与裁剪7.1 旋转页面7.2 裁剪页面 8. 实战经验总结 PDF 是一种非…...
数据结构与算法之排序: LeetCode 15. 三数之和 (Ts版)
三数之和 https://leetcode.cn/problems/3sum/description/ 描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0请你返回所有和为 0 且不重复的三元…...
51c嵌入式~单片机~合集6
我自己的原文哦~ https://blog.51cto.com/whaosoft/13127816 一、STM32单片机的知识点总结 本文将以STM32F10x为例,对标准库开发进行概览。主要分为三块内容: STM32系统结构寄存器通过点灯案例,详解如何基于标准库构建STM32工程 STM3…...
SQL Server Management Studio 表内数据查询与删除指令
查询指令 //select * from 表名称 where 列名称 数据名称 select * from Card_Info where num CC3D4D删除指令,删除数据库有风险,操作不可逆,建议删除前备份,以免删错。 //Delete * from 表名称 where 列名称 数据名称 Delete f…...
Timesheet.js - 轻松打造炫酷时间表
Timesheet.js - 轻松打造炫酷时间表 前言 在现代网页设计中,时间表是一个常见的元素,用于展示项目进度、历史事件、个人经历等信息。 然而,创建一个既美观又功能强大的时间表并非易事。 幸运的是,Timesheet.js 这款神奇的 Java…...
产品经理面试题总结2025【其一】
一、产品理解与定位 1、你如何理解产品经理这个角色? 作为一名互联网产品经理,我理解这个角色的核心在于成为产品愿景的制定者和执行的推动者。具体来说,产品经理是连接市场、用户和技术团队之间的桥梁,负责理解市场需求、用户痛…...
第16章:Python TDD实现多币种货币运算
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
【Web】2025-SUCTF个人wp
目录 SU_blog SU_photogallery SU_POP SU_blog 先是注册功能覆盖admin账号 以admin身份登录,拿到读文件的权限 ./article?filearticles/..././..././..././..././..././..././etc/passwd ./article?filearticles/..././..././..././..././..././..././proc/1…...
C++实现矩阵Matrix类 实现基本运算
本系列文章致力于实现“手搓有限元,干翻Ansys的目标”,基本框架为前端显示使用QT实现交互,后端计算采用Visual Studio C。 目录 Matrix类 1、public function 1.1、构造函数与析构函数 1.2、获取矩阵数值 1.3、设置矩阵 1.4、矩阵转置…...
【GORM】初探gorm模型,字段标签与go案例
GORM是什么? GORM 是一个Go 语言 ORM(对象关系映射)库,它让我们可以使用结构体来操作数据库,而无需编写SQL 语句 GORM 模型与字段标签详解 在 GORM 中,模型是数据库表的抽象表示,字段标签&am…...
html全局遮罩,通过websocket来实现实时发布公告
1.index.html代码示例 <div id"websocket" style"display:none;position: absolute;color:red;background-color: black;width: 100%;height: 100%;z-index: 100; opacity: 0.9; padding-top: 30%;padding-left: 30%; padding-border:1px; "onclick&q…...
基于VSCode+CMake+debootstrap搭建Ubuntu交叉编译开发环境
基于VSCodeCMakedebootstrap搭建Ubuntu交叉编译开发环境 1 基于debootstrap搭建目标系统环境1.1 安装必要软件包1.2 创建sysroot目录1.3 运行debootstrap1.4 挂载必要的虚拟文件系统1.5 复制 QEMU 静态二进制文件1.6 进入目标系统1.7 使用目标系统(以安装zlog为例&a…...
C#中System.Text.Json:从入门到精通的实用指南
一、引言 在当今数字化时代,数据的高效交换与处理成为软件开发的核心环节。JSON(JavaScript Object Notation)凭借其简洁、轻量且易于读写的特性,已然成为数据交换领域的中流砥柱。无论是前后端数据交互,还是配置文件…...
【深度学习】Huber Loss详解
文章目录 1. Huber Loss 原理详解2. Pytorch 代码详解3.与 MSELoss、MAELoss 区别及各自优缺点3.1 MSELoss 均方误差损失3.2 MAELoss 平均绝对误差损失3.3 Huber Loss 4. 总结4.1 优化平滑4.2 梯度较好4.3 为什么说 MSE 是平滑的 1. Huber Loss 原理详解 Huber Loss 是一种结合…...
Maven下载配置
目录 Win下载配置maven的环境变量 Mac下载安装配置环境变量 MavenSetting.xml文件配置 Win 下载 https://maven.apache.org/ 在主页面点击Download 点击archives 最好不要下载使用新版本,我使用的是maven-3.6.3,我们点击页面下方的archives࿰…...
JS基础(5):运算符和语句
一.运算符 1.赋值运算符 加减乘除都是一样的,,-,*,/ 2.一元运算符:经常用来计数 自增: 每次只能加一 自减:-- 前置自增 后置自增 结…...
游戏引擎学习第81天
仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中,讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分,因为当时主要的工作重心不在这里,但在实现过程中,发现地…...
网络安全 | 什么是正向代理和反向代理?
关注:CodingTechWork 引言 在现代网络架构中,代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介,帮助管理、保护和优化数据流。根据代理的工作方向和用途,代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…...
前缀和——模板 二维前缀和
一.题目描述 【模板】二维前缀和_牛客题霸_牛客网 二.题目解析 这道题和上一道题有点异曲同工之妙。输入一个m行n列的矩阵,然后进行q次操作,每次操作输入4个数,作为两个点的坐标,计算这两个点为对角线的矩阵的和。 三.算法原理 …...