最近比特币势头很猛,已经超过5w美金,群里有人问了,这样高频的数字货币交易系统有哪些技术挑战呢?

比特币交易系统应该长这个样子:

挑战关键点应该是:

  • 计算实时性(价格统计计算,根据排序展示);

  • 推送实时性(价格变化,实时感知);

  • 写操作高并发(买入卖出短线高频);

先说计算的实时性,如果统计计算、排序完全基于DB操作,比如select sum(xx) from table group by xx,肯定会全表扫描,如果放缓存可能存在数据不一致,用户感知就有延迟,进而影响用户交易。

再就是推送问题,如果成交一笔才刷新推送,显然不行。

我们可以一步步抽象问题。

首先说推送,用http短连接肯定不现实,三次握手、四次挥手连接建立销毁成本太高,轮询也有延迟,好的方式就是长连接了,选型websocket或sse即可,性能好,降低服务端压力。

结合之前做网关和IM的经验,我们需要做到技术与业务分离,建立一个独立的长连接服务,专门做长连接维护和推送,也就是推送服务集群。这样如果客户端数量多,用户量变大,可以简单线性扩容推送集群提高推送能力。

由于推送服务主要做的就是长连接维护与推送,不做任何业务相关的逻辑,所以说推送服务所推送的数据理论上是已经计算好的了,不需要在推送服务集群进行处理了。

既然采用推模式,那么推送服务集群也是由“推”驱动的,方式是订阅一个MQ集群,一旦某个事件有新的计算结果了,推送集群进行消费,实现消息推送。

而计算逻辑在于后面的业务服务集群,和推送服务集群直接通过MQ解耦。

如何提高推送服务推送性能呢?

参考kafka的设计有两种方式,一个是多线程并行推送,一个是暂存批量发送,最好可以做成可配置的解决不同频次和实时性业务需求的推送。

我们再说下写操作高并发解决方案,其实逻辑差不多,用户操作以http短连接提交到业务后端服务,如果量大引入mq削峰填谷,如果不大可以直接落DB,由于这些交易流水比较重要,需要做持久化,方式就是按照着股票的Id做分库即可,水平扩容。

回到第一个问题就是统计计算与排序问题,这个问题应该是最难处理的了,直接读MySql必然不靠谱,慢查询必有,DB压力巨大。折中考虑是引入缓存,就是将时间窗口内的计算结果放入缓存当中,供前台服务调用。

我们可以通过异步线程,秒级从DB获取数据进行计算,将结果放入缓存中。有缓存必然有数据一致性问题,那究竟这个数据不一致窗口是多少就需要结合业务考虑了。比如可以考虑异步计算1s三次,推送三次,这样如果有延迟也就300ms吧,理论上不耽误交易。

我问了几个做交易所的架构师,思路基本是这样多级缓存,堆服务器。数据全在内存里做,upd组播消息总线,存储会考虑一些TIDB之类的或是自己基于Mysql做分区,类似于我们之前做的SET化方案,还没有上升到金融的MGR方式。

还有的交易系统的看盘数据,一级行情是6s推送一次,二级行情是3s推送一次。行情原始数据在内存,新行情数据来了之后,根据不同业务生成直接在内存计算。前端也会有一些设计,做一些规整diff计算之类的,我觉得和IM端处理差不多。

技术栈都想好了,推送服务websocket+netty,做好压缩,全内存数据存放,变化时推redis,多级缓存。我了解了下美股期权交易开盘峰值大概6w/s,堆100台4c8g的好像都可以了。

总的来说上面的方案对于大部分虚拟币交易所架构是比较普世的了,解决交易所的撮合、推送都不是问题,最重要的还是实时清算啊,这个有机会再聊。

高频数字币交易所系统有哪些技术挑战?相关推荐

  1. igxe查询交易机器人_区块链数字货币交易所开发功能技术解决方案 | 拾里郎

    点击上方蓝字关注我们! 区块链数字货币交易所开发是数字货币交易流通和价格确定的场所. 数字货币交易所开发是基于区块链技术面向数字货币交易市场的综合性平台.从目前币圈的发展来看,交易所涵盖了包括充值.资 ...

  2. 数字资产交易所IM即时通讯社交系统APP开发

    历年来,数字资产交易所平台方(TEL:138微2315信1761)为了增强用户粘度,都会建立自己的社群,不过一般都是微信群和QQ群,像H.网,B网,C网,U网啊都会建,有的已经建立了好几百个群,不过有 ...

  3. 前后对接数字几_开源数字货币交易所开发学习笔记(1)——系统架构

    前言 部门领导让我研究数字货币交易所的开发技术,今天好不容易把码云(Gitee)上开源数字货币交易所CoinExchange的代码编译成功并搭建出来了,在排查问题的过程中,不断的查看代码以及使用到的技 ...

  4. [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(一) 以太坊Geth客户端安装...

    以太坊Geth客户端安装 geth是以太坊的官方客户端,它是一个命令行工具,提供很多命令和选项,可以运行以太坊节点.创建和管理账户.发送交易.挖矿.部署智能合约等. 下面介绍geth的三种安装方法: ...

  5. 60秒链快讯 | EOS主网TPS创新高;网易星球与数字货币交易所合作被指变相“发币”

    本文由微信公众号DappVision原创首发,转载请联系授权 [EOS主网TPS创新高 达到3771次/秒] 据IMEOS报道,根据EOS Network Monitor显示,目前EOS主网tps最高 ...

  6. 转:数字集群移动通信系统技术体制综述及优选准则

    李 进 良 [摘要]:本文首先按ITU-R报告介绍了数字集群的总目标.业务类型.信道设计和接入技术,并列表比较了7种系统技术体制.为优选适合我国国情且技术先进的体制,提出了性能价格比.标准公开性.技术 ...

  7. 新加坡最大商业银行宣布推出数字资产交易所,支持BTC等4种主流币

    新加坡最大商业银行新加坡星展银行(DBS)推出数字资产交易所.该行表示,数字资产将成为数字经济的未来.借助由该银行支持的数字交易所DBS Digital Exchange,企业和投资者现在可以利用集成 ...

  8. Fcoin Token ( FT )——数字货币交易所的颠覆者,还是无情镰刀的收割者

    一.Fcoin简介 最近一家叫Fcoin的数字货币交易所引起了大量关注,在其上线的短短两星期内,其上的平台币FT在短短两个星期之内上涨了100倍,并且根据其官方公布的交易量,Fcoin也同时成为了全球 ...

  9. 数字货币交易所源码_(数字货币交易所科普)开发数字货币交易所应该注意哪些问题...

    做为一群区块链圈子骨灰级技术人员,不管是公链.联盟链.链改.跨链.数字货币钱包和数字货币交易所,我和我的团队都有着很丰富的经验.我们都知道,目前区块链技术市场比较活跃的产品主要是公链,联盟链,数字货币 ...

最新文章

  1. jQuery学习笔记之extend方法小结
  2. ns2的第一个tcl脚本
  3. 【微信小程序】小程序之自定义头部导航栏背景图
  4. edHat linux光盘引导,[原]个性化Linux发行版光盘之补充——XZ(LZMA算法)
  5. 高并发环境下,6个构建缓存服务需要注意的问题
  6. Fault Tolerance 要求、限制和许可
  7. 局域网访问虚拟机服务器桥接,虚拟机让局域网访问的方法---桥接模式
  8. bcc语料库下载_大数据背景下BCC语料库的研制_荀恩东
  9. 如何恢复录音删除的录音文件_如何把录音转成文字?推荐这款录音转文字app软件!...
  10. Java项目(一):家庭收支记账软件
  11. maven报错:Failure to transfer xxx.jar from xxx was cached in the local repository.
  12. AWS Python应用
  13. VMVare 打不开磁盘xxx.vmdk
  14. 100个思维模型(不一定都适用,各取所需)
  15. 华为鸿蒙wifi认证,鸿蒙 WiFi操作,热点连接
  16. Windows10 creators update comeing
  17. xb格式数据库迁移处理
  18. LoRaWAN介绍13 SX1301
  19. 51单片机 16X16点阵循环滚动显示汉字(基于proteus)
  20. win7下在VMware中设置防火墙打开/关闭

热门文章

  1. 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我)
  2. S - Extended Traffic LightOJ - 1074
  3. python的延时函数delay_ESP32玩转MicroPython(三) 延时、计时 和GPIO操作
  4. MySQL列的别名 insert into select from
  5. 国外同行关注啥——digg.com网站Programming分类每周热点[12/17 - 12/23]
  6. 世界上最大的黑客 Party,有关“DEFCON”的十个冷知识
  7. c++对象模型之Data布局
  8. 个人网盘倒下去 企业网盘顶起来
  9. OpenGL基础知识
  10. 有关YARN/MRv2 相关