
1) 【一句话结论】:铁路调度指挥系统在分布式数据库下,需通过分层一致性策略(核心数据强一致性+非核心数据最终一致性)+分布式事务容错机制(如最终一致性+事务补偿)+多级加密(传输/存储)+动态访问控制(RBAC+ABAC),确保关键调度数据一致且安全,同时兼顾系统性能与可用性。
2) 【原理/概念讲解】:老师口吻,解释关键概念。
3) 【对比与适用场景】:
| 对比维度 | 强一致性(2PC) | 最终一致性(Cassandra) |
|---|---|---|
| 定义 | 事务提交后所有副本立即同步,全局一致 | 节点异步复制,最终所有副本一致,期间可能不一致 |
| 特性 | 事务提交后数据立即可用,但网络故障时阻塞 | 高可用,低延迟,适合非关键数据 |
| 使用场景 | 核心调度数据(列车位置、指令)、账务系统 | 非核心数据(日志、用户行为记录) |
| 注意点 | 网络延迟导致性能下降,故障时阻塞 | 需设计冲突解决(如时间戳、向量时钟) |
| 对比维度 | RBAC(基于角色) | ABAC(基于属性) |
|---|---|---|
| 定义 | 用户分配角色,角色拥有权限 | 权限基于用户属性(角色、部门、时间)、资源属性、环境上下文 |
| 特性 | 简单,权限集中管理 | 动态,灵活,适应复杂场景 |
| 使用场景 | 铁路调度员按岗位(调度长、值班主任)分配权限 | 动态调整权限(如夜间权限降低、设备维护临时授权) |
| 注意点 | 角色权限僵化,难以适应变化 | 需定义复杂属性规则,可能影响性能 |
4) 【示例】:
def dispatch_order(order_id, train_id, position):
try:
with distributed_transaction():
update_train_position(train_id, position) # 强一致性更新位置
insert_order(order_id, train_id, order) # 写入调度指令
commit()
except NetworkPartitionError:
compensate_order(order_id, train_id) # 补偿事务,恢复一致性
raise
except Exception as e:
rollback()
raise e
5) 【面试口播版答案】:
“铁路调度指挥系统用分布式数据库时,数据一致性和安全需要分层设计。首先,数据一致性方面,核心调度数据(如列车位置、指令)采用强一致性(两阶段提交),保证实时性;非核心数据用最终一致性,提升性能。其次,容错方面,网络分区时用事务补偿机制,避免阻塞。安全方面,传输用TLS加密,存储用AES加密,访问控制用RBAC(按岗位分配权限)结合ABAC(动态调整,如夜间权限降级),并记录审计日志。这样既能保证数据一致,又能防止泄露,同时兼顾系统可用性。”
6) 【追问清单】:
7) 【常见坑/雷区】: