【独家干货】线下沙龙嘉宾讨论技术点大集合-李艳鹏篇
来源:互联网 发布:红猫网络 编辑:程序博客网 时间:2024/06/08 04:08
1
一致性问题产生的背景
JEE架构
SSH架构
Web Service
ESB
微服务
微服务团队管理
2
生活中遇见的一致性问题
假如你想要享受生活的随意,只想买个两居,不想让房贷有太大压力,而你媳妇却想要买个三居,还得带花园的,那么你们就不一致了,不一致导致生活不愉快、不协调,严重情况下还会吵架,可见生活中的不一致问题影响很大。
服务化系统中遇到的不一致的问题
1、转账
2、下订单和扣库存
3、同步超时
4、异步回调超时
5、掉单
6、系统间状态不一致
7、缓存和数据库不一致
8、本地缓存节点间不一致
9、缓存数据结构不一致
3
酸碱平衡原理
酸碱平衡 – 酸(ACID)
A: Atomicity,原子性
C: Consistency,一致性
I: Isolation,隔离性
D: Durability,持久性
酸碱平衡 – 帽子(CAP)
C:Consistency,一致性, 数据一致更新,所有数据变动都是同步的
A:Availability,可用性, 好的响应性能,完全的可用性指的是在任何故障模型下,服务都会在有限的时间处理响应
P:Partition tolerance,分区容错性,可靠性
酸碱平衡 – 碱(BASE)
BA:Basically Available,基本可用
S:Soft State,软状态,状态可以有一段时间不同步
E:Eventually Consistent,最终一致,最终数据是一致的就可以了,而不是时时保持强一致
4
分布式一致性协议
两阶段
三阶段
TCC
5
最终一致性
查询模式
补偿模式
异步确保模式
定期校对模式
定期校对模式
可靠消息模式
缓存一致性模式
1、缓存是用来加速的,牺牲了一致性,获得高性能,只适合特殊场景;
2、保持数据库和缓存的强一致性是个伪命题 ;
3、如果性能要求不是非常的高,尽量使用分布式缓存,而不要使用本地缓存
4、种缓存的时候一定种完全,如果缓存数据的一部分有效,一部分无效,宁可放弃种缓存,也不要把部分数据种入缓存;
5、通常情况下读的顺序要先缓存,后数据库,写的顺序要先数据库,后缓存。
6
微服务交互模式
同步调用
受理模式
消息模式
同步与异步的抉择
1、尽量使用异步来替换同步操作;
2、能用同步解决的问题,不要引入异步化。
同步两状态接口超时
同步三状态接口超时
异步接口超时
异步内部超时
异步回调超时
消息队列发送超时
消息队列接收超时
超时补偿原则
生活案例:
模式:
1、服务1调用服务2,如果服务2响应服务1,并且告诉服务1消息我接收了,那么服务1就的任务就结束了,如果服务2处理失败,服务2应该负责重试或者补偿。在这种情况下,服务2通常先持久消息后再告诉服务1接收成功,随后服务2才开始处理持久的消息,避免服务进程被杀掉丢失消息的情况。
2、服务1调用服务2,如果服务2没有给出明确的接收响应,那么服务1应该持续尝试重试,直到服务2明确表达已经接收消息。这种情况下,容易出现消息重复,因此在服务2中通常要保证滤重或者幂等性。
7
其他问题
迁移开关的设计
1、不要用统一配置开关 ;
2、不要用节点内独立的开关 ;
3、迁移开关必须使用订单开关 ;
4、开关要有权限控制 ;
5、开关要能开能关。
Java我最强,关心Java人成长的技术社区,加入精品技术群请公众号后台留言“加群”。投稿合作请邮件至:javawozuiqiang@qq.com,注明“Java我最强投稿”。
Java我最强
关心Java人成长的技术社区
快速关注
1
一致性问题产生的背景
2
生活中遇见的一致性问题
2
生活中遇见的一致性问题
- 【独家干货】线下沙龙嘉宾讨论技术点大集合-李艳鹏篇
- 走近腾讯技术大牛——2012年腾讯线下讨论PPT大盘点
- 百度技术沙龙 - 大数据场景下主题检索应用
- 【iKcamp线下】微信小程序技术沙龙
- 【英语单词】干货大集合!!
- 小沙龙之大咖小聚——企业服务生态联盟线下沙龙
- 小沙龙之大咖小聚——企业服务生态联盟线下沙龙
- CocoaChina线下沙龙上海站嘉宾分享:Cocos2d-js作者林顺《Cocos2d-x工具链整合和工作流介绍》
- 异步群英会-线下技术沙龙-参与送书!
- DriodDeveloper 技术干货大汇总
- 【线下沙龙免费报名】像阿里巴巴一样工作_听干货分享欣赏阿里西溪园区风景
- 【线下沙龙免费报名】像阿里巴巴一样工作_听干货分享欣赏阿里西溪园区风景
- 技术沙龙
- 技术沙龙
- ArcGIS知乎干货教程大集合
- UGUI 技术点笔记 (干货走起)
- UGUI 技术点笔记 (干货走起)
- [技术沙龙] 放眼大数据,透视O2O——开发者沙龙深圳站报名啦![深圳]
- elasticsearch学习入门
- 使用 EclEmma 进行覆盖测试
- Java-实现万年历
- vim颜色表
- spring几种事务配置
- 【独家干货】线下沙龙嘉宾讨论技术点大集合-李艳鹏篇
- MySql常用查询语句
- Combination Sum系列(I,II,III) dfs做的
- MySQL -DCL 对用户权限的操作
- ZCMU—1570
- Influxdb语句中有特殊符号(),‘’-''
- 两个队列实现一个栈
- 蓝牙协议分析(6)_BLE地址类型(蜗窝科技)
- 问题分享