# Warp Exchange **Repository Path**: wangyuchengfeng/Warp-Exchange ## Basic Information - **Project Name**: Warp Exchange - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-07 - **Last Updated**: 2025-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README mysql 8.0.36:docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD='密码' -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/conf:/etc/mysql/conf.d --restart=unless-stopped mysql:8.0.36 kafka 3.7.0:docker run -d --name kafka --network kafka-redis-net -p 9092:9092 -e KAFKA_NODE_ID=1 -e KAFKA_PROCESS_ROLES=controller,broker -e KAFKA_CONTROLLER_QUORUM_VOTERS=1@kafka:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://'机器ip':9092 -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP="CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT" -e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER -v /opt/kafka/data:/var/lib/kafka/data apache/kafka:3.7.0 redis:docker run -d --name redis --network kafka-redis-net -p 6379:6379 -v /opt/redis/data:/data -e REDIS_PASSWORD='密码' redis:6.2 redis-server --requirepass '密码' --appendonly yes 整个系统从逻辑上可以划分为如下模块: API模块(Trading API),交易员下单、撤单的API入口; 定序模块(Sequencer),用于对所有收到的订单进行定序; 交易引擎(Trading Engine),对定序后的订单进行撮合、清算; 行情模块(Quotation),将撮合输出的成交信息汇总,形成K线图; 推送模块(Push),将市场行情、交易结果、资产变化等信息以WebSocket等途径推送给用户; UI模块(UI),给交易员提供一个Web操作界面,并把交易员的操作转发给后端API。 以上各模块关系如下: ![模块关系图.png](images/%E6%A8%A1%E5%9D%97%E5%85%B3%E7%B3%BB%E5%9B%BE.png) 其中,交易引擎作为最核心的模块,我们需要仔细考虑如何设计一个简单可靠,且模块化程度较高的子系统。对证券交易系统来说,交易引擎内部可划分为: 资产模块:管理用户的资产; 订单模块:管理用户的活动订单(即尚未完全成交且未取消的订单); 撮合引擎:处理买卖订单,生成成交信息; 清算模块:对撮合引擎输出的成交信息进行清算,使买卖双方的资产进行交换。 交易引擎是一个以事件驱动为核心的系统,它的输入是定序后的一个个事件,输出则是撮合结果、市场行情等数据。交易引擎内部各模块关系如下: ![交易引擎.png](images/%E4%BA%A4%E6%98%93%E5%BC%95%E6%93%8E.png)