高性能交易引擎,具备实时通知功能
ViaBTC 交易所服务器是一个专为加密货币交易所设计的高性能交易后端。它每秒可支持多达10000笔交易,并通过WebSocket实现用户及市场数据的实时通知。
在本项目中,它在此图中被标记为“服务器”。
必需系统
MySQL:用于保存操作日志、用户余额历史、订单历史和成交历史。
Redis:一个Redis哨兵组用于保存市场数据。
Kafka:一个消息系统。
基础库
network:一个基于事件驱动的高性能网络编程库,轻松支持1000K TCP连接。包含TCP/UDP/UNIX SOCKET服务器和客户端实现、简单定时器、状态机、线程池。
utils:一些基础库,包括日志、配置解析、一些数据结构以及http/websocket/rpc服务器实现。
模块
matchengine:这是最重要的部分,因为它记录用户余额并执行用户订单。它是内存数据库,将操作日志保存在MySQL中,并在启动时重做操作日志。它还将用户历史记录写入MySQL,并将余额、订单和成交消息推送到kafka。
marketprice:从kafka读取消息,并生成K线数据。
readhistory:从MySQL读取历史数据。
accesshttp:支持简单的HTTP接口,并对上层隐藏复杂性。
accwssws:一个支持查询和推送用户及市场数据的WebSocket服务器。顺便提一下,你需要在前面配置nginx以支持wss。
alertcenter:一个简单的服务器,将FATAL级别的日志写入Redis列表,以便我们发送告警邮件。
操作系统
Ubuntu 14.04或Ubuntu 16.04。尚未在其他系统上测试。
依赖项
请参阅依赖项。安装上述提到的系统或库。
你必须使用 depends/hiredis 来安装 hiredis 库,否则可能不兼容。
编译
先编译 network 和 utils,其余部分都是独立的。
部署
对于 matchengine 和 marketprice,各提供一个单实例。
暂无开放 Issues,或尚未同步最近议题。