案例故事丨老虎国际 x TiDB ,降低架构复杂性,保障全球用户安全可靠投资

news2025/2/28 20:21:08

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

老虎国际作为第三代券商的代表,是一家全球知名的国际化券商,在新加坡、美国、中国香港、澳大利亚等地持有 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 的能力构建数据中台和实时数仓,既保证 OLTP 查询时系统的稳定性,又保证 OLAP 的快速分析,两者同时存在又保证隔离,兼顾安全和稳定。最后,老虎国际还将 TiDB 作为类似数据湖的概念提供数据源给下游的 HDFS 使用,对外提供更多数据服务。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

复习计算机网络——第四章习题记录

1、一台交换机具有24个100Mbps的全双工端口和2个1000Mbps的全双工端口,如果所有的端口都工作在全双工状态,那么交换机总带宽等于: 交换机知识点: (1)交换机具有24个10或者100Mbps全双工端口连接一般的用户计算机&…

python脚本系列——批量下载清华开源依赖包

一、脚本展示 1.流水线编译过程,执行apk --update add --no-cache xxx 2.报错ERROR: xxx package mentioned in index not found (try apk update) 3.内网环境缺依赖包,需要从清华源下载对应的包,但是需要根据报错一个个找&#x…

[附源码]计算机毕业设计教学辅助系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

1558_AURIX_TC275_RCU模块中的ESR管脚

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) CPU的安全状态,如果有bit为0说明SRAM等内容可能是不可靠的。 1. ESR的管脚是可以实现对外输出复位提示信息功能的。 2. ESR管脚的几种用法:作为输入触发复位、作为…

双重预防体系智能管理系统助力集团施工企业落实双重预防机制建设

安全警钟长鸣,为何事故仍不时发生?说明“安全网”织得不够密。当前我国建筑施工安全生产方面存在诸多薄弱环节和突出问题,强化安全生产主体责任落实,全面构建安全风险分级管控和隐患排查治理双重预防工作机制,坚决防范和遏制较大…

如何应对项目上线前出现Bug?

当你在测试阶段最后两天,发现测试执行情况不理想,和预估的进度相差较大时,是否会焦虑到不知所措?当你在上线前发现一个严重的问题,修复后需要重新执行一些验证测试及增加回归测试,此时你是否会惊慌&#xf…

使用nvm管理(切换)node版本

使用nvm切换node版本1. 完全删除之前的node及npm(清理干净Node: 应用程序,缓存的文件,环境变量 )2. 使用管理员身份安装nvm,下载如下3. 安装完nvm之后找到nvm下载路径对应的文件4. 使用管理员身份打开cmd,n…

β-葡聚糖偶联超顺磁纳米氧化铁颗粒|紫杉醇-二十二碳六烯酸—右旋糖酐偶联物

β-葡聚糖偶联超顺磁纳米氧化铁颗粒 中文名称:β-葡聚糖偶联超顺磁纳米氧化铁颗粒 纯度:95% 存储条件:-20C,避光,避湿 外观:固体或粘性液体 包装:瓶装/袋装 溶解性:溶于大部分有机溶剂&am…

Jenkins集成appium自动化测试(Windows篇)

目录:导读 一,引入问题 二,搭建思路 三,具体步骤 1,搭建Jenkins 2,新建节点 3,配置节点 4,启动代理 5,新建任务 6,配置任务 7,调试 四…

谁说菜鸟不会数据分析 | 学习笔记

一.前言 数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程 数据分析的目的是把隐藏在一大批看似杂乱无章的数据背后的信息集中和提炼出来,总结出所研究对象的内在规律。在实际工作中,数据分析能够帮助管理者进行判断和决策&…

WebDAV之葫芦儿•派盘+麻雀记

麻雀记 支持WebDAV方式连接葫芦儿派盘。 想要一款非常小巧的笔记软件?占用设备内存小,功能非常丰富。比如写便签、清单、图片、倒数日、名片、纪念日、心情、绘图、地址、等等,并且你还可以使用看板、标签以及四象限等功能来帮助你更好地将所写内容归纳整理,快来体验下麻…

不删除分区的情况下怎么合并分区?如何合并磁盘分区

不删除分区的情况下怎么合并分区??本文将向您展示使用 Diskpart 命令和分区管理工具合并磁盘分区的可靠解决方案。请继续阅读,以获得合并磁盘分区的相关信息。 一、合并磁盘分区 也许你的磁盘上,有一个空间很大的分区&#xff0c…

ctfshow 大吉大利杯

veryphp 看着思路很简单&#xff0c;就是利用post传参和extract函数来给需要的参数赋值&#xff0c;再利用call_user_func调用qwq中的oao静态方法。 感觉最麻烦的就是 preg_match(/^\-[a-e][^a-zA-Z0-8]<b>(.*)>{4}\D*?(abc.*?)p(hp)*\R(s|r).$/, $shaw_root)这个…

JavaScript进阶教程——包装对象、类型转换、作用域、闭包与模块化

文章目录包装对象类型转换显示转换隐式转换作用域let与const的用法&#xff1a;作用域链闭包与模块化封装包装对象 为什么原始类型可以使用方法和属性&#xff1a; toString()split()length属性 包装对象&#xff1a; new String()new Number()new Boolean() let num 123;…

Linux内存管理之UMA模型和NUMA模型

共享存储型多处理机有两种模型 均匀存储器存取&#xff08;Uniform-Memory-Access&#xff0c;简称UMA&#xff09;模型 (一致存储器访问结构) 非均匀存储器存取&#xff08;Nonuniform-Memory-Access&#xff0c;简称NUMA&#xff09;模型 (非一致存…

大学生阅读小说网页设计模板代码 柏书旧书网带登录表单 注册表单小说书籍网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

python Graphillion简介

Graphillion是一个用于高效图集操作的Python库。与NetworkX等现有的图形工具不同&#xff0c;Graphillion被设计为一次只处理一个图形&#xff0c;而Graphillion则非常有效地处理一个大型的图形集。令人惊讶的是&#xff0c;使用Graphillion可以在一台计算机上处理数万亿的图形…

SQL注入漏洞 | sleep型

文章目录前言MySQL sleep型测试数据库名长度数据库名表名列名字段值总脚本文件前言 SQL注入漏洞 | bool型 if(SQL语句,sleep(),null) if()、sleep()的使用 select * from table where id1 and sleep(2) //执行查询id1&#xff0c;同时sleep(2)。浏览器显示数据库返回的结果…

MyBatis Mapper四步走

1. 定义承载结果的Java类充当领域对象&#xff08;不使用MyBatis的内置map&#xff09;。 2.开发Mapper组件&#xff0c;也就是接口XML&#xff08;或注解&#xff09; 3.获取SqlSession&#xff0c;在获取Mapper组件对象。 4.调用Mapper组件的方法操作数据库。 ----------…

CSDN客诉周报第13期|修复3个重大bug,解决10个次要bug,采纳1个用户建议

听用户心声&#xff0c;解用户之需。hello&#xff0c;大家好&#xff0c;这里是《CSDN客诉周报》第13期&#xff0c;接下来就请大家一同回顾我们最近几周解决的bug&#xff5e; 一、重大问题 1、【数据中台】搜索功能失效&#xff0c;无法搜出内容 反馈量&#xff1a;300 …