浙江长龙航空有限公司(以下简称“长龙航空”)是浙江省唯一的本土总部型客货综合公共运输航空公司,拥有国内国际、客运货运全牌照航空运输资质,属于中大型航空公司,居民营航空公司前列,自 2011 年成立至今,累计开通国内外客货运航线近 600 条,覆盖全国并通达日韩、港澳、东南亚、中亚等“一带一路”沿线国家和地区的 170 余个城市。
在现代航空业运营中,高效的数据管理和可靠的数据库系统是成功运营的关键要素之一。长龙航空在运营过程中面临着大量的数据处理,包括航班信息、机票销售、客户信息、座位分配等,同时,业务不仅对事务处理(OLTP)存在较高需求,对 T + N、T + 1 甚至 T + 0 的数据分析处理(OLAP)也提出了极高的要求,比如数据处理的实时性、数据分析的可靠性等。由于原数据库以主备模式为主,一旦出现问题就会影响业务,且无法满足数据处理的实时、分析需求,因此,我们开始寻求新的数据库解决方案。
经过市场调研发现:OceanBase 在事务处理(OLTP)和分析处理(OLAP)方面都提供了优秀的性能和可靠性,且不用分两套系统。因此,针对业务系统需求中的关键要素,如扩展性、性能、数据安全和可靠性等,长龙航空均进行了深入了解。
(一)分布式架构及扩展性
航空业务的规模庞大,需要处理海量数据和并发请求。OceanBase 的分布式架构使数据可以分散存储在多个节点上,系统可以轻松扩展节点数量,以满足不断增长的数据需求。
(二)高性能及复杂查询
通常,长龙航空需要根据多个条件和指标进行数据检索和分析,以提供准确的航班信息和销售数据,OceanBase 的 SQL 层整体上能够高效地处理复杂查询,在短时间内返回结果,这得益于 OceanBase 的 SQL 优化器和执行引擎。
OceanBase 的 SQL 优化器先会基于规则和代价模型进行 SQL 的改写,生成并选择较优的查询改写计划,在分布式场景下也进行了各种计划形态的查询优化。
OceanBase 的 SQL 执行引擎有并行执行和向量化计算的能力,在分布式场景下,利用并行执行框架自适应地处理单机内并行和分布式并行执行方式的优化。对于小规模的业务来说,串行执行的处理方式足够,当需要访问大量数据时,可以在 OceanBase 单机内引入并行能力。目前,很多开源的单机数据库都不支持该能力,但只要有足够多的 CPU,就可以通过并行的方式使单条 SQL 处理时间线性缩短,只要有一个高性能多核服务器增加并行即可。针对同样形式的分布式执行计划,可以在多机上分布式并行,以支撑更大的规模,突破单机 CPU 的数目,比如从几百核到几千核。
另外,由于 OceanBase 在一套系统中同时支持 OLAP 和 OLTP 业务请求,资源隔离便成为重中之重。OceanBase 提供了多种资源隔离方式,包括使用多个 Zone 进行物理隔离,使用 CPU 资源组隔离不同数据库连接。系统还会自动识别和隔离慢查询,避免它影响整体的交易响应时延。
(三)数据安全及可靠性
航空公司对数据的安全性和可靠性要求非常高,需要确保数据的安全,并保证系统的可靠性以避免任何停机。OceanBase 通过数据备份、故障恢复和容错机制等多层次的安全措施,保证了数据的完整性和可靠性。
为了更好地对航空公司的票务数据进行存储、查询和修改,我们决定采用 OceanBase 作为长龙航空新业务的核心数据库系统。
(一)应用收益:数据处理更实时、流畅、可靠、低成本
1.统一技术栈,实时分析能力增强
如下图所示,OceanBase 的应用范围很广,同时担任了票务架构中的多个角色,为业务提供了更强大的数据管理和分析能力。
采集层将多业务数据实时采集至 OceanBase 数据库,完成数据汇聚。预处理层负责业务数据清洗,ODS 系统生产库层则会进行数据建模,并将计算后的结果数据储存于 OceanBase。最终,服务及发布层通过接口向各业务提供 OceanBase 中的 AP、TP 数据,满足业务跨系统调用数据的需求。
OceanBase的高性能查询引擎和分布式计算框架提供了极致的数据处理和分析能力,使我们能够快速地进行大规模数据分析和实时响应复杂查询需求。同时,一套系统解决两类场景的灵活性确保了业务结果的实时性和准确性,从而帮助工作人员做出更明智的战略决策。从乘客行为分析到航班调度再到资源管理,OceanBase让我们的数据处理流程变得更加流畅、高效和稳定。?
2.稳定可靠,运行 0 故障
自应用 OceanBase 以来,系统运行 0 故障,OceanBase 不仅保障了系统的稳定性和可靠性,也为公司提供了无缝的业务运营,即通过 OceanBase 使不同业务间平滑对接,数据无缝拉通。减少了潜在的停机时间和业务风险。
3.存储成本节约 70%
依托 OceanBase 卓越的数据处理和压缩能力,我们从 MySQL 迁移到 OceanBase 后存储节省了 70%。
除了存储成本降低外,OceanBase 在业务中还存在着其他价值和优势,例如分布式架构带来的高扩展性、数据的安全性,以及 HTAP 系统带来的运维简化,为我们公司提供了可靠的数据管理解决方案,从而提升了业务处理效率和公司竞争力。
(二)实践经验:磁盘 IOPS 优化
测试初期,我们按照官方文档进行了部署和测试,并在业务综合测试中取得了令人满意的结果,于是将该结构引入了生产环境。然而,由于对 OceanBase 的了解不足,在业务运行了几个月、积累到一定数据量时,我们开始经历每天 22:00 发生的规律性磁盘 IOPS 飙升。
通过与 OceanBase 技术支持同学合作排查,我们发现集群部署方式存在一些问题:
redo、log、data 这三个目录放在了同一块磁盘上,并未进行物理上的隔离。特别是 redo 事务日志目录对磁盘的 I/O 性能有较高要求。
最初我们使用机械盘,并非 SSD,磁盘 I/O 能力较差。而官方建议生产环境使用 SSD 盘,否则在后端做合并任务时可能导致性能出现瓶颈。
我们在创建租户的时候,设定了 primary_zone 为 zone1,所以租户的所有 leader 副本都被集中到同一台 Server 上,导致这台 Server 成为读写热点。
在 OceanBase 技术支持同学的指导下,我们主要对部署方式进行了一些改造:根据 OceanBase 在 I/O 上的要求,从底层磁盘物理分离 redo、log、data 这三个核心目录,避免磁盘 I/O 的争用,保证了各个目录的 I/O 性能。
除此以外我们还针对最初部署 OceanBase 时的不合理参数配置进行了优化,特别是对因业务原因修改的连接超时、单事务时间、日志级别等参数进行了调整,并将原先的自建操作系统账号通过 OCP 纳管。
经过上述优化和改造,长龙航空的业务性能得到了明显提升,业务运行稳定且高效。
未来,随着航空业务的不断发展和数据规模的增长,公司计划继续扩展 OceanBase 在业务的应用范围。我们将利用 OceanBase 的高可扩展性,根据需求增加更多的节点,进一步提升系统的容量和性能。同时,持续关注 OceanBase的技术发展和更新,以及与 OceanBase 社区的合作,以获取最新的功能和优化。
OceanBase 作为一款可靠的自研分布式数据库,在航空票务业务中的成功应用可以为其他行业提供借鉴和参考价值。通过 OceanBase 进行业务数据管理能力和数据分析能力的优化,能够进一步降低运维和存储成本、提升业务处理效率。