EDA事件驱动架构:Event Driven Architecture
消息组件:不仅仅是削峰填谷 而且可以做事件驱动架构
EDA驱动的特定:异步处理、跨平台/语言通信、应用解耦、可靠投递、最终一致性
BASE理论:
基本可用 Basically Available
软状态 Soft State
最终一致性 Eventually Consisitent:缓存一致性 数据一致性
幂等性理论:
本来单机的操作结果双击了,导致调用了两次请求,数据一模一样。或者重试机制、补偿机制等也需要保证幂等
如何保障幂等性:
新增:比如账号注册:业务唯一约束
创建订单,只有创建的时候才生成订单号,每一次都是不用的订单号,唯一约束无法解决问题,这时候分布式锁+隐藏表单
更新:个人信息修改 乐观锁控制(version)
并发修改:分布式锁、DB锁(select * fron table for update)
删除:问题不大 业务唯一约束
查询:不需要保证幂等性