![](https://img.haomeiwen.com/i11168436/3fea081b21dd4f68.png)
最近看了很多技术组件、发现其实很多技术都有共同点;而这些共同点都围绕着异步、同步。
看到同步机制这个关键词、我想到的是 性能差;可靠性高。
而异步机制这个关键词、是性能好、可靠性差。
我觉得前辈们一直可能在思考一个问题; 就是一项技术如何达到同步机制的可靠性、又能够达到异步的性能。
过半写入机制
挣扎中就出现了过半写入机制(paxos核心思想) Zookeeper的过半机制很相似; 比如ABC三个节点;只要A/B两个同步完成返回ack就对外提供服务。而C节点此时还没同步完成;但它可能在异步同步数据、也有可能已经挂了。从某种角度来看这是一种策略;从整体对外提供服务来说;保证了对外一致性;已经是提高了性能;虽然内部可能不一致。
预防策略(瞎写的)
还有Kafka的副本同步机制;主从同步策略;也是强一致性;他是避免同步可能存在的问题;而影响对外可用。他有个ISR集合的概念;挺有意思的;比如说我有ABC 3个节点;A是Master 当通过Master写一条数据的时候;Master需要同步给BC两个从节点;每个节点同步完成返回ACK确认;表示同步完成。
假设说C节点同步很慢(这个同步时间可配置);或者挂了网络不通;机制会把C节点踢出ISR集合;就能够有效保证ISR集合的百分百健康。同时也会异步去探活异常C;一旦他网络恢复了;就把C加入集合;数据对其后 并对Master ack确认;此时Master 才认为C是健康的、才会对他进行数据同步。
这两种策略其实都是在满足同步的情况下去增强;那假设说没有过半写入、没有ACK确认;只要有一个节点写完立刻返回;节点之间通过异步同步。
这样确实可以大大提高性能;但降低了可靠性、可能存在数据不一致问题。
就看业务容忍度;但市面上尤其是互联网技术栈;基本都是优先考虑性能、其实很多组件都是能够满足、异步、或者同步策略;提供给开发人员结合场景选择;比如 Redis AOF、RockerMQ、Kafka刷盘以及提供者写消息等等;
哎;有点零零散散;但如果用CAP理论其实可以在分布式环境贯穿所有技术栈;应该说借助CAP理论可以可以找到他们之间的共性;更好的去理解他。而不是被天花乱坠的技术栈表面所迷惑。
![](https://img.haomeiwen.com/i11168436/9789d45b6d03ab83.png)
https://www.processon.com/view/link/61a23cf01e0853431b172d90
【技术的本质】有一句话叫:无论如何,新技术一定是产生于已有的技术组合。
也就是说任何技术都是从老技术演变而来的;而我们首先学习他们的背后逻辑(底层逻辑) 其实更高效。
因为很多时候技术底层都是相似相通的、你会很快理解上手;其实并不是你学的快,而是此时此刻你只是在复习;以及在不同场景扩展技术边界而已。
网友评论