BookMyShow.com:使用TiDB可以增加正常运行时间,降低30%的运营成本

2019-03-15 BookMyShow 互联网

自2007年以来,BookMyShow让在印度寻求娱乐的人很容易就能买到电影、体育赛事、戏剧、音乐会等的门票。作为印度最大的在线娱乐票预订电子商务网站,它的总用户群为超过5000万人在650多个城镇它在中国的在线票务市场占有很大份额,每周处理数百万笔交易。

BookMyShow主页

BookMyShow主页

挑战

为了可靠地为用户服务,该公司近年来开始使用微服务。但拥有所有这些微服务意味着BookMyShow需要一种无缝的方式,让所有人都能将他们的数据发送到其大数据平台。该公司的6人数据运营团队的任务是建立一个高度可持续的数据管道和仓库,并为BookMyShow的大数据相关基础设施提供运营和维护支持。

一致性是优先考虑的,因为站点会定期更新其交易记录。团队使用了Galera,但却不能满足他们的需求。他们面临的一个主要问题是Galera的主-主架构和复制模式,这要求每个节点都有完整的数据副本。当数据大小达到多个tb时,这种方法使得通常的读写容量和资源利用率降低。由于这种困难,一名工程师完全致力于运营和监控Galera,这对一个小团队的工程师来说是一笔巨大的成本。

BookMyShow团队在与Galera的合作中经历了一段特别糟糕的分裂期,两个初选完全不同步。整个团队花了2-3天的时间专注地恢复。团队知道他们需要一个更好的解决方案。

评估和移民

最初的选择是TiDB、Greenplum和Vitess。BookMyShow团队在论文、博客和案例研究的基础上进行了大量研究后,决定花费他们的工程时间来评估TiDB和Greenplum,因为这两家公司都承诺能够解决Galera遇到的问题。

TiDB很快成为了赢家,因为它易于设置、部署和在短时间内将大量数据注入集群。“我实际上负责建立和评估Greenplum,在我弄清楚如何部署它之前,我负责评估TiDB的队友已经完成了部署,并已经推送了大量数据,”工程团队的一名成员说。

在向TiDB迁移的初始阶段,BookMyShow团队使用Apache Spark将历史数据流传输到其TiDB集群中,这既快速又简单。

结果和建议

BookMyShow目前的架构使用Kafka将事务数据近乎实时地从MS SQL流到TiDB。它目前在TiDB中有大约5TB的数据,预计很快将达到10TB。

有了TiDB, BookMyShow的正常运行时间和可用性都得到了提高,因为TiDB可以在集群中自动分区和分发数据。同时,运营和维护成本降低了30%。没有工程师需要完全致力于数据库操作。工程团队唯一需要在TiDB上工作的时候是在查询性能较慢的时候,以及在业务增长时需要扩展容量以存储更多数据的时候。

“运营和维护成本降低了30%。再也不需要工程师完全致力于数据库操作了。”

BookMyShow使用TiDB的最大优势之一是它在底层有效地利用了RocksDB,与任何网络分区SQL引擎相比,它的性能得到了显著改善。由于TiDB实现了一致性算法和自动化的数据复制和分布,我们不需要担心数据分区和复制的容错。

BookMyShow的工程团队确实对未来的TiDB用户和PingCAP团队提出了一些建议。首先,在自定义配置TiKV中的数据分区(或Region)大小和gRPC连接数量后,它最初遇到了一些性能较差的问题。(BookMyShow目前使用的Region大小比默认的96MB大。)虽然在联系PingCAP团队寻求帮助后,性能问题得到了解决,但关于这些关键配置的性能影响的更多信息和改进的文档将是有帮助的。

其次,当TiDB部署安装一个带有来自Prometheus的所有系统指标的Grafana仪表板时,BookMyShow团队很难找出哪些指标与解决特定的性能问题有关。在仪表盘上有太多的信息而没有指导。在Grafana中对重要指标有更多的描述将有助于帮助其他TiDB用户更容易地监视和排除集群中的性能问题。

总的来说,由于PingCAP团队的关注,以及通过电子邮件和GitHub对问题的快速响应,BookMyShow的集成进展顺利。“TiDB开源社区非常活跃,”BookMyShow的工程师说。“所以它对我们的收养有很大帮助。”

有了TiDB,对其数据库基础设施的状态和容量感到压力和担忧的日子一去不复返了。工程团队现在可以放心了,因为BookMyShow的数百万用户可以继续制定观看电影和节目的计划,而不会遇到任何麻烦。

准备好开始使用TiDB了吗?

行业
公司
标签