关于SpringCloud
Spring Cloud是一个有序的框架集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发方式完成 一键启动和部署。Spring Cloud并不重复制造车轮。它只是结合了各家公司开发的成熟实用的服务框架。通过Spring Boot风格的重新封装,屏蔽了复杂的配置和实现原理,最后给开发 作者留下了一套简单易懂、易于部署、易于维护的分布式系统开发套件。一般来说,一个完整的Spring Cloud框架应该是如下图所示。
如果你对Spring Cloud不熟悉,可以先简单了解一下Spring Cloud的相关教程,这样你再回来看这个项目,就会比较容易上手。需要提醒的是,由于Springcloud框架图是一个完整的架构,为了让开发和部署更快,我们会在开发过程中适当裁剪一些内容,所以会有一些差异。
关于匹配交易引擎
系统的交易队列采用内存匹配,Kafka用于匹配订单信息传输,MongoDB持久化订单交易细节,MySQL记录整体订单交易。其中,01_Framework/Exchange项目主要负责内存匹配,01_Framework/Market项目主要负责订单交易持久化、行情生成、行情推送等服务,包括。
K线数据,间隔时间为。1分钟、5分钟、15分钟、30分钟、1小时、1天、1周、1个月
所有交易对的市场深度数据
所有交易对的最新价格
最近成交的交易对
内存匹配交易所支持的模式
限价单和限价单的匹配
匹配市场订单和限价订单
限价单与市价单的匹配
匹配市场订单与市场订单
限价单和市价单处理逻辑
注意:这张图片是很久以前的,最新代码中的逻辑更加复杂
匹配引擎支持的其他功能
除了普通的限价和市价的匹配功能外,本系统的匹配交易引擎还引入了主动交易模式。通过设置交易开始时间、初始发行量、初始发行价、交易对的活跃度(如BTC/USDT)模式等参数可以制定丰富的匹配交易模式,满足不同的匹配模式。
例如
交易所预计在2020年8月8日12:00:00推出交易对AAA/USDT,但作为一个新推出的货币,没有活跃度怎么行?项目方或交易所决定拿出10000个AAA,价格为0.0001USDT(市场价:0.0005),供大家抢购。系统支持这种活动的设置。
另外,如果项目方或交易所决定拿出1万个AAA以0.0001USDT的价格发行,我不希望大家抢购,而是希望所有充值USDT的用户都能平均分到1万个AAA。这个系统也支持这个活动的设置。
综上所述
n总之,本系统支持高度自定义的匹配模式。同时,你也可以开发自己的匹配交易模式,只要修改Exchange项目中的匹配逻辑即可。
关于技术构成
后台开发:Spring、SpringMVC、SpringData、SpringCloud、SpringBoot
数据库:Mysql、Mongodb
其他:redis、kafka、Ali OSS、Tencent Captcha
前台:Vue、iView、less