国王小组:搭建交易所开发需要的服务器架构

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
简介: 区块链交易所开发详细、区块链交易所系统开发(开发方案)、区块链交易所源码案例部署数字货币交易所开发详情版、数字货币交易所系统开发(web3.0技术开发)、数字货币交易所开发源码成品交易所服务器是一个具有高速性能的交易后台,专为加密货币交易所设计。它可以支持每秒10000次的交易,并通过websocket实时通知用户/市场数据。

区块链交易所开发详细、区块链交易所系统开发(开发方案)、区块链交易所源码案例部署
数字货币交易所开发详情版、数字货币交易所系统开发(web3.0技术开发)、数字货币交易所开发源码成品交易所服务器是一个具有高速性能的交易后台,专为加密货币交易所设计。它可以支持每秒10000次的交易,并通过websocket实时通知用户/市场数据。

架构
image.png
对于这个项目,它在这张图片中被标记为服务器。

代码结构
所需的系统

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}}

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
监控 安全 前端开发
交易所系统开发(源码正式版)/需求逻辑/玩法详情/规则架构
交易所源码开发是指基于特定的需求和要求,从头开始构建一个自定义的交易所平台的开发过程。这种开发可以包括以下几个关键方面:
|
存储 SQL 消息中间件
国王小组:区块链交易所搭建|如何用微服务替代单服务架构
本篇文章一共分为三个部分,分别是微服务架构的演进过程、具体实践微服务的应用技术和领域驱动设计的意识转变。微服务架构已经渗透到互联网应用的方方面面,而领域驱动设计也逐渐被业界所接收。
国王小组:区块链交易所搭建|如何用微服务替代单服务架构
|
消息中间件 JavaScript Java
国王小组:交易所搭建|如何解决事件驱动架构
介绍 还是先举例子,在平常的生活中事件驱动架构也是比较常见的。一般情况下的人与人之间的沟通都是以一个人说一个人听的关系进行,并同时可以交换听者与说着。伴随着听者听到说者所表述的内容后,做出的心理,行为上的反应就是事件在接受者中的处理过程。
国王小组:交易所搭建|如何解决事件驱动架构
|
安全 数据管理 API
国王小组:交易所搭建|API网关的API架构
一、何为API网关? APIGateway 即API网关,所有请求首先会经过这个网关,然后到达后端服务,有点类似于Facade模式。API网关作为系统接口对外的统一出口,可以减少调用方对服务实现的感知。 没有API网关时的系统结构如下图1:由图可以看出,在没有API网关作为统一出口的情况下,需要调用方自己组合各种服务,而且容易让调用方感知后端各种服务的存在。
国王小组:交易所搭建|API网关的API架构
|
存储 NoSQL Go
国王小组:开发国际交易所搭建|如何选择合适的容器技术架构
国王小组:开发国际交易所搭建|如何选择合适的容器技术架构
|
存储 消息中间件 自然语言处理
国王小组:国际多语言交易所搭建|如何选择开发架构风格
DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场景和需求来制定。
|
运维 监控 安全
国王小组:数字货币交易所搭建|微服务架构运用理解
核心思想:分而治之,将一个应用拆分成多个松耦合的服务,这些服务之间通过某种协议(REST、RPC等)进行互相协作,其中一个关键点就是各服务之间的松耦合,各服务之间通过一种“标准”的协议进行沟通,不需要理解对方服务的实现逻辑、实现方式,只要在对方不影响自己所提供的服务功能即可。
|
21天前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
62 2
|
25天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
76 2
|
4天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
44 10

热门文章

最新文章