
1) 【一句话结论】
设计千万级不良资产交易撮合系统,核心是采用分布式缓存(Redis分片存储订单簿)、异步消息队列(Kafka解耦)、微服务拆分,结合数据库读写分离与缓存预热,通过工程优化(如分区、连接池参数)保障低延迟和高可用。
2) 【原理/概念讲解】
老师会解释:撮合系统的核心是“订单簿”与“匹配引擎”。订单簿是存储买卖订单的有序数据结构,类似股票交易所的限价单簿,按价格排序(买方按价格从高到低,卖方从低到高),支持快速匹配买卖方。匹配引擎负责执行撮合逻辑(如价格优先、时间优先),计算成交价格和数量,生成交易记录。为应对高并发,采用异步处理:订单提交后,先写入缓存订单簿(Redis有序集合),再通过消息队列(如Kafka)通知匹配服务;匹配结果通过消息队列返回,避免阻塞。缓存(Redis)用于存储热点订单数据,减少数据库压力;数据库读写分离,主库负责订单写入(事务保障数据一致性),从库负责历史数据读取。微服务拆分将系统拆分为订单服务、撮合服务、通知服务等,每个服务独立部署,便于水平扩展。比如订单簿像超市的货架,按价格排序,顾客(买卖方)快速找到匹配的商品(订单),收银员(匹配引擎)根据顾客需求(订单)结算(撮合)。
3) 【对比与适用场景】
| 架构模式 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 分布式缓存(Redis) | 基于内存的键值存储,支持高并发读写、有序集合等数据结构 | 低延迟、高吞吐、支持数据持久化(RDB/AOF) | 存储热点订单数据(订单簿)、缓存交易结果 | 需注意内存限制,千万级订单需分片存储,避免单实例内存溢出 |
| 关系型数据库(MySQL) | 事务型数据库,支持ACID | 事务强一致性、数据持久化 | 订单持久化存储、历史数据查询、交易记录持久化 | 高并发下写性能受限,需读写分离、连接池优化(如连接数、超时时间) |
4) 【示例】
订单提交请求示例(JSON):
{
"assetId": "A001",
"price": 10000,
"quantity": 100,
"direction": "buy",
"assetType": "不良资产-债权"
}
系统处理流程(伪代码,展示分片存储与消息队列):
5) 【面试口播版答案】
面试官您好,设计千万级不良资产交易撮合系统,核心是构建分布式、高并发、低延迟的架构。订单簿作为核心数据结构,采用Redis的有序集合存储,并按资产类型分片,避免单实例内存溢出。匹配引擎采用事件驱动,订单提交后先写入缓存,再通过Kafka异步通知匹配服务,减少延迟。为保证高可用,微服务拆分订单服务、撮合服务、通知服务,部署多实例;数据库读写分离,主库写订单,从库读历史数据。缓存分层(Redis+本地缓存)提升读取性能,消息队列解耦服务,同时配置分区和副本保障消息可靠性。通过这些设计,系统可支撑千万级并发下的低延迟和高可用。
6) 【追问清单】
7) 【常见坑/雷区】