分布式系统最终一致性的一些思考

目前互联网的架构大部分都期望最终的系统scalable,所以一般都设计成分布式系统,所以一个最重要的问题就是数据一致性,分布在各个角落的数据,保证一致性,才能提供一个统一的可用业务。

几个基本概念
- ACID
- CAP
- BASE

可用性没有简单的统一解决方案,没有什么神奇的中间件或者第三方可以满足任何业务场景,但有几个基本的思路

异步确认:通过目标的异步确认为事件的结果确认,在没有异步确认前,进行多次尝试,或者交由消息队列

消息队列:事件发出后,交由消息队列,由队列自身完成投递和错误补偿机制,确保事务的到达。但最终还是以目标的确认为最终事件的结果

接口的幂等性:因为存在重试和错误补偿机制,不可避免的在系统中存在重复收到消息的场景,接口的幂等性能提高数据的一致性

锁:本地锁和分布式锁,对关键路径进行加锁,保证数据的一致性

业务模拟事务:根据实际的业务分割,对最小业务完整数据流,做业务层次的事务管理, 进行历史纪录和回滚。

数据库事务:这个事最基本的要求

通过分析具体的业务,在不同的业务节点使用以上不同的策略,最终实现整体的一致性,提高系统可用性。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注