券商是一个古老的职业,开展至今现已历了三个时代:第一代券商为传统券商,在线下买卖大厅进行买卖;第二代券商开端了电子化进程,从线下到线上进行了浅层服务的转移,改善了用户体会,提高了金融服务的功率;第三代券商更多强调“科技赋能”,在功用事务上更创新、更多样,且存在完整的互联网基因,事务依靠线上平台,具有底层自研才能,如买卖、风控等体系。
山君世界作为第三代券商的代表,是一家全球闻名的世界化券商,在新加坡、美国、我国香港、澳大利亚等地持有 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% 的资源,实现了降本增效。