专访携程网DBA:携程在手 为何能说走就走?

2021-09-03 00:00:00 数据 数据库 复制 携程 皮皮

携程在手,说走就走!无论是PC端还是移动端,只需简单的几步鼠标操作,就能轻松搞定出行旅游。如果把页面设计比喻成一张脸的话,携程后台的数据支持、用户行为分析等则是让携程跳动的心脏。 从用户点击、打字、勾选、搜索、浏览以及下单,整个过程都会生成一条数据落入携程的数据库中。如此洒脱的举动背后,究竟隐藏着什么样的数据库?是Oracle、SQL Server 还是MySQL?尽管由阿里发起的“去IOE”运动发展得如火如荼,甚至还有人打趣说,“去IOE”好比穿T恤的,干掉了穿西装的。但正如社会并不是非黑即白那么简单,携程网使用的是混搭数据库,本期名人堂我们重邀携程网携程旅行网MySQL数据库团队经理任赟婷坐镇 ,为我们揭秘数据库的内幕!



皮皮(Q1):任总,您好!能否简单介绍下自己?

任赟婷(A1):我于2007年本科毕业于上海交通大学后,从实习生开始加入携程DBA团队进行数据库管理工作。5年后成长为数据库工程师,在2012年开始,从零开始打造携程自己的MySQL运维体系和数据库团队。现在带领着一个稳定且迅速成长的MySQL技术团队,负责携程数百台线上数据库的良好运转。



皮皮(Q2):我了解到,您从毕业就开始进入携程网了,到现在已经有7年了,伴随着携程网的壮大,您也拥有了自己的MySQL技术团队,能否回顾下这些年的坚持有哪些收获和体会?

任赟婷(A2):在携程的整个交易系统中,DB是不容易扩展的,一旦数据库出现了可用性或者性能问题,携程的业务可能在大范围内受到影响。因此随着MySQL数据库的规模从几十台增长到几百台,MySQL DBA也从一两个人扩大到一个团队,我觉得肩上的担子越发沉重。在数据库管理方面,除了要兼顾数据库核心的高可用和高性能外,我们在日常工作中还需要保持谨慎的态度,平时的每个操作每个变更,都需要仔细的评估,再谨慎也不为过。同时,自动化也是重要的发展方向,每个DBA都具有运维工具的软件开发技能,我们通过各类自主研发的自动化工具来保证操作的规范性和一致性,从而把人力从重复劳动中解放出来。另外,现在数据库技术的发展也相当快速,我们DBA不断学习,有选择地引入新技术和实战经验,并且以他人之长,补己之短。



皮皮(Q3):2015年中国数据库大会以“大数据技术探索与价值发现”为主题,作为演讲嘉宾,您能否剧透下您的演讲主题?

任赟婷(A3):这次想要分享的主题是MySQL复制性能优化之并行复制源码改造。这也是从实际的需求中应运而生的产物,携程现在有很多写入压力大的应用,但又因为各种原因不方便拆分DB做分片,比如各种业务的日志数据、zabbix后台,这类应用的对表的对插入请求量很大,导致复制的压力很大容易产生瓶颈。因此我们对MySQL的复制SQL进程进行调整,改造Log_event类中的get_slave_worker事件处理线程的获取方式,以实现表级别的并行复制,提高复制的性能。



皮皮(Q4):谈到MySQL复制性能优化,我们可能会想到MySQL的主从复制性能优化,能否结合具体的应用场景,谈谈什么时候适合采用表级别的并行复制?

任赟婷(A4):在我们的实际场景中,会明显出现复制瓶颈的应用,基本具有两个特点:一是主机上大量的并发写入集中在几个热点表,二是这些热点表的写入对执行顺序不敏感。例如zabbix后台数据库,或者业务日志数据库。因此我们改造实现的表级别并行复制的功能,也就是针对此类场景对症下药,适用于且局限于符合上述两个条件的应用场景。



皮皮(Q5):由阿里发起的“去IOE”运动发展得如火如荼,更有人打趣,把“去IOE”比喻成穿T恤的,干掉了穿西装的不过很多企业并没有钟情于单一数据库,而是选用了多库混搭的方式,那么携程为何要选用SQL Server 和MySQL共存的状态?

任赟婷(A5):携程引入MySQL数据库,并在新应用中推广MySQL的使用,也是出于推动纵向扩展转化为横向扩展的目的,以面对更多倍的业务增长。在数据库层面,通过简化数据库的访问方式、去除DB内多余的逻辑处理和运算,一方面能以较低的硬件配置就能获得较高的TPS容量,另一方面也减少应用对DB的依赖和耦合性,并使得将来可能需要的拆分扩展更易实现。


皮皮(Q6):工欲善其事,必先利其器 。"SQL审核"这个概念被屡次提及,成为一个重要的核心关键词。我们知道去哪儿网用到了审核工具是Inception,那么携程网呢?能否和我们分享下携程网是如何保证数据库系统的高可用性架构,又是如何做到自动化运维的?

任赟婷(A6):关于SQL审核,我们开发了携程自己的SQL Review的工具,SQL Review工具基于一套线下仿真的数据库review环境,对每个提交审核的SQL按照不同的调用频率制定了不同的性能规范要求,待审核的SQL会在仿真环境运行,得到执行时间、执行计划等关键信息,并自动得出审核报告,包括SQL优化的方向。


我们的高可用架构是基于master ha实现的CMHA系统,能保证快速的自动故障转移,对业务影响降到低。自动化运维渗透在各个方面,除了基本的MySQL自动安装配置等,还有自动化的DB部署、自动化数据清理平台、自动化分区表维护等,大部分都是通过python+django框架来实现的。



皮皮(Q7):从演讲嘉宾的角度,您期待2015中国数据库技术大会有哪些亮点?

任赟婷(A7):数据库技术大会提供了一个很好的平台,我期待能看到其他公司在数据库运维各个方面的不同的想法和做法,包括性能优化、自动化运维等,希望大家能碰撞出更多火花。



皮皮(Q8):2015中国数据库技术大会的主题是“大数据技术探索和价值发现”,作为传统关系型数据库的DBA,该如何应对大数据带来的挑战?

任赟婷(A8):对传统关系型数据库来说,面向的需求是完全不同于大数据的。关系型DB的优势在于对事务性和数据安全一致性的保障,而大数据则重在高性能的数据处理和运算。在我们的系统中,大数据和传统关系型数据都不可或缺,关系型DB主要用于线上的业务和交易系统,大数据系统如hadoop则用于线下的大量数据分析。另外,即使在大数据的场景,仍然离不开关系型DB,典型的例子就是用于存放重要的元数据配置信息、运算好之后的结果报表之类。


非常感谢任赟婷为我们带来的精彩分享,希望大家能够积极参与互动,就自己所关心的话题提问或者交流心得,想了解更多名人堂嘉宾访谈或者报名参加名人堂,请点击:http://www.itpub.net/star/




相关文章