股市数据馈送如何工作?
Posted
技术标签:
【中文标题】股市数据馈送如何工作?【英文标题】:How do stock market data feeds work? 【发布时间】:2011-05-27 11:41:05 【问题描述】:或任何其他类型的从服务器到客户端的实时数据馈送...我说的是从服务器到客户端的一堆实时数据。即每秒更新一次信息。
是服务器神奇地将数据推送到客户端,还是客户端需要不断地轮询服务器以获取更新?这通常在什么协议下工作? (http、socket通信等?)
【问题讨论】:
所有这些都是可能的。您可能可以根据您对哪一个感到好奇来检查代码... 谷歌搜索“comet”、“reverse ajax”和“long polling”。 "每一秒" :)...在大交易中,一秒就是永恒 【参考方案1】:在经纪人/银行等使用的服务器端金融应用程序中,市场数据(报价、交易等)通过一些应用程序级协议通过 TCP 传输,该协议很可能不会是 HTTP。当然,没有投票。客户端正在与服务器建立 TCP 连接,服务器向客户端推送数据。分发市场数据的常用方法之一是FIX。 Thomson-Reuters 拥有一系列可追溯到大型机时代的神秘专有协议来分发此类数据。
HTTP 可用于 SOAP/RESTful 传输/请求不那么大容量的数据,例如商业新闻。
更新实际上,在某些情况下,即使是 FIX 也是不够的,因为它具有“文本”性质,因此开销很大。大多数经纪商和交易所使用二进制格式协议(FAST 或某些专有协议)传输大量数据流,例如报价。
【讨论】:
【参考方案2】:在一个简单的情况下:
-
创建一个带有监听套接字的服务器。
在客户端上,连接到服务器的套接字。
让客户做一个
while(data = recv(socket))
(伪代码)
当服务器有一些令人兴奋的事情要告诉客户端时,它只是在套接字上send(...)
s。
您甚至可以通过 HTTP 实现此模式(HTTP 套接字没有真正的时间上限)。服务器甚至不需要从套接字读取 - 它可以尝试仅写入到 firehose。
通常使用 TCP 套接字 - 消息按顺序到达,并且是尽力而为。如果延迟更重要并且丢弃或乱序不是问题,则可以使用 UDP。
【讨论】:
我认为这不会在 http 上工作,在一定时间后不会关闭 http 会话吗?它必须是一个永久会话..所以从我这里得到的你基本上是在说 tcp/socket @foreyez:HTTP 没有指定套接字关闭时间。 HTTP 是在一个套接字上的,只是在其中定义了一个协议。以上是关于股市数据馈送如何工作?的主要内容,如果未能解决你的问题,请参考以下文章