携程 x TiDB | 应对全球业务海量数据增长,一栈式 HTAP 实现架构革新 环球头条
随着新冠病毒疫情的缓解和控制,全球旅游业逐渐开始重新复苏。尤其在一些度假胜地,游客数量已经恢复到疫情前的水平。
【资料图】
携程作为全球领先的一站式旅行平台,旗下拥有携程旅行网、去哪儿网、Skyscanner 等品牌。携程旅行网向超过 9000 万会员提供酒店预订、酒店点评及特价酒店查询、机票预订、飞机票查询、时刻表、票价查询、航班查询等服务。
随着业务量迅速增长,携程需要更敏捷的技术架构来满足不断激增的并发与数据量,一个稳定、可靠,可以随业务增长不断扩展的数据库对于携程来说显得尤其重要。作为海内外在线旅游行业的翘楚,携程也曾面临着数据库带来的技术挑战。
携程创立于 1999 年,最初选择使用 SQL Server 数据库,在整体数据库技术栈中占比达到 99%。 2012 年初,携程开始逐步关注开源技术,尤其是 MySQL,不过该阶段 MySQL 使用占比仍然很低,只有 10% 左右。从 2014 至 2019 年,携程开始加深 MySQL 的应用,并因为业务形态发生了变化,携程开始从 SQL Server 转型到 MySQL,对 MySQL 进行了深入研究,包括内核补丁、全自动故障诊断等。
原 MySQL 架构痛点与挑战
携程的应用部署在两个或多个 IDC 中,数据库也对等部署在每个 IDC 中。MySQL 部署方式采用 HA节点,即主备节点,在同一机房部署,另一节点在不同 IDC 部署,这种方式保证了 HA 切换速度和数据的容灾。比如遇到单机房故障或者整个机房宕机,可以迅速把第二节点启动起来。携程在主备切换和第二切换时做了很多自动化工作,但这种架构也有明显缺点,由于应用的无状态化,数据库的切换会造成业务的短暂中断,因为数据库只有一个主节点。
在扩展方式方面,携程没有采用中间件的方式,而是采用客户端实现分片规则。客户端在上线时会确定分片规则,比如 64。再根据 ID 使用取模运算定位到某个分片,这样可以更方便地进行扩展。当业务增加时实例数量从 1 变成 N ,当负载下降时也可以缩回来。
但是这种扩展方式对 DBA 运维来说还有一些挑战,随着 DBA 越来越多,聚合会比较困难,业务代码也变得复杂。
分布式数据库选型
2018 年,随着携程业务的快速发展,底层架构需要支持弹性扩展,特别是在季节性高峰期(例如春运火车票抢票等)。分布式数据库由于具有 DB 级弹性、快速扩展和混合负载(HTAP)等优势,更适合业务的发展,携程开始考虑引入分布式数据库,并进行调研选型。携程主要从以下几个维度考量分布式数据库:
·性能:平衡性能和成本,选择通用机型,不使用高端存储或机器,并要求响应稳定;
·运维与社区:学习成本适中,运维复杂度低,产品需开源且社区活跃;
·成本:一方面,业务研发需要学习使用 SQL,特别是 MySQL 协议;另一方面,运维团队希望产品不要过于复杂,易于维护;
·扩展性:分布式数据库需要具有快速的扩展能力,扩缩容对业务影响小。
2018 年,携程开始正式引入 TiDB。考虑到 TiDB 的架构和携程的 IDC 环境,携程将 TiDB 分别部署在三个 IDC 机房(IDC1、IDC2、IDC3)中,遵循同时部署的标准。TiKV、TiDB 和 PD 均匀分布在三个 IDC 机房中,业务流量可以本地感知到每个机房的 TiDB Server ,在单机房故障时可以自动重启到其它机房。因为客户端对 TiDB 进行了探活与感知,单个 TiDB 服务器故障时客户端可以重新定向。
TiDB 在酒店和度假结算场景的应用
在酒店和度假结算场景应用中,携程原 MySQL 架构主要采用分片(sharding)的扩展方式,对于酒店和度假结算这类业务来说,分片会变得非常困难。最初的方案是把 SQL Server 上的数据原封不动导入到 MySQL 中,但测试后发现性能不佳,扩展性也受限。如果采用分片方式部署,不论从酒店的维度、供应商的维度或者是用户维度,都很难选择合适的分片键( sharding key),这种方式也对业务代码侵入性比较大。因此,携程最终选择了 TiDB,将酒店和度假结算业务从 SQL server 迁移到 TiDB 上,总数据量规模达到 8TB,并受到了开发人员的一致好评,满足了性能和扩展性的诸多要求。
TiDB 在海量数据场景中的应用
携程的海量数据场景涉及到大量数据存储。原架构中由于单机存储限制,扩展必须通过 sharding 方式实现。但该解决方案对于一些业务而言过于复杂,例如在 IBU 海外业务部数据,单表数据已经超过 300 亿。应用 TiDB 可以大幅提高查询性能,实现大量数据的高效存储。TiDB 的行列混存架构( TiFlash 和 MPP 技术),使得携程部分查询性能有了20倍提升;在信息安全源数据标记数据时,单表数据也超过了 60 亿行,读写的响应时间都达到毫秒级,单天聚合查询秒级返回。
除了使用 TiDB ,携程还在使用其存储层 TiKV。引入 TiKV 是因为携程现在的业务有一些简单的 KV 存储需求,携程在使用的产品有 Redis 和 Hbase,但是 Hbase 的性能相比于 Redis 比较差,而 Redis 则存在数据不一致的风险,比如网络抖动、中断等。携程有一些业务有强一致 KV 需求,例如近期引入的酒店取消政策项目,Redis 虽然能满足业务需求,但没有强一致性能。综合考量之后,携程选择了 TiKV 解决上述挑战。TiKV 的部署与 TiDB 类似,也是在三个机房分布部署,应用可以感知到每个机房的 PD,并且 PD 也在三个机房分别部署。该架构可以确保如果出现机房级故障,或是单 PD 故障,运维团队都可以做到平滑切换。
TiDB 在携程的全球化运用
随着携程近年来开始走向海外,海外业务呈现迅猛增长趋势。携程也将国内成熟的数据库技术直接用于海外。目前,TiDB 在携程的国内和海外业务是分开部署的,海外应用复用了国内的 schema 和代码,监控告警方式也与国内保持一致,部署方式也是相同的。
携程引入 TiDB 并完成了一系列内部生态整合,包括发布系统(如表结构发布、索引发布)、数据修改和查询等。由于 TiDB 和 MySQL 采用了相同的协议,整合过程相对简单平滑:
·TiDB 原生支持 Prometheus + Grafana,提供了丰富的诊断数据,可以根据 TiDB 故障诊断手册快速定位问题。
·由于 Grafana 的数据在每个集群上单独分布,携程通过prometheus 源生remote write转发性能数据到携程统一监控平台,以便在监控平台上进行性能告警和大盘监控。
目前,携程已经顺利完成从 SQL server 到 TiDB 的迁移,稳定应用于携程的国内、海外各业务场景中,借助 TiDB HTAP 能力,携程大幅提高了查询性能,实现海量数据的高效存储。
标签:
相关推荐:
最新新闻:
- 38女神节,西昊开启“女神办公新喜好”主题活动-要闻速递
- 携程 x TiDB | 应对全球业务海量数据增长,一栈式 HTAP 实现架构革新 环球头条
- CAXA电子图板2007怎么激活?caxa电子图板2007快捷操作
- 什么是邮件服务器?邮件服务器在哪里找?
- win7系统如何设置待机时间?设置待机时间的步骤
- 安卓手机文件夹怎么加密?安卓手机通讯录怎么导入苹果?
- “海信好少年”颁奖,海信真空冰箱公益助学播撒爱的种子 世界百事通
- gzip压缩命令怎么使用?gzip压缩命令的使用方法
- 超凡融合,还是低估了比亚迪CTB技术的潜力
- 世界微头条丨京东集团持续聚焦提升用户体验 JD Ehome门店、手机小时购打造购机新渠道
- 手机发热怎么办降温?手机发烫关掉什么功能可以降温?
- 花刺代理验证怎么导入ip?花刺代理怎么使用?
- win8系统显卡驱动异常怎么解决?显卡驱动异常的解决方法
- dvr4000监控有用吗?dvr4000监控安装步骤
- 网页三剑客是哪三个软件?网页三剑客安装方法
- mtpusb驱动安装失败怎么办?mtp usb驱动安装步骤
- 智能ABC输入法如何安装?win7智能ABC输入法安装步骤
- Win10为什么360安全卫士打不开?360安全卫士打不开原因分析及解决方法
- 淘宝描述加载中打不开是怎么回事?淘宝描述怎么写?
- 量产u盘是什么意思?u盘怎样进行量产?量产u盘的方法分享
- 笔记本散热器有用吗?哪个笔记本散热器品牌比较好?
- hkcmd.exe出错的原因是什么? hkcmd.exe出错解决办法
- 没有光驱重装系统怎么办?没有光驱重装系统设置办法
- wow插件怎么安装?魔兽世界插件安装教程
- 360隔离的文件在哪?隔离的文件怎么恢复?
- 电脑如何卸载ie9浏览器?卸载ie9浏览器的方法步骤
- rtl8187无线网卡怎么使用?详解rtl8187无线网卡驱动用法
- 天水市怎么查社保交了几年 2023年天水市社保卡查询方法一览 环球快看点
- 手游大厂Gameloft关闭布达佩斯工作室 重心转向端游
- 今日播报!超越《指环王》!《瞬息全宇宙》成影史获奖最多影片
- 高清重生探寻死亡 《幽灵诡计:幻影侦探》6.30发售
- 《怪物圣所》开发商新作《Aethermancer》Steam页面上线 暂不支持中文
- 《层层恐惧》开发商Bloober Team希望能保持独立 腾讯是其最大股东
- 每日头条!简笔画公主简单又漂亮长裙_简笔画公主简单又漂亮
- PS5《生化危机4:重制版》支持陀螺仪瞄准 但不能调整灵敏度:天天微速讯
- 曝《自杀小队:杀死正义联盟》将再次跳票!实机演示拉跨粉丝怒了_全球焦点
- 全球百事通!Epic为开发者推出游戏商城官方自发行工具
- 卡普空侦探游戏《幽灵欺诈》最新游戏介绍 6月30日发售
- 怎么删除用户帐户?win11怎么把管理员账户删除?
- 电脑电源线怎么接?电脑电源线连接的方法
- 2023年E3行业人员登记现已开启 媒体可申请通行证_天天最资讯
- wmiprvse是什么进程?关闭wmi服务有什么影响?
- nef格式是什么?nef格式的照片怎么打开?nef格式的图片的打开方法
- 怎么设置开机启动项 开机启动项快捷命令是什么?
- 《生化危机4:重制版》Demo实机演示 里昂大战电锯人
- win7声卡驱动在哪里打开?win7声卡驱动打开方法步骤
- webfreer如何安装设置?webfreer安装设置步骤
- 怎样设置白平衡?为什么需要白平衡?白平衡有哪些应用?
- 显示器是什么意思?显示器都由哪些部分构成?
- 什么是PPTX?什么是PPT?ppt和pptx的区别在哪?
- 电脑打字卡顿显示很慢是怎么回事?电脑打字卡顿显示很慢解决方法
- 笔记本电脑怎么系统还原?电脑还原系统的方法步骤
- 电脑没有网络适配器是怎么回事?电脑没有网络适配器解决办法
- 360路由器WiFi设置网址是多少?360路由器中无线网络的设置步骤
- 魔兽世界simc模拟器怎么用?Simc模拟器使用方法及代码介绍
- 【全球时快讯】WEB前端开发需掌握的技术有哪些?WEB前端开发需掌握的技术
- 全球销量惨淡!苹果计划降低iPhone12mini手机产量
- 【CSDN博客】项目文档结构和依赖库介绍
- 全球今头条!浙大硕士论文答辩经典ppt模板(免费下载)
- java学科新教程全面讲解百度地图原理与应用(下):环球热闻
- 企业级发卡网源码有哪些基本要素?发卡网源码附企业发卡网源码搭建安装教程|当前播报
- Fedora 15怎么安装?Fedora 15安装与配置一览:全球独家
- ajax访问api接口内容精选 换一换访问控制策略|每日焦点
- 网站优化中常见的黑链(隐藏连接)代码有哪些?
- 环球速看:java版SpringCloud之目前得前端框架都有哪些?Vue.js中文教学视频教程
- 天天资讯:配置reportservice和创建报表的基本步聚
- 开发一个APP要多少钱?APP商城开发多少费用?
- 【系统漏洞】如何对Windows系统进行安全加固? 环球报资讯
- 如何备考阿里云云计算工程师ACP?如何快速通过阿里云ACP认证?
- GridView:指定模板列的两种方式
- 每日快报!iPhone3GS降级固件1015错误怎么办?解决iPhone3GS降级固件1015错误的方法
- 为什么中国会有CMWAP和NET两兄弟?详解CMWAP和CMNET:天天快看点
- 为什么企业要做CMMI认证?原因有哪些? 看点
- 自动打码挂机赚钱是真的么?挂机打码赚钱日赚上百元?
- 全球云IT基础设施投资占比超55% 云容灾迎来市场拐点-世界观速讯