写点什么

如何降低架构复杂性,保障全球 900 万用户安全可靠投资? | 案例故事之老虎国际 x  TiDB

  • 2023-04-12
    北京
  • 本文字数:2383 字

    阅读完需:约 8 分钟

如何降低架构复杂性,保障全球900万用户安全可靠投资? | 案例故事之老虎国际 x  TiDB

券商是一个古老的行业,发展至今已经历了三个时代:第一代券商为传统券商,在线下交易大厅进行买卖;第二代券商开始了电子化进程,从线下到线上进行了浅层服务的转移,改善了用户体验,提高了金融服务的效率;第三代券商更多强调“科技赋能”,在功能业务上更创新、更多样,且存在完整的互联网基因,业务依靠线上平台,拥有底层自研能力,如交易、风控等系统。

 

老虎国际作为第三代券商的代表,是一家全球知名的国际化券商,在新加坡、美国、中国香港、澳大利亚等地持有 59 张牌照或资质,在全球多地展业。投资者在老虎国际可通过一个账户交易美股、港股、A 股(沪港通/深港通)、星股(新加坡股)、澳股(澳大利亚股)、期货、基金等全球主要市场的金融产品,享受一流的投资体验。

 

老虎国际自主研发的交易平台 TigerTrade,累计交易规模在三年内突破 10000 亿人民币,创下互联网券商冲击万亿交易规模最短用时。2019 年 3 月,老虎国际在美国纳斯达克挂牌上市,目前拥有全球近 900 万用户,年交易规模超 2000 亿美元。

业务挑战


作为一家全球化的券商,每个国家证券行业发展情况不同,数据合规要求也存在差异,比如新加坡有 PDPA,欧盟有 GDPR,美国有 CCPA 等,甚至不同国家业务特点也大为迥异。在每个国家/地区都本地部署业务系统显然并不现实,老虎国际采用跨地区的混合云架构为全球用户提供支撑,解决在数据架构、数据安全、数据合规等方面所面临的的全球挑战。

 

同时,老虎国际的数据架构复杂度非常高,底层系统包含 Java、Python、Go 等不同的语言,中间件、数据库、大数据等都是异构场景,导致维护成本和研发效能都大打折扣。

 

此外,在老虎国际证券业务发展过程中,业务波动性是常态,这也使得其核心业务--后台账本系统,经常面临数据库的性能挑战。后台账本是用户在老虎国际参与证券交易时,如产品购买、出入金、IPO 打新、公司行动、被收费等各个业务版块,针对用户行为明细数据记录的系统。账本每天需要记录大量的用户流水,并根据用户行为生成用户每日账单。如果账本出现问题,直接关系到用户体验和投资收入。

 

2020 年 3 月,美股遭遇了前所未有的震荡,开盘即暴跌,触发一级熔断机制,暂停交易 15 分钟。老虎国际的数据库也经历了前所未有的数据查询量,查询数量曲线呈指数级增长,原有的 MySQL 遇到了极大瓶颈。证券交易还要求数据库具有金融级数据强一致性,并具备灾备能力,一旦某个机房宕机,另一个机房可以立刻启用。

 

数据安全性、数据可用性和数据架构复杂度成为老虎国际国际化业务的三大挑战。出于对开源技术的信任和认同,老虎国际很早就在数据中台业务中应用了 TiDB 3.0 版本,此后一路升级到 TiDB 5.0,解决了业务挑战与数据安全挑战。

 

后台账本数据库迁移

 

老虎国际的后台账本底层数据架构由多套集群组成,单集群数据量接近 2TB,MySQL 数据库虽然具有较好的稳定性和负载能力,但为了应对不断增长的数据量只能采取分库分表方案,难以保证跨分片的事务一致性,跨库的 Join 关联查询性能较差,数据库多次扩展难度和维护量极大。2021 年,老虎国际的运维与研发团队对主流的冷热数据分离、分库分表、分布式数据库等方案进行选型与性能压测。在压测中,TiDB 在 P95 延迟、TPS 事务指标、QPS 等方面整体性能都强于 MySQL,并且 TiDB 的性能可以随着节点水平扩展线性提升,解决性能和单机资源瓶颈问题。压测增强了老虎国际技术团队的信心,最终决定将后台账本的 MySQL 集群也迁移到分布式数据库 TiDB 上。




由于 TiDB 拥有非常丰富的生态组件,整个迁移过程十分顺利。为了保障业务稳定,老虎国际采用了新旧数据库同时写入的方式,通过 DM 将 MySQL 数据同步至 TiDB 集群,逐渐切换一部分读流量到 TiDB,整个迁移历经近 3 个月,最终全部切换到 TiDB。同时,老虎国际也制定了“逃生方案”,通过 TiCDC 将数据同步到下游的一个 MySQL 集群,一旦发现 TiDB 有问题可以随时切换。在经过半年多业务的考验后,最终技术团队将该 MySQL 集群关闭。



由于不同国家对于监管、数据可用性,以及 SLA(服务级别协议)要求非常高。在同城,老虎国际还利用 TiDB 的灾备架构,通过 TiCDC 在灾备机房部署了一个 TiDB 集群作为灾备方案,当主机房发生故障时,服务器负载均衡自动切换到备用机房,保证数据服务高可用,整体延迟达到分钟级甚至更低。

 

为什么选择 TiDB?

 

对于券商而言,数据处理速度与成本是紧密相关的。MySQL 的分库分表维护成本较高,对业务的限制也比较多。而 TiDB 的分布式架构无需分库分表,大大简化技术栈,降低了运维难度,通过在线水平扩展有效解决底层数据存储扩容难题;TiDB 的金融级高可用特性,可靠的灾备、数据恢复方案保障了老虎国际证券业务稳定运行;同时,TiDB 高度兼容 MySQL,有着成熟的 MySQL 迁移方案,研发侧大部分代码无需改动,即可顺利完成整个迁移工作,大大降低迁移成本。

 

业务收益

 

现在,老虎国际的数据架构整体可以分为三部分:第一,将分布在各业务系统甚至 APP 内的数据进行收集;第二,进行数据处理;第三,将数据持久化存储。非敏感数据通过 DM 和 CDC 快速同步到 TiDB,敏感数据通过 Flink 进行脱敏后输入 TiDB,利用 TiDB HTAP 的能力构建数据中台和实时数仓,既保证 OLAP 查询时系统的稳定性,又保证 OLTP 的快速分析,两者同时存在又保证隔离,兼顾安全和稳定。最后,老虎国际还将 TiDB 作为类似数据湖的概念提供数据源给下游的 HDFS 使用,对外提供更多数据服务。



从前,老虎国际的数仓只能满足 T+1 的数据分析,通过 TiDB ,老虎国际实现了实时同步、实时分析,将延迟降低到了 5 秒钟;同时,TiDB 的性能实现了比较快的数据接入,之前 Hbase 中只有 4,000+ 表,TiDB 目前已经达到 80,000+ 表;此外,使用 TiDB 后,老虎国际将数据的全量同步变成增量同步,极大减少了网络带宽压力。 TiDB 统一了两个大数据分析场景,提升了易用性,并节省了 40% 的资源,实现了降本增效。

2023-04-12 10:114155
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 568.0 次阅读, 收获喜欢 1978 次。

关注

评论

发布
暂无评论
发现更多内容

sonic:基于 JIT 技术的开源全场景高性能 JSON 库

火山引擎开发者社区

原生云

微信业务架构图与“学生管理系统”毕设架构设计

唐尤华

架构实战营

IDEA注释模板,惊艳了,动作要快,姿势要帅

碌碌无为小码农

Java 架构 程序人生 编程语言 经验分享

从零开发区块链应用(十)--golang协程使用

杰哥的技术杂货铺

golang 区块链 gotoutine

【译】什么是测试驱动开发

宇宙之一粟

测试驱动开发 1月月更

学生管理系统架构设计

孙强

架构实战营

Flink 实现 MySQL CDC 动态同步表结构

腾讯云大数据

flink 源码 流计算 Oceanus

RocketMQ 源码探究 -- 延迟队列实现

周文童

RocketMQ #java

有的时候我觉得我不会 Markdown

冴羽

前端 写作 markdown markdown语法 vuepress

对管理金字塔游戏的感悟:管理的本质是协作

panda

管理

25 Prometheus最佳实践原则

穿过生命散发芬芳

Prometheus 1月月更

【架构训练营-模块一】

默光

微信 架构设计

从零开始学Mysql - 字符集和编码(下)

懒时小窝

从零开发区块链应用(七)--gin框架参数获取

杰哥的技术杂货铺

golang 区块链 gin框架

恒源云(GPUSHARE)_【Object Detection 20年】小结

恒源云

深度学习 计算机视觉 目标检测

从重大漏洞应急看云原生架构下的安全建设与安全运营(下)

腾讯安全云鼎实验室

云原生 安全漏洞 容器安全 安全服务

2021总结和2022趋势--《香帅中国财富报告》(7/100)摘录

hackstoic

投资

深入浅出 Apache Pulsar(5)Pulsar Connectors

云智慧AIOps社区

Java kafka 云原生 消息中间件 Apache Pulsar 消息系统

基于esbuild的universal bundler设计

字节跳动终端技术

json 字节跳动 前端 火山引擎 lynx

从交换机安全配置,看常见局域网攻击

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

微信业务架构图、学生管理系统毕业架构设计

石小天

架构实战营

介绍一种在ABAP内核态进行内表高效拷贝的方法,和对应的Java和JavaScript版本的伪实现

汪子熙

Java JavaScript abap 1月月更

干掉 PowerDesigner,这款数据库设计神器真的绝了!!!

沉默王二

架构学习【01】——架构图初探

tiger

架构实战营

从零开发区块链应用(六)--gin框架使用

杰哥的技术杂货铺

golang 区块链 gin框架

架构设计图

风中奇缘

架构实战营 「架构实战营」

鸿蒙轻内核源码分析:Newlib C

华为云开发者联盟

鸿蒙 内核 LiteOS-M Newlib C Newlib

☕【Java深层系列】「并发编程系列」让我们一起探索一下CountDownLatch的技术原理和源码分析

码界西柚

Java 并发编程 jdk8 1月月更

虎符宣布开启平台币回购计划 HOO应声大涨20%

区块链前沿News

Hoo虎符 Hoo 虎符交易所 虎符平台币

2021 大促 AntMonitor 总结 - 云原生 Prometheus 监控实践

SOFAStack

云原生 分布式架构 SIGMA

投稿开奖丨“轻量应用服务器”征文活动(11&12月)大奖公布

阿里云弹性计算

阿里云 轻量应用 征文投稿开奖

如何降低架构复杂性,保障全球900万用户安全可靠投资? | 案例故事之老虎国际 x  TiDB_开源_TiDB技术团队_InfoQ精选文章