交易所开发系统如何采用分布式架构(国王小组)

简介: 交易所开发系统如何采用分布式架构(国王小组)

交易所开发系统如何采用分布式架构(国王小组)
,涉及到的编程语言有:C++、C#、NodeJS,数据库采用MySql,通讯中间件采用ZeroMQ。选择C++的原因有二点,首先考虑到与交易所接口兼容最优化,其次考虑到算法的性能最优化,故所有的后端交易相关应用都采用C++进行编程;选用C#主要原因是为了降低策略开发者的编写难度,毕竟策略开发人员的编程水平没有那么高,并且可快速开发一些可视化回测分析程序;而NodeJS是为了方便开发Web端界面,并且提供一些REST API接口供前端应用调用。最后选用MySql也是为了方便部署,方便使用,并且它的内存数据库还是性能相当不错的,如替换其他数据也可以,如:SqlServer、Oracle、Mongodb等。由于系统采用分布式,为了降低开发难度,应用间数据通讯并非采用原生的tcp/ip协议进行编码,而采用ZeroMQ进行编程,通过几种常用模式,如:REQ/REP、PULL/PUSH、PUB/SUB等,就能轻松进行数据通讯。最后本项目开发工具采用VS2015和VSCode,读者可自行下载。以下所有的项目工程都将基于这两款IDE进行建立。
以上仅仅是编程方面的准备工作,但如果想做好一套量化系统,你必须对业务知识有深刻的了解,不然后面的一些细节你可能无法把控,甚至会引发一些意想不到的灾难。不积跬步,无以至千里;不积小流,无以成江海。让我们一步一个脚印,先把基础打扎实,再正式开始我们的量化系统搭建之行。在此推荐《c++ primer plus》、《C#高级编程》、《代码之美》,交易相关的大家可以参加协会组织的从业人员资格考试,这样能系统的学习基础知识、法律知识等。相信充分做好这些准备后,下文的量化系统搭建会非常轻松、非常有趣。

架构设计
系统架构

本量化系统分为前端和后端,前端主要面向用户,用于策略编写、手工下单、监控、报告分析等;后端将交易和行情进行封装,以及指令路由工作,并提供最简单的接口供前端使用。

image.png
以下是行情中心内部架构,考虑到后期接入多家交易所行情,所以将行情接收器独立出来,这样能更好的做到负载均衡,并各自将行情写入内存数据库,供其他应用调用;而行情中心将收集各接收器推送来的行情,封装成统一格式再发布给订阅者。

image.png

以下是交易中心与算法工人内部架构,交易中心主要负责接收客户端发送过来的指令,通过风控层后将指令路由至算法工人,由算法工人处理订单逻辑,如:条件单、追单、止损止盈单等,并最终将订单报入交易所场内,同时将回报返回给交易中心,再由交易中心将回报返回给订阅用户。
交易中心还负责路由用户发送的策略指令,并根据指令分发给策略回测工人或者策略仿真工人,对应的去执行回测指令或者启动策略等。

相关文章
|
10天前
|
存储 JSON 数据库
Elasticsearch 分布式架构解析
【9月更文第2天】Elasticsearch 是一个分布式的搜索和分析引擎,以其高可扩展性和实时性著称。它基于 Lucene 开发,但提供了更高级别的抽象,使得开发者能够轻松地构建复杂的搜索应用。本文将深入探讨 Elasticsearch 的分布式存储和检索机制,解释其背后的原理及其优势。
39 5
|
14天前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
126 3
|
9天前
|
存储 块存储
ceph分布式存储系统常见术语篇
关于Ceph分布式存储系统的常见术语解释和概述。
26 1
ceph分布式存储系统常见术语篇
|
6天前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
27 2
|
9天前
|
设计模式 开发框架 前端开发
在开发框架中实现事件驱动架构
【9月更文挑战第2天】事件驱动架构(EDA)通过事件机制让组件间解耦交互,适用于动态扩展和高响应性的系统。本文提供一个基于Beego框架实现事件驱动的示例,通过事件管理器注册和触发事件,实现用户注册和登录时的不同处理逻辑,展示了其在Web应用中的灵活性和高效性。
37 5
|
12天前
|
Web App开发 编解码 Linux
FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构
音视频技术广泛应用于直播系统,涵盖电视、电脑、手机直播等多种形式,并延伸至在线教育、医疗咨询和安全监控等领域。直播系统涉及实时编解码与传输,技术实现较复杂。从用户角度看,直播系统分为来源方和观看方,但在开发者视角下还需加入云平台作为中转。本文提出一套基于全开源软件的直播系统架构,分为三层:开源直播录制软件(如OBS Studio、RTMP Streamer),开源流媒体服务器(如SRS、ZLMediaKit),以及开源音视频播放器(如VLC media player、ExoPlayer)。这些组件共同构成一个高效、灵活且成本低廉的直播解决方案。
39 0
FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构
|
2天前
|
设计模式 Kubernetes 开发者
探索后端开发中的微服务架构
本文旨在通过浅显易懂的方式,向读者介绍微服务架构的概念、优势以及在后端开发中的应用。我们将从微服务的基本定义出发,逐步深入到如何设计、部署和维护一个高效的微服务系统。文章还将分享一些实际案例,帮助初学者和有经验的开发者更好地理解和掌握微服务架构。
|
11天前
|
开发者 云计算 数据库
从桌面跃升至云端的华丽转身:深入解析如何运用WinForms与Azure的强大组合,解锁传统应用向现代化分布式系统演变的秘密,实现性能与安全性的双重飞跃——你不可不知的开发新模式
【8月更文挑战第31天】在数字化转型浪潮中,传统桌面应用面临新挑战。本文探讨如何融合Windows Forms(WinForms)与Microsoft Azure,助力应用向云端转型。通过Azure的虚拟机、容器及无服务器计算,可轻松解决性能瓶颈,满足全球用户需求。文中还提供了连接Azure数据库的示例代码,并介绍了集成Azure Storage和Functions的方法。尽管存在安全性、网络延迟及成本等问题,但合理设计架构可有效应对,帮助开发者构建高效可靠的现代应用。
12 0
|
11天前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
25 0
|
11天前
|
微服务 API Java
微服务架构大揭秘!Play Framework如何助力构建松耦合系统?一场技术革命即将上演!
【8月更文挑战第31天】互联网技术飞速发展,微服务架构成为企业级应用主流。微服务将单一应用拆分成多个小服务,通过轻量级通信机制交互。高性能Java Web框架Play Framework具备轻量级、易扩展特性,适合构建微服务。本文探讨使用Play Framework构建松耦合微服务系统的方法。Play采用响应式编程模型,支持模块化开发,提供丰富生态系统,便于快速构建功能完善的微服务。
22 0

热门文章

最新文章