
1) 【一句话结论】针对千万级不良资产管理系统,采用微服务+分布式数据库(分库分表+读写分离)+Redis+Kafka的架构,通过分库分表处理热点数据、缓存+异步解耦,结合Saga模式保证数据一致性,实现高并发查询与处置流程的实时管理,兼顾系统可扩展性与数据一致性。
2) 【原理/概念讲解】老师会解释系统核心设计:
compensation_status)保证幂等性。3) 【对比与适用场景】用表格对比数据库选型:
| 方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| MySQL(分库分表) | 结构化数据存储,支持ACID事务 | 事务强一致,支持分库分表,高并发下读写分离 | 核心资产信息(资产ID、状态、债权金额等)、用户数据 | 需合理设计分库分表规则(如时间+资产类型),避免热点表导致性能瓶颈 |
| MongoDB | 非结构化/半结构化数据存储 | 高扩展性,灵活的文档模型,读写快,支持聚合查询 | 处置记录(如拍卖记录、法律文书)、日志、非结构化资产描述 | 不支持复杂事务,数据一致性弱,适合非核心数据 |
| Redis | 内存数据库,支持数据结构 | 高速读写(毫秒级),支持缓存、会话、消息队列 | 热点数据缓存(如资产列表、用户信息)、分布式锁、消息队列持久化 | 需设置过期策略,避免缓存雪崩;持久化(RDB/AOF)保证数据不丢失 |
| Kafka | 分布式消息队列 | 高吞吐、持久化、顺序性 | 异步任务解耦(如处置流程通知)、日志收集、事件驱动 | 需配置持久化、分区、副本,避免消息丢失 |
4) 【示例】
GET /api/assets?status=1&pageSize=20&pageNo=1
Host: asset-management.com
Authorization: Bearer <token>
系统处理:1. 检查Redis缓存(key为assets:status:1:page1),命中则直接返回缓存数据;2. 未命中,查询MySQL分库分表后的资产表(如2020库的抵押物表),按分页条件查询;3. 结果存入Redis缓存(TTL设为5分钟),返回数据给用户。asset_id=A001的status为“处置中”;topic=asset_status_change, payload={"asset_id":"A001","new_status":"处置中","timestamp":"2023-10-27T10:30:00Z"};approval_record;status改回“待处置”)并删除审批记录。5) 【面试口播版答案】面试官您好,针对千万级不良资产管理系统,我设计思路是采用微服务架构,拆分为资产查询、处置流程等独立服务。数据库层面,核心资产表按时间分库(如按年份,如2020库),按业务分表(如按资产类型,抵押物表),避免单表过大。用Redis缓存热点数据,减少数据库压力。处置流程的异步任务通过Kafka消息队列解耦,提高响应速度。数据一致性方面,强需求用Saga模式(本地事务+补偿事务),非强需求用最终一致性。这样既能支持高并发查询,又能处理复杂处置流程,兼顾可扩展性与数据一致性。
6) 【追问清单】
compensation_status)判断是否已执行,若已执行则跳过;同时,补偿事务ID唯一,避免重复执行。7) 【常见坑/雷区】