写点什么

富途证券因数据中心故障导致交易中断,创始人发文道歉

  • 2021 年 10 月 12 日
  • 本文字数:2955 字

    阅读完需:约 10 分钟

富途证券因数据中心故障导致交易中断,创始人发文道歉

10 月 9 日凌晨,互联网券商富途出现故障,用户无法登录 App 进行交易,甚至出现了资产清零的状态。

 

9 日下午,富途证券发布相关说明并致歉。富途表示,事故原因为“运营商机房电力闪断导致的多机房网络故障”,公司已于第一时间联系运营商进行修复,并在 2 小时内陆续恢复核心服务。后续富途表示将进一步提升多运营商多机房的网络容灾能力,提升核心服务的稳定性,避免类似问题的再次发生。

 

富途证券一向以“技术”为豪,和传统券商不同,富途没有线下营业部,用户只通过线上开户进行交易。但全部业务依托线上通道完成,就意味着富途对技术的依赖比传统券商高。其创始人兼董事长李华是腾讯第 18 号员工,同时也是 QQ 产品重要参与者和腾讯视频创始人之一,领导过腾讯视频产品设计和开发。在李华看来,富途之所以能弯道超车,花 3 年到达传统券商 10 多年积累才能达到的高度,技术是最重要的一环。

 

10 月 11 日中午,技术出身的富途创始人李华再发 2000 字长文道歉和回复,引起市场关注。

 

有关系统容灾的问题,李华表示,富途的系统是有做容灾设计的,从行情到交易,从服务器到交易网关到网络传输都有做双路或多路的冗余设计。不同的子系统设计会有所不同。

 

以行情为例,单向传输为主、对时延的敏感度也不是那么高,富途很早就作了多区域多 IDC 的容灾设计;尤其像美股行情,涉及到越洋传输,为避免中断,富途选择了全球顶级的两家行情供应商分别提供行情源,分别从美国、香港多地多点接入,当这些都不可用时,富途还保留了富途美国 IDC 直传的能力。不考虑其他的冗余设计,光是因为行情源的冗余,富途一年增加的成本过千万港元。

 

李华指出,在实时热备的多路冗余交易系统的设计上会面临着两种选择。一是较差的交易性能更大的订单延时但更好容灾能力的跨 IDC 多路冗余方案,二是更好的交易性能较小的订单提交延时单一 IDC 的多路冗余方案,但 IDC 本身会成为故障的单点。

 

这也间接导致了一定要做出选择。在李华看来,考虑到 IDC 的建设标准,IDC 的大级别事故是罕见的,尤其是在电力故障方面。经过综合推演之后,富途选择了更好性能的方案二,也因此留下了 IDC 的单点故障隐患。这次事故恰恰就是 IDC 出了问题,而且是最不应该出现问题的电力系统出了问题,不间断电源和柴油发电机都没能发挥应有的作用。

 

附:李华回应全文


10 月 9 日凌晨 1 点 26 分,事故发生后不少客户 at 我,有批评、有建议、有鼓励,由于 9 号早晨还要去出差,会有几个小时在飞机上,就没来得及一一回复。不论如何都要谢谢你们,因为你们,我才觉得富途所作的事情格外有意义,我们可以去努力和改善的地方还有非常多。

 

首先我要向大家郑重及诚恳地道歉:真的很对不起,让你们失望了,我们虚心接受所有的批评和建议,并会立即着手相应的改进。

 

虽然几次影响大、耗时长的事故都与不可控的外部依赖有着直接的关系,但给到客户的感受都是一样的,那就是富途的服务不可用了。因此,我们责无旁贷,也不会把应该我们解决的问题推到外部,只会看在我们可控的范围内如何可以做得更好。

 

1、末日期权价值归零的补偿问题。

 

有购买了末日期权因故障未能及时平仓导致价值归零的客户在问是否会补偿,从周末开始针对这类客户我们的客服已经在逐一联系,会根据具体的情况沟通对应的补偿方案。

 

2、有关系统容灾的问题。

 

首先可以确定的是,富途的系统是有作容灾设计的,从行情到交易,从服务器到交易网关到网络传输都有作双路或多路的冗余设计。不同的子系统的设计会有所不同。

 

富途的客户中不乏技术达人,这次事故后,不少有技术背景的客户针对系统的容灾给了各种的建议,尤其是有关多区域多 IDC 的容灾建议。在此表示感谢!

 

以行情为例,单向传输为主、对时延的敏感度也不是那么高,我们很早就作了多区域多 IDC 的容灾设计;尤其像美股行情,涉及到越洋传输,为避免中断,我们选择了全球顶级的两家行情供应商为我们分别提供行情源,分别从美国、香港多地多点接入,当这些都不可用时,我们还保留了富途美国 IDC 直传的能力。不考虑其他的冗余设计,光是因为行情源的冗余,一年增加的成本过千万港元。

 

交易系统比较特殊,对时延有着非常高的要求。所有的多路冗余热备系统都存在时延大小和数据一致性的冲突;物理位置越分散,比如跨 IDC、跨区域,为确保数据一致性,时延就会越大。跨 IDC、跨区域的数据一致性的时延问题好解决吗?不好解决。因为在我们生活的这个宇宙,光速或电子流动的速度每秒钟 30 万公里就已经是极限,这也意味着在理论状态下物理位置每间隔 300 公里的网络传输就会存在 1 毫秒的时延;这还仅仅是在理论状态下,实际上如果加上光电转换、加上路由跳转,300 公里的传输能作到不超过 5 毫秒已是优秀。那么 5 毫秒算长吗?5 毫秒从一般的认知来看也不算长,但对于数据一致性来说就算很长了,光一个网络传输一来一回就是 10 毫秒;就具体的交易场景来说,你可能啥也没作,只是因为热备的数据一致性的需要,网络传输延时加上各类写操作的延时和同步确认的延时,你的订单还没有提交出去可能就消耗掉了几十毫秒,且这还只是理论值,实际上有机会更多。

 

基于上边的描述,在实时热备的多路冗余交易系统的设计上会面临着两种选择。一是较差的交易性能更大的订单延时但更好容灾能力的跨 IDC 多路冗余方案,二是更好的交易性能较小的订单提交延时单一 IDC 的多路冗余方案,但 IDC 本身会成为故障的单点。有客户问,你们是不是不愿意投入啊,才会有这个事故发生;看到这里,你会发现其实不是投入的问题,是选择的问题。

 

考虑到 IDC 的建设标准,IDC 的大级别事故是罕见的,尤其是在电力故障方面。经过综合推演之后,我们选择了更好性能的方案二作为我们的系统设计,也因此留下了 IDC 的单点故障隐患。这次事故恰恰就是 IDC 出了问题,而且是最不应该出现问题的电力系统出了问题。

 

供电网络一个几秒钟的电压抖动,IDC 一堆网络 IT 设备跟着关机或重启,实在是难以想象,说好的不间断电源和柴油发电机去哪了?不间断电源和柴油发电机竟然都没能发挥应有的作用,要知道电力保障是一个 IDC 之所以是 IDC 的最基础能力。另一方面也暴露了我们的系统在这种情况下的脆弱。

 

这次事故的恢复时间以小时计,给我们的教训和启发都非常大。两害相权取其轻,相对于小时级的故障时间,假如我们可以接受一个分钟级的故障时间,那么在方案二的基础上是不是可以有一个兼顾交易性能低订单延时又支持跨 IDC 的准热备方案呢?答案是有的,接下来我们就会对这里作进一步的研究和推进。

 

3、有关资产显示的问题。

 

这次事故让我看到了我们在产品设计上的一些欠周到。事故发生时,有客户发现自己的持仓和资产数据都没了,这让人感到非常惊悚,马上就有人在牛牛圈上问“富途是不是卷款跑路了?”。实际情况是因为故障导致了牛牛 app 跟后台数据的断开;既然只是断开,那前端 app 的表现为何是作清空的处理?显然以最后可以正常显示的数据快照继续展示会是更好的实现方案;虽然数据不会作实时更新了,但给到人的心理感觉会安定很多。在这里我要给受到惊吓的客户们道歉,接下来也会在 app 相关的表现上作出改进。

 

以上是我想要重点回复的三个问题。

 

这次事故值得我和团队们总结和反思地方非常多,教训和警示也都非常深刻。我们不会去做无意义的辩解,立足当下作好改进会来得更重要;我们也从未因为富途有了一点体量和成绩就感到自大和自满,只期望通过我们的持续努力不辜负您们的信任。

 

再次道歉并感谢!

 

2021 年 10 月 12 日 17:102715

评论 1 条评论

发布
用户头像
CEO发布技术方案说明,很少见😁
2021 年 10 月 15 日 16:50
回复
没有更多了
发现更多内容

Java程序员怎么写简历?你这样介绍项目经验面试官会对你刮目相看

Java 程序员 后端

Java程序员:面试字节跳动被问算法 多亏我扛下来了,2021最新Java高频精选面试题讲解

Java 程序员 后端

java面向对象和常用类练习题(StringBuffer、Data,java基础案例教程第二版

Java 程序员 后端

Java架构师面试题系列之Mybatis面试专题(36题,含详细答案解析

Java 程序员 后端

Java程序员必须了解的JVM性能调优知识,全都在这里了,java框架常见面试题

Java 程序员 后端

Java虚拟机的历史,java编写视频播放器

Java 程序员 后端

Java面试题整理《基础篇》,线程池参数面试题

Java 程序员 后端

Java泛型你了解多少,springboot常见面试题

Java 程序员 后端

Java程序员经典面试题集大全 (六)(1),javaee教程视频

Java 程序员 后端

Java面试题目大汇总(附参考答案),牛客初级项目百度网盘

Java 程序员 后端

Java面试题超详细整理《多线程篇》,kafka架构和原理

Java 程序员 后端

java程序员必须掌握的spring boot—你真的了解了吗,java基础入门第二版第三章答案

Java 程序员 后端

Java集合笔记一 —— Collection,用了这么多年分页PageHelper

Java 程序员 后端

java集合笔记二 —— List集合,java运行原理

Java 程序员 后端

java面试常被问到的 JDK 命令,你知道几个?,2021最新Java面试笔试

Java 程序员 后端

模块二作业:微信朋友圈高性能复杂度

dean

架构实战营

Java程序员经典面试题集大全 (六),springboot原理图

Java 程序员 后端

Java程序员跳槽之旅,离开京东,12面面试回顾和一点经验分享

Java 程序员 后端

JAVA线程池源码之深入状态值分析| Java Debug 笔记,java原理面试题

Java 程序员 后端

Java语法糖,mybatis的实现原理

Java 程序员 后端

Java进阶面试合集笔记——19个技术栈,35岁以后的Java程序员出路在哪里

Java 程序员 后端

Java面试逐个突破:OOP(面向对象编程,java开发零基础就业班

Java 程序员 后端

Java架构进阶笔记:一不小心就死锁了,怎么办,java区块链项目实战百度云

Java 程序员 后端

Java面试知识点解析——JVM篇,java集合容器面试

Java 程序员 后端

Java面试题总结(乱序版,2020-09-29,3分钟教会你什么线程安全以及如何实现线程安全

Java 程序员 后端

Java语言新特性?封印类,mybatis教程pdf下载

Java 程序员 后端

Java程序员极力推荐的springboot全家桶干货系列,运维nginx面试题

Java 程序员 后端

Java详解:如何实现一个-redis-缓存服务,面试官手里那些秀你一脸的求质数大法

Java 程序员 后端

Java高并发编程课后总结,Java程序员必备书籍

Java 程序员 后端

JDK命令行工具与可视化工具,linux基础教程第二版课后答案

Java 程序员 后端

Java真的要凉了吗?,工业互联网架构师

Java 程序员 后端

富途证券因数据中心故障导致交易中断,创始人发文道歉-InfoQ