前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >金融业务如何高性能传输数据

金融业务如何高性能传输数据

作者头像
JavaEdge
发布于 2022-12-30 07:14:42
发布于 2022-12-30 07:14:42
5540
举报
文章被收录于专栏:JavaEdgeJavaEdge

对系统要求高,通常按金融级标准设计。金融数据传输要求速度快,流量大,极强容灾

案例分析

简化版券商算法交易平台对接交易所:

  • 涉及场景多。既有事务数据,也有市场数据
  • 模型简单。只涉及到2个主体
  • 复杂度可选。连接交易所的要求可以很高,也可以很低,具体取决于你愿意出多少钱,有多久研发时间

两个主体:

  • 券商,任务是将券商提供的市场交易信息发到自己的算法交易平台,平台分析这些信息后,发买卖订单给交易所
  • 交易所负责处理收到的订单,在处理完后,将交易信息传递给券商

整个过程都是用软件实现,不用硬件。

交易数据

券商发给交易所的订单数据属于事务数据。这里的事务指的是数据库事务(Transaction)。所以交易数据的传输需满足顺序正确性要求,既要保证顺序的正确性,也要保证消息处理的一次性

既然我们这节课讲的是数据传输质量问题,那么我们还是要分析一下可能的异常情况。数据传输已经具有事务性了,还能出啥问题?

网页刷新太快,可能会收到远端服务器拒绝访问的消息。这意味着电商服务器觉得你的访问频率过高,临时降低提供给你的服务质量。

金融行业里的服务器容量也有上限,也普遍采取了限流

限流

常用限流方法:

漏桶算法

消息的生产者将所有请求放到一个容量固定的桶。消费者匀速从桶里消费消息。因为桶的消息满了就丢掉,所以这个桶叫作漏桶。

令牌桶算法

和漏桶算法一样,也有容量固定的桶,桶装的令牌。系统按固定速度往令牌桶里放令牌,满了之后就会溢出。消费者每处理一个消息都消耗一个令牌,所以桶里面的令牌总数决定了处理消息的最快速度,而放令牌速度决定处理消息的平均速度。

券商如何选择。**当两个不同组织之间的金融系统进行对接的时候,接收方一般要假设发送方是恶意的。**因此交易所要限制券商的消息发送速度,如1s内最多只能发多少消息。这时券商可漏桶算法限制自己对外的消息发送速度。

尽管交易所明文规定每家券商的速度上限,但交易所不相信券商会遵守规则,因此交易所依然对券商消息限流。这些经过限流的券商流量最终汇集,再集中处理。

虽然对每家的流量都做了限制,但他们的总流量还可能超出系统承载上限。所以交易所还需要对总流量限流

这时你就有个选择,如你想对总流量微调,可选择令牌桶算法,就可通过调整生成令牌的速度调整处理速度。令牌桶里的总令牌数目代表了系统的峰值处理流量,这样系统还具有一定峰值处理能力。

**一旦上下游间做限流,整个系统就需要假设数据会丢。**因此你需要处理好订单发送不出去,或发送出去后无法被执行。

市场数据

交易数据的处理一般具有事务性,所以选择灵活度比较小。市场数据就不一样了,选择面要宽泛很多。

市场,指金融交易市场,**所以市场数据指的是金融市场成交信息。**股价就是股票买卖双方的成交价格。

交易数据是事务型数据,那市场数据也是事务型数据吗?这个问题是市场数据处理的最核心问题。

如你关心订单成交信息,那这成交信息是事务类数据。但例子里,券商的算法交易平台关心的不是自己的交易信息,而是当前所有人的交易信息,所以算法交易平台并不需要数据有事务保证,即案例里允许掉数据。

正因放松假设,对市场数据的处理才有多种选择。不同能力的算法交易平台对数据的实效性要求不一。

非实时市场数据

非实时,主要指那些对延时要求不特别高。这时消息的传输本着尽量快原则,稍微慢几百毫秒或几秒钟问题不大。绝大多数情况下,你碰到的都是这种非实时的市场数据场景。

非实时市场数据的分类。

订阅发布与消息

数据传输方式分为

  • 订阅发布(Pub/Sub) 每个消息的消费者互相独立,每个人都要处理所有消息,并且每个人处理消息的顺序必须一样。
  • 消息(Messaging) 所有人之间共享所有消息。即每个人处理的只是一部分消息,从他的角度来看消息是断断续续、不连续

RabbitMQ、RocketMQ最开始都按消息方式设计。而Apache Kafka和Google Cloud Pub/Sub按订阅发布方式设计。

这些都只是这些数据系统最开始的设计目标。系统架构在演进过程中可能会同时具有订阅发布和消息的一些能力,如Apache Kafka。

券商需要哪种数据传输方式。如果算法平台只有部分数据,可能缺失一些重要历史信号,所以算法交易平台需要所有历史数据。所以券商需要订阅发布数据传输方式,从交易所接收数据。这也是为什么现在Apache Kafka在金融系统中使用得越来越多。

优化及原理

要利用金融数据的一个属性——数据的时效性。数据的时效性指的是不同时间的数据对你的价值。

对金融市场数据,你永远得不到当前的数据。不管延时多低,你收到市场数据的时候已是历史数据,所以我们在这里谈论的都是历史数据的时效性。

如果所有历史数据对你的价值都是一样高,那么一般来说数据需要尽量完整。相反,如果越接近现在的数据对你的价值越高,那么数据则有可能允许丢失。因为就算丢失了,你只要稍微等一段时间,丢失的数据重要性就会变得很低,这样丢失对你的影响就会很小。

算法交易平台属于高频交易类型,它需要根据最近的趋势预测未来的盈利机会。如果数据的时间太久,可能市场上的其他参与者早就利用这些信息赚过了钱,这种时间太久的数据就没剩多少价值了。所以算法交易平台的数据属于具有时效性的数据,允许部分缺失。

金融系统不是所有地方的数据要求都很高,这就是例子。所以你一定要结合业务特点来选择合适系统架构。知道这特点,就可针对性地调整数据传输系统的容灾能力。

比如说Apache Kafka默认带有一定容灾功能。一般要求部署3个节点,其中一个是主节点,另外两个是备份节点。

每当Kafka收到数据后,会将数据先同步给备份节点,可以将同步数设为0,牺牲掉部分不重要的容灾能力,换来更快的处理速度。

就算数据可以丢失,也要避免这种情况频繁出现。所以,你要建立合理的监控机制,当数据频繁丢失的时及时反应。

实时市场数据

金融行业的非实时市场数据的处理和互联网行业接近,系统架构也类似,所以你会有似曾相识感觉。

实时市场数据的处理,这和互联网的处理区别比较大。

特殊部署

实时市场数据,对延时要求非常高的数据场景。低延时的系统维护对交易所本身是一笔很大的开销,而且因为能支持的用户数有限,所以一般都需要收费,也就是常说的席位费。

交完席位费后,一般就能连到交易所,获取一些低延时数据,同时还有可能得到更详细数据内容。

一般来说你的服务器和交易所有一定的物理距离,跨省传播数据的话,延时可能在几毫秒到几十毫秒。如你觉得这几十毫秒很重要,你可再用更多钱来解决这个问题。交易所一般会提供同机房主机服务,你可以将自己的系统部署在交易所的机房内。这样你的系统和交易所系统的物理距离只有几米左右,光速带来的影响基本忽略不计。

不过,因为交易所机房的物理机器有限,你需要和其他有钱的金融公司竞争这为数不多的位置,可能需要付出天价运营费用。

数据分发

实时市场数据的消费者之间并不是平等关系。谁的钱多,谁的延时就低。这表示实时数据分发的系统架构是一个层级结构,越接近上层的人收到的消息越快。

先从交易所出发。当交易所生成完数据之后,会将数据传送给顶层的数据节点。这一层会部署多个节点以防单点故障。

假如Kafka,交易所数据应该发给一个主节点,主节点负责和备份节点之间通讯。但是这样会有一个网络延时,所以交易所采用的是局域网内广播,所有第一层节点都会同时收到所有数据信息:

顶层数据节点收到数据之后会做两件事情,分别是推送给优先级最高的VIP客户,以及推送给下一层的数据分发节点。

低延时架构优化的是系统延时,而非系统的吞吐量。互联网常见的**消息系统普遍采用消费者定时拉数据模式。**优点是能支持大量的数据消费者,但两次拉取之间有一定时间间隔。如Apache Kafka的默认客户端。

数据的实时推送会消耗很多推送端的硬件资源,但交易所的VIP客户数目少,实时推送对系统影响可控,所以数据可通过顶层数据节点直推给用户。

经济学角度。VIP席位费的总盈利是总VIP客户数乘以席位费,VIP客户数减少之后,VIP之间的价格竞争会更激烈,所以席位费会增加。因为总盈利是这两者的乘积,很有可能总盈利会因为席位费的增加而大幅增加。

利润角度,系统也不一定需要支持很多VIP用户。选择系统架构,要结合业务。VIP席位需具备一定价格弹性(Price Elasticity)。

数据除了顶层的VIP用户之外,还有非VIP的付费实时数据用户。但由于数据已有延时,这时不一定要用到数据广播,可选择让顶层节点推送数据给下层节点。这时架构示意图:

以此类推,每层往下继续分发数据。这时候数据分发的对象有交易所的非VIP付费客户,也有其他数据节点。

当交易所解决完所有付费用户的实时数据推送问题后,怎么把实时数据变为非实时数据,即怎么让非付费用户也能访问数据。只要将某层的实时数据节点对接到非实时数据系统。这时**数据由实时推送方式变为非实时拉取方式。**更新后的系统架构:

数据压缩

实时数据系统大部分的时间都花费在数据的解、编码。想速度快,首要数据量小,这也是金融系统架构和互联网架构很大区别。

Json或XML格式的数据一定不能用在实时数据系统。因为这些传输格式是为人准备,里面有多余信息,需换成只有机器看得懂的二进制表达方式。如要求不高,一般Google Prototol Buffer协议够,会按照你定义好的二进制表现形式来进行编码,能对数据进行很大幅度压缩。

在要求更高金融场景下,普遍会使用金融行业专用的FIX通讯协议。定义了通讯规则,同时也定义数据传输方式。

市场数据的显著特点:连续两个数据之间大部分内容都一样。如你去比较连续两个股票价格信息数据,它们很可能只有价格指标会变化,其他信息完全一样。

FIX协议就利用了这特性,很多情况下只需传输数据变动部分,就能减少很多数据传输量。设计思想和视频压缩算法类似,视频压缩以关键帧为基准,其他帧只存储相对关键帧的变化。

总结

金融数据分为交易数据和市场数据两种。金融交易数据的处理和互联网处理方法非常类似,在处理的时候需要做好数据限流的架构选型。

市场数据的处理分为非实时和实时两种。非实时市场数据的处理也和互联网处理方法类似,在处理的时候,对订阅发布和消息这两种不同架构选择,我们要做好区分。因为市场数据具有实效性,我们可以容忍偶然的数据丢失,这也给了数据系统一个很大的优化空间。

实时市场数据的消费者分为不同的级别。实时数据系统的架构和用户一样,也是分为不同级别。数据会层层分发下去,不同层级有不同的延时情况和部署方案。实时系统的优化主要体现在数据压缩上,金融行业有自己特有的FIX二进制通讯协议。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
工具范本 | 控制系统文档资料交接规范(二)
Control System Document & information Handover Specification
剑指工控
2021/11/09
4580
工具范本 | 控制系统文档资料交接规范(一)
Control System Document & information Handover Specification
剑指工控
2021/11/09
6400
液位PID控制系统的PLC 与HMI仿真联调
Simulation joint debugging between PLC and HMI for the Liquid level PID control system
剑指工控
2021/11/09
7820
锅炉DCS控制系统解决方案‌
摘  要:本文结合高炉煤气锅炉及发电项目,重点论述了ABB公司的DCS集散控制系统结构和特点及其组态开发应用,结合实际说明了在该系统中DCS控制充分发挥了其配置灵活、控制通讯可靠、编程方便和可现场调试的优点,保证了生产的稳定性和安全性。
用户10110555
2025/05/14
1130
【工业控制系统】工业控制系统(ICS) 安全简介第 2 部分
介绍 Purdue Enterprise Reference Architecture (PERA)、其他参考模型和安全 ICS 架构的最佳实践。 安全 ICS 架构的 Purdue 模型和最佳实践 在本系列的第一部分中,我们回顾了工业控制系统 (ICS) 的独特沿袭,并介绍了保护 ICS 的一些挑战。在第二部分中,我们将向读者介绍普渡企业参考架构 (PERA)、其他专用于 ICS 网络安全的参考模型和出版物,以及保护这些至关重要的系统的架构和管理最佳实践。 回顾:ICS 网络安全的挑战 在我们对 I
架构师研究会
2022/03/08
1.6K0
工业自动化控制-组态王1
内容包括组态王软件用途、特点,组态王软件界面、操作介绍,组态王命令语言、函数介绍等。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易!
爱上电路设计
2024/05/28
1991
工业自动化控制-组态王1
【工业控制系统】深入了解 ICS612:ICS 网络安全:第 1 部分
ICS 从业者可以立即在实际情况中使用他们的 ICS612 培训。 降落飞机 我认识一家生产工厂的首席执行官,我们就叫他比尔吧,他希望他的关键团队成员真正了解他的运营团队每天为实现生产目标而承受的压力。比尔还希望他的经理和支持人员能够理解“让它发生”和“看着它发生”之间的区别。换句话说,他希望他的团队能够认识到认为自己有技能和知道自己有技能之间的区别,并坚定地理解如果只有“教育知识”而不是“知识结合起来”会有不同的结果有经验。” 比尔做了什么来灌输这一课?他为他的 10 名主要员工购买了一小时的飞行课程
架构师研究会
2022/03/08
5610
【工业控制系统】ICS (工业控制系统)安全简介第3 部分
在第 3 部分中,我们将研究 ICS 中的远程访问连接,检查它们为何存在,并回顾保护它们的最佳实践。 远程访问最佳实践 远程访问连接对 ICS 的重要性 在互联网出现之前,大多数组织的 ICS/OT 环境是“隔离的”,这意味着它没有与外部网络的连接。因此,网络安全措施并不是 ICS 的主要考虑因素。然而,正如本系列的第一部分所讨论的,必须克服这种思维方式在互联网时代的持续存在,因为 ICS 环境现在更加互联并依赖于实时操作数据。随后,它们已成为威胁团体的高价值目标。 与 ICS 进行远程访问连接的好处是
架构师研究会
2022/03/08
1.7K0
【方原柏专栏】WirelessHART无线网络前期工程设计
WirelessHART符合IEC62591国际标准,采用了可互操作的自组织Mesh网状技术,其中无线现场设备组成的无线网络可以在过程环境中克服障碍物对无线通信的影响。这种架构不需要布线等配套基础设施,创建了符合成本效益良好的自动化替代方案。WirelessHART的无线现场网络将无线现场设备的数据传送到控制系统,在生产现场表现出的性能是安全和可靠的,展现了无线通信技术用于监测和控制应用的能力。
剑指工控
2021/11/09
1K0
开发者成长激励计划-基于TencentOS Tiny FDM 3D打印机云控制系统方案
3D打印技术是增材制造的典型体现。它的原理是通过特定的切片软件将产品的3D设计模型图转换成3D打印机控制系统可以识别的控制代码,该控制代码在导入3D打印机控制系统后,3D打印机控制系统通过解析每一行控制代码,进而控制3D打印机打印模型。例如FDM打印机的打印原理,如下图1-1所示。
杨源鑫
2022/07/28
2K0
开发者成长激励计划-基于TencentOS Tiny FDM 3D打印机云控制系统方案
Java计算机IT编程文档常见单词翻译
… 基本上 Rails、Ruby 有的特有名词,除了计算机科学中常见的词儿以外,在不造成读者困扰的情况下,尽量保持原汁原味。
JavaEdge
2020/03/12
8840
计算机软件配置管理计划规范
GB/T 12505-90 Specification for Computer Software Configuration Management  中华人民共和国国家标准  1. 主题内容与适用范围     本规范规定了在制订软件配置管理计划时应该遵循的统一的基本要求。     本规范适用于软件特别是重要软件的配置管理计划的制订工作。对于非重要软件或已开发好的软件,可以采用本规范规定的要求的子集。 2. 引用标准 GB/T 11457 软件工程术语 GB 8566 计算机软件开发规范 GB 8567 计算机软件产品开发文件编制指南 GB/T 12504 计算机软件质量保证计划规范 3. 术语     下面给出在本规范中用到的一些术语的定义,其它术语的定义按GB/T 11457。在引用时,特别要注意线(baseline)、配置控制(configuration)、配置控制组(configuration control board)、配置检查(configuration audit)、配置标识(configuration identification)和配置状态记录(configuration status accounting)等术语的定义。 3.1项目委托单位 project entrust organization     项目委托单位是指为产品开发提供资金并通常也是(但有时也未必)确定产品需求的单位或个人。 3.2 项目承办单位 project undertaking organization     项目承办单位是指为项目委托单位开发、购置或选用软件产品的单位或个人。 3.3 软件开发单位 software development organization     软件开发单位是指直接或间接受项目委托单位委托而直接负责开发软件的单位或个人。 3.4 用户 user 用户是指实际使用软件来完成某项计算、控制或数据处理等任务的单位或个人。 3.5 软件 software     软件是指计算机程序及其有关的数据和文档,也包括固化了的程序。
爱明依
2019/03/12
2.4K0
快速了解分布式链路追踪系统 zipkin
和市面上其它分布式链路追踪系统一样,Zipkin 也是根据 Google 论文《Dapper,大规模分布式系统的跟踪系统》(https://bigbully.github.io/Dapper-translation/) 作为理论,进行设计。
高楼Zee
2021/10/14
1.4K0
快速了解分布式链路追踪系统 zipkin
计算机常用算法对照表整理
常用对照: NLP CRF算法: 中文名称条件随机场算法,外文名称conditional random field algorithm,是一种数学算法,是2001年提出的,基于遵循马尔可夫性的概率图模型。 全部对照 第一部分、计算机算法常用术语中英对照 Data Structures 基本数据结构 Dictionaries 字典 Priority Queues 堆 Graph Data Structures 图 Set Data Structures 集合 Kd-Tre
学到老
2018/03/16
2.1K0
数据中心机房建设方案
数据中心机房总面积大约178平方米,使用面积约为123平方米,分为三个功能区域,分别为主设备机房、动力机房、操作间、钢瓶间。各间需要单独隔开。隔开后主设备机房用于放置配线柜、机柜、服务器、小型机、网络设备、通讯设备等重要设备;动力机房放置UPS、电池、配电柜等。
全栈程序员站长
2022/08/22
2.7K0
数据中心机房建设方案
Linux 内核编码风格
像其他大型软件一样,Linux制订了一套编码风格,对代码的格式、风格和布局做出了规定。我写这篇的目的也就是希望大家能够从中借鉴,有利于大家提高编程效率。
用户7678152
2020/08/26
2.8K0
机器人操作系统二(ROS2)- 修行 Taoism
ROS 2项目的目标是继承ROS 1的优点并改进不合适的部分。The goal of the ROS 2 project is to leverage what is great about ROS 1 and improve what isn’t.
zhangrelay
2019/08/29
3.8K0
机器人操作系统二(ROS2)- 修行 Taoism
Java基础常见英语词汇
Java基础常见英语词汇(共70个) OO:object-oriented ,面向对象
MonroeCode
2018/01/09
1.5K0
[AI安全论文] 17.英文论文Design和Overview撰写及精句摘抄——以系统AI安全顶会为例
前一篇介绍CCS2019的Powershell去混淆工作,这篇文章质量非常高,来自于浙江大学的李振源老师。这篇文章将从个人角度介绍英文论文模型设计(Model Design)和概述(Overview)如何撰写,并以系统AI安全的顶会论文为例。一方面自己英文太差,只能通过最土的办法慢慢提升,另一方面是自己的个人学习笔记,并分享出来希望大家批评和指正。希望这篇文章对您有所帮助,这些大佬是真的值得我们去学习,献上小弟的膝盖~fighting!
Eastmount
2022/04/18
9730
[AI安全论文] 17.英文论文Design和Overview撰写及精句摘抄——以系统AI安全顶会为例
Chapter 10. Network Applications and Services(网络应用和服务)
This chapter explores basic network applications—the clients and servers running in user space that reside at the application layer. Because this layer is at the top of the stack, close to end users, you may find this material more accessible than the material in Chapter 9. Indeed, you interact with network client applications such as web browsers and email readers every day.
阿东
2024/04/28
2030
Chapter 10. Network Applications and Services(网络应用和服务)
推荐阅读
相关推荐
工具范本 | 控制系统文档资料交接规范(二)
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 案例分析
  • 交易数据
    • 限流
  • 漏桶算法
    • 令牌桶算法
  • 市场数据
    • 非实时市场数据
      • 订阅发布与消息
      • 优化及原理
    • 实时市场数据
      • 特殊部署
      • 数据分发
      • 数据压缩
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档