我们要实现的交易所要具备这样的特性:当有成交时,前台(PC/App)上的K线和行情数据(市场列表、市场单页面)要实时显示。
当数据量较少时,如处于测试阶段时,实现这样的效果不难。而当数据量达到一定程度时,比如用户量万级,交易量十万百万级时,就需要更高级的实现方案。
该方案需要前后端配合。
前端
前端,采用WebSocket主动获取或获得订阅数据。
后端接口
后端接口,采用WebScoket Server输出或推送订阅数据。
挂单及交易
挂单、交易、K线、行情分成不同的进程,不要掺杂在一起,通过消息队列来解耦。
具体如下
- 挂单只管挂单,同时发送有新挂单的消息M1
- 交易进程消费M1队列,交易成功时发送交易成功的消息M2和M3
- K线进程消费M2队列,可实现实时更新分时线
- 行情进程消费M3队列,更新市场的行情数据,也可做到实时更新
可适当做些缓存,再配合分布式部署即可。