客车界的12306,为何将数据库迁至OceanBase

近十年来,国人的出行方式发生了天翻地覆的变化,以我们熟知的铁路出行为例,联网售票、电子客票、凭身份证进站的出现给铁路出行带来很大方便。与此同时,公路出行也发生了重大变化。今天的公路客运不仅实现了联网售票、电子客票、刷脸进站,还出现了定制客运、联程运输等新的业务形态,可以说,公路客运的转型同样也走得很快。

张劲涛正是这一变化的见证者和推动者。张劲涛是盛威时代集团副总裁、首席技术官,盛威时代集团是一家为公众出行和旅游提供服务的公司,其旗下的出行365通过PC端、APP、微信公众号、微信小程序、自助售取票设备等渠道提供汽车票、定制客运、网约车、火车票等出行服务,业务覆盖28个省(区、市),实现3200余个客运站互联互通。

出行365发展的背后是张劲涛所领导的技术团队的支持,这些年来,他们持续不断地将各种先进的互联网技术应用到公路客运,彻底改变了公路客运的出行体验。2022年下半年,张劲涛又做出了一个大的决定,将现有的MySQL、Oracle数据库逐步迁往OceanBase。数据库作为出行365整个系统的底座,其更换是一件牵一发而动全身的大事。而且,和大名鼎鼎的MySQL、Oracle相比,OceanBase成名要晚得多,名气也小得多。张劲涛为何要做出这一举动,这一升级是否顺利?带着这些疑问我们独家专访了张劲涛。

互联网技术颠覆公路出行

盛威时代成立于2012年,与滴滴的成立同年,与滴滴改变了市内出行体验类似,盛威时代改变了公路客运体验。

张劲涛2013年加入盛威时代,担任CTO,负责公司的产品和技术,见证了这一行业变迁的全过程。

“最近十年是长途客运行业竞争最激烈和变化最大的十年,在互联网等技术的支持下,出现了很多新的出行方式(如高铁和网约车),给传统长途客运行业带来巨大的冲击。” 张劲涛在接受采访时表示。

但公路客运依然是主力,尤其在100-200公里的范围,公路客运依然是性价比最高的出行方式。同时,公路客户还能实现门对门,这是铁路出行所不具备的优势。

面对竞争对手的挑战,同时也是响应新时代的出行需求,出行365做出了很多创新。比如,从以前的单独买火车票或者汽车票,变成了联合出行,还依托互联网技术推出了很多新的出行方式,比如定制客运、网约车、顺风车等。

“虽然公路客运的本质没变,就是承载老百姓的出行需求,但互联网技术已经深度融入这个行业,正在颠覆这个行业。”张劲涛说。

其中最大的变化就是全面联网和业务线上化。这一变化的直接后果就是数据从以前散落在各个业务系统中到如今实现了数据的全面汇聚,使得哪怕一个细微的变化就可以全局感知,包括乘客。这给张劲涛所领导的技术部门带来了很大的压力:一方面是给终端用户的产品要好用,产品的易用性和功能性必须能满足用户的需求;另一方面是后台的网络和系统必须能提供有效的支撑,尤其是数据库,要能支撑数据的快速交换。

“比如,和12306一样,任何一个点的购票行为都会引发余票的变化。余票的变化非常频繁,系统需要能快速地对数据进行更新,而且是全网更新,这就对数据库提出了很高的要求,需要数据库能支持。”张劲涛说。

张劲涛介绍,对数据库的高要求主要体现在大数据量和频繁更新上。比如,在出行365,用以呈现各种业务的班次量就达到上亿的规模,而在更新频次上,每秒可能更新上万行。

另外,交易量也很高。张劲涛介绍:“出行365每日交易量最高达到百万笔,而且是读写同时都多,这给数据库带来了很大压力。而目前使用的数据库要么性能不足,要么成本上吃不消。”因此,公司不得已做出了更换数据库的决定。

海量数据来袭,数据库不得不换

提出数据库升级需求的首先是面向用户(比如客运站)的业务系统。这类系统部署在用户的数据中心,基于Oracle实现,部署的点多而且分散。2022年,公司决定对所有部署到用户的系统进行整合,将众多分散的小系统整合为一个大系统,并采用集中的SaaS模式为用户统一提供服务。

数千个小系统的数据统一汇聚到一起,意味着这个数据库需要承载非常大的数据量,同时,新系统需要支持SaaS模式,不管是从成本的考虑还是数据量的考虑,Oracle都不是理想的选择,选用新的数据库也就顺理成章。

提出数据库升级需求的还有清分结算系统,该系统主要服务于财务人员,是用以和供应商、分销商进行结算的系统。由于各个业务系统的数据全部都会集中到这个系统中,不仅数据量很大,还需要按业务进行各种维度的分析,而且常常是跨周期(如按月、按年等)、跨纬度的分析,同时还要求实时的写入和聚合计算。

“针对一个供应商的一次计算就可能涉及上百万条的聚合数据,一旦数据量大了,聚合运算就变得非常非常慢,计算的压力非常大。”张劲涛表示。

以前设想过用数据仓库来进行聚合运算,但数据仓库不能支持OLTP业务,而出行365的系统对事务交易的要求比较高,因此无法用数据仓库来替换。

为了满足业务需求,张劲涛开始寻找各种解决方案。比如,对于面向客运站的业务系统最早曾试过用PostgreSQL来升级Oracle。之所以考虑PostgreSQL是因为它对Oracle的语法兼容度很高,而且是开源的,但是,需要对应用程序进行修改来适配PostgreSQL。

经过认真评估,张劲涛发现改动工作量有点大,同时,改完后性能也没有把握,最后放弃了这个选择。后来,又评估了几个国产集中式数据库,但改动量都不小,有的根本就胜任不了,最后都放弃了。

而在选择MySQL的代替者方面,张劲涛主要评估的是各种分布式数据库,因为数据聚合量太大了,传统集中式数据库很难满足。张劲涛试过了几个分布式数据库都不满意。当时也曾考虑过采用数据库中间件MyCat,通过分库分表来解决,但出行365的业务很复杂,不是某一种分库分表的模式就能解决的。另外,在测试时还发现,MyCat在一些语法和事务方面支持不好,导致最后产生的数据有问题。

一番评估之后,张劲涛将目标转向了OceanBase。通过测试后他惊讶地发现,一个OceanBase数据库就能同时满足上述两个需求。

兼容Oracle,简化运维

张劲涛介绍,就Oracle要升级到哪个数据库而言,他最为看重的是与Oracle的语法兼容性。

“在出行365评估的所有数据库中,OceanBase是与Oracle兼容度最好的,进行迁移测试时也是最平滑的。而且OceanBase还有完整的迁移方案,让我们非常容易地完成了数据库迁移,整个迁移过程不到2个小时。”张劲涛表示。

据悉,经OceanBase 迁移评估工具OMA(OceanBase Migration Assessment)的兼容性评估,OceanBase的Oracle兼容率99.81%,支持GBK字符集。这也是出行365用非常低的改造成本顺利从Oracle迁移到OceanBase的关键。

在数据库选型过程中,张劲涛另一个关注点是数据库的性能。出行365对Oracle和OceanBase进行了性能比对,发现两者在性能上没有明显差异,在某些场景OceanBase可能表现还更好一些。另外,OceanBase已经在众多客户中得到部署和应用,产品成熟度也让张劲涛感觉放心。

而就MySQL的升级而言,张劲涛最为关注的是对复杂聚合能力的支持, OceanBase采用分布式的架构不仅可以很好支持海量数据的复杂聚合计算需求,而且在事务支持上不打折扣。

敲定采用OceanBase之后,出行365很快就着手开始升级。目前,出行365已经完成了用OceanBase来对Oracle进行升级,同时,在互联网业务方面,也完成了清分系统对MySQL数据库的升级,到今年年底还会有几个数据库会逐步升级为OceanBase。

张劲涛表示,OceanBase数据库几个月运行下来,给出行365带来了不少好处:

首先,简化了软件栈。原来的MySQL、Oracle都统一到OceanBase,简化了数据库的运维工作,而且采用云模式,出行365完全从复杂的数据库运维工作中解脱出来。

其次,提升了系统弹性。云服务交付的OceanBase能按需扩容,从而轻松应对流量高峰。

另外,凭借OceanBase自研高级压缩存储引擎,数据存储压缩率达80%,如原本需要存储10TB的费用,现在仅需存储2TB的费用,大幅度节约出行365的数据存储成本。

“以前一到节假日,我们都提心吊胆的。现在升级成OceanBase,产品稳定,再加上有他们的运维团队做保障,我们放心多了。上线几个月来,还没有遇到任何运维方面的麻烦。”张劲涛说。

猜你喜欢

转载自blog.csdn.net/FL63Zv9Zou86950w/article/details/131729142