携程xTiDB应对全球业务海量数据增长,一栈式HTAP实现架构革新

随着新冠病毒疫情的缓解和控制,全球旅游业逐渐开始重新复苏。尤其在一些度假胜地,游客数量已经恢复到疫情前的水平。

携程作为全球领先的一站式旅行平台,旗下拥有携程旅行网、去哪儿网、Skyscanner等品牌。携程旅行网向超过9000万会员提供酒店预订、酒店点评及特价酒店查询、机票预订、飞机票查询、时刻表、票价查询、航班查询等服务。

随着业务量迅速增长,携程需要更敏捷的技术架构来满足不断激增的并发与数据量,一个稳定、可靠,可以随业务增长不断扩展的数据库对于携程来说显得尤其重要。作为海内外在线旅游行业的翘楚,携程也曾面临着数据库带来的技术挑战。

原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机房中,业务流量可以本地感知到每个机房的TiDBServer,在单机房故障时可以自动重启到其它机房。因为客户端对TiDB进行了探活与感知,单个TiDB服务器故障时客户端可以重新定向。

TiDB在酒店和度假结算场景的应用

在酒店和度假结算场景应用中,携程原MySQL架构主要采用分片(sharding)的扩展方式,对于酒店和度假结算这类业务来说,分片会

变得非常困难。最初的方案是把SQLServer上的数据原封不动导入到MySQL中,但测试后发现性能不佳,扩展性也受限。如果采用分片方式部署,不论从酒店的维度、供应商的维度或者是用户维度,都很难选择合适的分片键(shardingkey),这种方式也对业务代码侵入性比较大。因此,携程最终选择了TiDB,将酒店和度假结算业务从SQLserver迁移到TiDB上,总数据量规模达到8TB,并受到了开发人员的一致好评,满足了性能和扩展性的诸多要求。

TiDB在海量数据场景中的应用

除了使用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源生remotewrite转发性能数据到携程统一监控平台,以便在监控平台上进行性能告警和大盘监控。

目前,携程已经顺利完成从SQLserver到TiDB的迁移,稳定应用于携程的国内、海外各业务场景中,借助TiDBHTAP能力,携程大幅提高了查询性能,实现海量数据的高效存储。

THE END
1.什么是android的四大组件嘉兴雷鸟软件科技有限公司是专注于提供软件外包、手机APP开发、微信公众号开发、商城网站开发、企业软件定制、政府信息化等综合型互联网方案,APP开发服务包括IOS开发、安卓开发、平板Pad开发;为顾客提供软件定制开发、微信开发、商城网站开发一站式解决方案服务。http://www.lei-niao.com/news_407.html
2.绵山悬空栈道在哪一站下车车友交流懂车帝提供绵山悬空栈道在哪一站下车的车友交流详细内容,懂车帝是一个汽车资讯平台,懂车更懂你。我们提供最新汽车报价,汽车图片,汽车价格大全,行情、评测、导购等内容,看车选车买车就上懂车帝。https://www.dongchedi.com/tag/ugc/12875108
3.上海市育鹰学校“基于“基于教学改革融合信息技术的新型教与学...4、一站式服务支撑,助推因材施教 实现各类业务系统间基于数据中心的数据融通,建立个性化的学生画像,辅助教师开展个性化学习支持和教学指导,促进学生综合素质提升。 二、成果应用效果、推广设想、可持续发展情况 1、预期成果如下: 1)学校信息化三年发展规划一个 ...http://www.yuying.edu.sh.cn/info/1076/8592.htm
1.初阶数据结构5栈栈的概念:栈是一种只能在一端进行数据的删除或增加的一种线性表,它的物理结构不一定是线性的。进入数据或删除数据的一端称为栈顶,另一端称为栈底。增加(进入)数据的过程称为进栈(压栈),删除数据的过程称为出栈。如图所示: 什么数据也没有就称为空栈,如图所示: ...https://blog.csdn.net/2401_83009236/article/details/143805232
2.LinuxC编程一站式学习勤于思考.本书尽最大努力理清概念之间的依赖关系,力求一站式学习,读者不需要为了 找一个概念的定义去翻其它书,也不需要为了搞清楚一个概念在本书中前后一通乱翻,只 需从前到后按顺序学习即可.但一站式学习并不等于傻瓜式学习,有些章节有一定的难 度,需要积极思考才能领会.本书可以替你节省时间,但不能替你...http://staff.ustc.edu.cn/~guoyan/os12/LinuxC.pdf?eqid=872ddca70000a53b0000000464740f10
3.开源模型还是商业模型?阿里云智能张翅提出金融企业选择大模型的6大挑...在《全域数据“观”》一书中,我们曾断言:“数据的下一站是智能,数据最终会走向与业务系统的数智融合”,数据消费正在由“人”变成“系统”。未来数据技术将与云原生和智能化全面融合,形成“云数智一体化”服务。云原生技术栈,为企业带来了资源弹性、异构算力、容器和微服务等技术手段,为业务创新和系统建设提供了高效...http://finance.sina.com.cn/roll/2024-05-27/doc-inawsceu2479379.shtml
4.学习springcloudalibaba之前要学习springcloud吗学springcloud...Dubbo这一套方案并不完善 3. Spring Cloud Alibaba 最新的一站式解决方案!更简单 1. 注册中心:Nacos 2. 熔断:Sentinel 3. 网关:GetWay 新概念: 服务网格~Server Mesh 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ...https://blog.51cto.com/u_12228/10153861
5.一站式数字化营销宜昌数字化营销数字人视频矩阵宜昌臻岛信息技术有限公司是珍岛集团T云宜昌运营中心,为中小微企业提供宜昌数字化营销实施方案,T云产品包括网站小程序制作,云引擎智能推广,覆盖80%流量平台的在线商机,电子名片,数字人视频矩阵,短视频AI制作,BI决策,AI臻图臻文,新浪,搜狐,网易,腾讯新闻发布,企业口碑,再营销https://www.zdtyun.com/
6.数据库系列报告开篇:技术路径复盘及展望演进方向一:多模数据库。数据模型繁复、多系统运维带来难题,企业开始寻求技术栈收敛的一站式解决方案。企业在数字化转型早期,会选择一些核心的、成熟的场景进行单点数据库部署。但随着业务发展、场景变迁,企业面对多样化的数据来源,需要配合多种数据存储模型进行管理。使用多种单模型数据库将会导致数据冗余、数据一致性治...https://research.cicc.com/frontend/recommend/detail?id=2640
7.美军联合信息环境(JIE)启示和综述简单地说,传输型CDS其实就是网闸和光闸这类隔离交换产品;访问型CDS则是多网切换和跨网终端类产品;多级型CDS则是包含访问CDS和传输CDS能力的一站式CDS(这种产品非常罕见)。 4、CDS的基础理论 CDS使用了两种安全理论模型:MILS(多独立级别安全)和MLS(多级安全)。其中,访问CDS基于MILS架构;多级CDS基于MLS架构。 https://www.secrss.com/articles/17467
8.数据仓库与数据湖与湖仓一体:概述及比较腾讯云开发者社区数据湖仓一体提供的独特功能越来越模糊了两种结构之间的界限。Presto 和 Spark 技术引入了高性能 SQL,在数据湖上提供近乎交互式的速度。这一创新为数据湖直接服务分析和探索创造了可能性,无需汇总到传统数据仓库中。 Parquet 等文件格式为数据湖表引入了更严格的架构,并采用列式格式来提高查询效率。为了进一步缩小差距...https://cloud.tencent.com/developer/article/2409056
9.袋鼠云数栈DTinsight和药融云哪个好有什么区别优缺点药融云是一家生物医药大数据一站式检索平台,其目的是为全球生物医药行业的专业人员提供高效、精准的搜索服务,帮助他们更好地获取所需信息、快速掌握动态,为未来的研究和发展提供支持。药融云平台主要包含以下模块:药物化学、药理学、生物学、化学生物学、基因组学、药物代谢和药动学、生物技术、临床研究等。药融云还提...https://www.36dianping.com/vs/jvy8.html
10.云开发支付宝云开发结合COCOS一站式小游戏开发语言开发语言,这样很多情况下可以做到下游戏前后端一栈式开发,简化游戏开发者技术栈要求。支付宝云开发...https://open.alipay.com/portal/forum/post/132401037