股票市场数据源是如何工作的?

6

或任何其他类型的实时数据从服务器到客户端...我说的是一堆来自服务器到客户端的实时数据,例如每秒钟的信息更新。

服务器是否会自动将数据推送到客户端,还是客户端需要不断地轮询服务器以获取更新?通常使用什么协议进行通信?(http,socket通信等)


1
所有这些都是可能的。根据您感兴趣的内容,您可以检查代码... - Kevin Sylvestre
1
请在谷歌上搜索“comet”、“reverse ajax”和“long polling”。 - mpen
每一秒都很重要... 在大规模交易中,一秒钟就是永恒。 - Dr. belisarius
2个回答

1

在一个简单的情况下:

  1. 创建一个带有监听套接字的服务器。
  2. 在客户端上,连接到服务器的套接字。
  3. 让客户端执行 while(data = recv(socket))(伪代码)
  4. 当服务器有令人兴奋的消息要告诉客户端时,它只需在套接字上发送 send(...)

您甚至可以通过HTTP实现此模式(HTTP套接字没有真正的时间限制)。服务器甚至不需要从套接字中读取 - 它只能尝试向firehose写入。

通常使用TCP套接字 - 消息按顺序到达,并且是最佳努力。如果延迟更重要,而丢失或乱序不是问题,则可以使用UDP。


我认为这在HTTP上不可行,因为HTTP会话在一定时间后关闭,所以它必须是一个永久性会话。所以从我这里得到的信息是你基本上在说TCP/Socket。 - Shai UI
@foreyez:HTTP并没有指定套接字关闭时间。而HTTP是通过套接字传输的,只是在其中定义了一个协议。 - Yann Ramin

1
在经纪人/银行等使用的服务器端金融应用程序中,市场数据(报价、交易等)通过某些应用层协议通过TCP传输,这个协议很可能不是HTTP。当然,没有轮询。客户端与服务器建立TCP连接,服务器向客户端推送数据。分发市场数据的常见方法之一是FIX。汤森路透拥有一堆加密的专有协议,可以追溯到主机时代,用于分发此类数据。
HTTP可用于SOAP / RESTful以传输/请求不太大的数据量,例如商业新闻。 更新 实际上,即使是FIX在某些情况下也不足够,因为它具有“文本”性质,因此开销很大。大多数经纪人和交易所使用二进制格式协议(FAST或某些专有协议)传输高容量流,例如报价。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接