区块链交易所开发详细、区块链交易所系统开发(开发方案)、区块链交易所源码案例部署
数字货币交易所开发详情版、数字货币交易所系统开发(web3.0技术开发)、数字货币交易所开发源码成品交易所服务器是一个具有高速性能的交易后台,专为加密货币交易所设计。它可以支持每秒10000次的交易,并通过websocket实时通知用户/市场数据。
架构
对于这个项目,它在这张图片中被标记为服务器。
代码结构
所需的系统
MySQL。用于保存操作日志、用户余额历史、订单历史和交易历史。
Redis。一个Redis哨兵组用于保存市场数据。
Kafka。一个消息系统。
基础库
网络。一个事件基础和高性能的网络编程库,轻松支持1000K TCP连接。包括TCP/UDP/UNIX SOCKET服务器和客户端的实现,一个简单的定时器,状态机,线程池。
实用工具。一些基本库,包括日志、配置解析、一些数据结构和http/websocket/rpc服务器实现。
模块
matchengine:这是最重要的部分,因为它记录用户余额和执行用户订单。它是内存数据库,将操作日志保存在MySQL中,并在启动时重做操作日志。它还将用户历史记录写入MySQL,推送余额、订单和交易信息到kafka。
市场价格。从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和alertcenter只有一个实例,而readhistory、accesshttp和accwssws可以有多个实例来进行负载平衡。
请不要在同一台机器上安装每个实例。
每个进程都在deamon中运行,并以一个看门狗进程开始。当崩溃时,它将在1秒内自动重启。
部署实例的最佳做法是在以下目录结构中。
matchengine
|---bin
| |---matchengine.exe
|---log
| |---matchengine.log
|---conf
| |---config.json
|---shell
| |---restart.sh
| |---check_alive.sh
API
HTTP协议和Websocket协议文件有中文版本。如果时间允许,我们将在将来把它翻译成英文。
还有一个第三方的OpenRPC文档可用。
第三方客户端
Python3 API的实现
Ruby Gem 💎
C# API
测试交换API的HTML UI
Websocket授权
Websocket协议有一个授权方法(server.auth),用于授权Websocket连接订阅用户的特定事件(交易和平衡事件)。
为了适应这个方法,你的交易所前端需要提供一个内部端点,该端点从名为 "授权 "的HTTP头中获取授权令牌,并验证该令牌和返回用户ID。
内部授权端点由配置文件(accessws/config.json)中的auth_url设置定义。
响应示例。{"code":0, "消息": null, "数据":{"user_id":1}}