TiDB 在咪咕云原生场景下的实践

导读

咪咕是中国移动旗下的视频科技公司,门户系统是其核心业务之一。 为满足用户的多样化需求,咪咕计划对其数据库进行升级。 经过对中国主流国产数据库的测试评估后,咪咕选择了 TiDB,并成功将其落地于门户系统云化项目。 TiDB 为咪咕在业务增长、高可用性、性能提升、数据整合等方面带来了显著价值。 未来,咪咕计划拓展 TiDB 在更多业务场景中的应用,助力其业务创新和降本增效 。

咪咕简介

咪咕视讯科技有限公司(简称:咪咕)是中国移动旗下咪咕文化科技有限公司的全资子公司,是中国移动在视频领域的唯一运营实体,主要产品包括咪咕视频、咪咕影院、咪咕直播等。截止 2023 年 6 月,咪咕视频全场景有效月活用户数超 3.6 亿,数字内容涵盖 4818 万条视频、10000+ 部精彩大片、院线票务覆盖 12000 家影院、1200+ 路 音视频直播等。咪咕在 2023 年打造了杭州亚运会、男篮世界杯、女足世界杯、成都大运会等多个口碑视听体验 。

分布式数据库选型的能力要求

门户系统是咪咕视讯的核心业务系统之一,提供的业务功能包括大屏挂件、直播中台、应用管理平台、策略平台、大屏展现、直播展现、任务调度、车载服务等。这些功能直接关系到组织内外信息的高效传递和流动。门户系统的服务范围广泛,旨在满足用户多样化、灵活性、高并发和高可用需求。因此门户系统底层依赖的数据库需要具备高性能、高可用、灵活弹性的特点,同时还需要具备方便业务开发的用户使用体验,满足门户系统云化微服务改造的要求。

随着业务的快速发展,特别是在 世界杯、热门赛事、热播电视剧等超级流量爆发下 ,门户系统经历了多次改版、扩容,仍然不能满足飞速增长的日活用户及用户个性化体验的要求, 在灵活性、插件化、微服务、云化部署、数据库服务等方面有待升级 。咪咕计划通过数据库的原生分布式改造,全面提升数据库的服务能力,选型的要求包括:

 原生分布式架构

满足业务快速变化的需求,不对业务产生过多的侵入,数据库须采用原生分布式架构,计算和存储可按需扩展,具有原生分布式的高可用机制,非中间件分库分表架构,适配云原生和微服务环境。

 后端引擎能力

支持本地和分布式事务,满足 ACID 属性要求,具有分布式一致性共识机制,达到常规的事务隔离级别,并能正确高效地处理事务异常,具有全局索引能力。

 前端开发兼容性

数据库须兼容和延续现有的应用架构和代码,具有相应的开发兼容性、字符集、客户端的前端支持要求。

 恢复和备份能力

支持物理备份、逻辑备份、全量和增量备份,支持将集群恢复到任意时间点和闪回,提供金融级的灾备能力。

此外,安全能力、可视化运维、技术生态、售后服务体系的支撑能力也成为数据库选型的考察重点。咪咕技术团队对中国主流的国产数据库做了 9 类、34 科、共 244 个项目的测试评估,TiDB 以最高分入选。

TiDB 在咪咕云原生场景的落地

咪咕技术团队从技术论证、前期准备、分批割接、并行运行、完全割接等环节出发,制定了稳妥的实施方案,保障了 TiDB 在门户系统云化项目的落地。 咪咕在 3 个独立的资源池分别部署 3 套 TiDB 集群,集群间使用 TiCDC 组件完成数据同步,业务连接到主集群进行读写,并可实现快速的容灾切换。通过访问控制策略,使得备集群在作为应急备援切换目标的同时,也保持着多中心多活只读服务的承担,充分发挥资源能力。

微服务架构示意图

咪咕门户系统从 2023 年 7 月切割到 TiDB 后,已经稳定运行超过 100 天 ,期间经历了女足世界杯、成都大运会、男篮世界杯、杭州亚运会四个重大赛事业务高峰的压力。在重大赛事期间 TiDB 运行非常平稳, 业务峰值流量 QPS 大于 20K,TPS 大于 8K,且平均响应延时低于 100ms 。

TiDB 在落地过程中得到了咪咕门户改造项目负责人的高度评价:

TiDB 总体上能够较好适配咪咕当前的技术架构和运行系统,满足开发和运维关注的长期发展的重点,包括微服务框架、开发兼容、运维质量和效率提升等,所遇到的问题都能较快地解决。

应用价值

 匹配业务增长,轻松应对瞬间高峰

TiDB 原生分布式架构具备灵活的弹性伸缩能力,可匹配业务的特点分别扩展计算与存储能力,提供强劲的性能支持。如在大促活动前进行快速的扩容,活动中短时高峰实现应急在线扩容,整个过程对业务透明,无需人工干预。

 高可用架构,提升更好的业务连续性

实现数据库和应用系统多中心提供对等服务,充分发挥集群所有节点的工作能力,并且互为冗余,既提高利用率又降低风险。TiDB 在集群内部各个组件均采用冗余设计,避免了任何单点的故障,通过 TiCDC 同步数据到异地灾备集群,为实现跨机房的高可用性提供了保障。

 具有更好的性能,承载更多业务

通过实际运行对比,TiDB 集群在整体硬件资源少于原 MySQL 集群的情况下,达到原有 MySQL 集群性能的 1.88 倍,即在原有硬件资源的基础上提升了约 90% 的业务承载能力。

 为数据整合、挖掘数据价值提供基础

原有架构的几十套 MySQL 数据库相互独立,烟囱式发展,无法将各分散的业务进行关联分析,从而挖掘数据价值。TiDB 将原来十几套 MySQL 数据库归集到一个集群中,实现多个业务系统数据的实时汇聚、实时反馈、实时洞察和实时变现,带来极致的用户体验。

未来展望

随着 TiDB 7.x 版本的发布,TiDB 引入了资源管控(多租户)、DDL 并行执行框架等新特性。咪咕视讯将积极探索这些新功能,逐步拓展 TiDB 在更多业务场景中的应用,并将 TiDB 最佳实践推广至其他子公司,助力业务创新和降本增效。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

太阳能监控智慧杆供电系统

太阳能监控智慧杆系统工作时无需水、油、汽、燃料,只要有光就能发电的特点,是清洁、无污染的可再生能源,而且安装维护简单,使用寿命长,可以实现无人值守,倍受人们的青睐,是新能源的领头羊。近年…

【封装UI组件库系列】封装Button图标组件

封装UI组件库系列第四篇封装Button按钮组件 🌟前言 🌟封装Button组件 1.分析封装组件所需支持的属性与事件 支持的属性: 支持的事件: 2.创建Button组件 🌟封装功能属性 type主题颜色 plain是否朴素 loading等…

鸿蒙开发学习——应用程序框架

文章目录 UIAbility的生命周期Create状态WindowStageCreateForeground和Background前后台展示控制onWindowStageDestroyDestory 总结 UIAbility的生命周期 感觉这里他讲的不清晰,UIAbility的4个声明周期是Create、Foreground(桌面展示)、Back…

kali linux nmap 端口扫描 简单教程

本次实验所用工具如下: VMwarekali linux (namp扫描工具)Windows sever 2016 需开启(FTP,smp,Telnet,rdp)端口namp操作所用部分代码: -sP ping 扫描 -P 指定端口范围 -sV 服务版本探测 -A …

【UE】绘制抛物线并投射物体

效果 步骤 1. 先新建父类为Actor的蓝图,这里命名为“BP_发射物” 打开“BP_发射物”,添加一个球形的静态网格体和一个发射物移动组件 2. 新建一个父类为角色的蓝图,这里命名为“BP_绘制抛物线” 打开“BP_绘制抛物线” 我们希望可以通过控制…

2023.11.28-电商平台建设03 - 大数据调优手段

1.优化手段 1.1分桶表 HIVE的分桶本质上就是MR的分区操作 建表语句: create table 表名(字段 类型,.... ) clustered by(分桶字段) [sorted by (字段 [asc | desc])] into N buckets --- 定义分桶表核心语句 row format...... 分桶的作用 1) 进行数据采样工作 1.1) …

【古月居《ros入门21讲》学习笔记】14_参数的使用与编程方法

目录 说明: 1. 参数模型(全局字典) 2. 实现过程(C) 创建功能包 参数命令行的使用 YAML参数文件 rosparam命令 使用示例 编程方法(C) 配置代码编译规则 编译并运行 编译 运行 3. 实…

五丶openlayer之LOD和分辨率

LOD是Levels of Detail的简写,用于根据当前的环境,渲染不同的图像,用于降低非重要的细节度,从而提高渲染效率,在电子游戏中经常运用,对于需要显示全球地图的GIS系统而言,更需要应用这项技术。 …

Docker+Anaconda+CUDA+cuDNN

一、导语 因为要复现文献的需求和实验室里师兄想要给我提升能力的多方面因素在一起,所以学习并实现了相关安装。在这里做一个记录,方便日后查看,如果能给其他同学带来便捷就更好了。 在这篇文章中,我的目标是搭建一个可以使用Py…

VSCode Vue 开发环境配置

Vue是前端开发中的重要工具与框架,可以保住开发者高效构建用户界面。 Vue2官方文档:https://v2.cn.vuejs.org/ Vue3官方文档:https://cn.vuejs.org/ Vue的安装和引用 Vue2的官方安装指南:https://v2.cn.vuejs.org/v2/guide/ins…

github新建项目

参考链接:Github上建立新项目超详细方法过程 在这里新建一个repositories 接下来就选择相关的信息: 然后create a new就行了 接下来需要创建文件:(同时通过upload上传文件) 每次最多上传100个文件,然后保…

WEB渗透—反序列化(八)

Web渗透—反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩哔_…

11.27二叉查找树,遍历二叉树,层序(判断是不是完全二叉树),根据遍历序列重构二叉树,递归输入建树(树的定义,结构体细节,typedef)

如果left<right&#xff0c;就表明其之间还有元素&#xff0c;即左右指针重合&#xff0c;区间只有一个元素也被包含其中&#xff1b; left<right,就表明递归过程中&#xff0c;只允许区间有两个及以上的元素&#xff0c;不允许区间只有一个元素&#xff0c;那么对应地&…

【前端】浅谈async/await异步传染性

文章目录 概述观点无法解决可以解决 来源 概述 "异步传染性"问题通常是指&#xff0c;当一个函数使用了async和await&#xff0c;其调用者也需要使用async和await处理异步操作&#xff0c;导致整个调用链都变成异步的。这种情况可能导致代码变得更复杂&#xff0c;不…

基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(三)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这一节主要是对每个流程节点的字段规则设置与操作规则设置&#xff0c;目前也是只针对自定义业务表单。 1、…

基于SSM的社区团购系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

python基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中&#xff0c;我们已经以钢铁产业产品缺陷检测数据场景为基准&#xff0c;陆续开发构建了多款目标检测模型&#xff0c;感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否&#xff1f;基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

智能优化算法应用:基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工蜂群算法4.实验参数设定5.算法结果6.参考…

中伟视界:AI智能分析盒子的人数统计AI算法通过什么算法模型可以解决重复统计的问题?

在AI盒子的人数统计中&#xff0c;常常会遇到重复统计的问题。当有多人同时出入视野范围时&#xff0c;传统的算法模型很难准确识别和计算人数&#xff0c;容易导致重复统计。为解决这一难题&#xff0c;AI算法模型可以采用多种方法来提高准确性并避免重复统计。 一种常用的解决…

【沐风老师】3DMAX拼图建模工具MaxPuzzle2D插件使用方法详解

MaxPuzzle2D拼图建模工具使用帮助 MaxPuzzle2D拼图建模工具&#xff0c;拼图建模“彩虹系列”插件&#xff0c;是一款用MAXScript脚本语言开发的3dMax拼图建模小工具&#xff0c;可以创建2D或3D的拼图图形阵列。这让需要拼图建模的设计师大大节省了时间。 MaxPuzzle2D工具界面&…