用户下单-》网关层做loadbanlance-》调用订单服务生成对应的订单,此时订单状态为new, 同时写一个待发送消息表,消息状态为padding
然后异步发送订单创建的消息,消息发布成功后将订单状态更新为sent;异步发生消息会有个key,key为对应的对比值
然后会有多个撮合引擎订阅同一个分区消息,并行消费同时撮合;避免单节点故障
撮合引擎消费上游订单消息,将订单放入内存订单簿:
使用TreeMap按价格排序,使用ConcurrentLinkedQueue管理同价位的订单队列;
买单按价格从高到低排序,卖单按价格从低到高排序
执行撮合逻辑:匹配买卖订单,更新成交记录
生成成交消息(Trade Event)并投递 Kafka