引言
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。
分布式一致性基础理论
大型网站一致性理的基础理论-CAP/BASE
我们来了解一下分布式系统的基础理论-CAP。
CAP理论:
一致性(C):所有的节点在同一时间读到同样的数据。当数据写入成功后,所有的节点会同事看到这个新的数据。
可用性(A):保证无论是成功还是失败,每个请求都能够收到一个反馈。这就是数据的可用性,重点是系统一定要有响应。
分区容忍性(P):即便系统中有部分问题或者消息的丢失,但是系统仍能够继续运行。
但是,分布式系统不能同时满足上面三项,一般来说,很多分布式系统在设计时的选择,是放弃一定的一致性,选择AP。
再来看看BASE:
基本可用:允许分区失败
软状态:接受一段时间的状态不同步
最终一致:保证最终的数据的状态是一致的
所以当我们选择了AP,那么对于C,采用的策略就是保证最终是一致的。
强一致:所有的节点在同一时间读到同样的数据。
最终一致:牺牲一部分的一致性,可以接受数据存在不一致的问题,但是通过重试或其他手段,保证数据最终会达到一致状态
Paxos协议
Paxos协议,是一个比两阶段提交要轻量的保证一致性的协议。
分布式系统中,要面临和单机处理完全不一样的问题,例如网络问题、进程or机器挂掉、进程超时等。这就会造成消息重复,一段时间内不可达等现象。Paxos协议是帮助我们解决分布式系统中一致性大问题的一个方案。
使用Paxos协议有一个前提,那就是不存在拜占庭将军问题。简单来说,就是要有一个可信的通信环境,所有信息都是准确的没有被篡改。
Paxos协议的决议过程比较复杂,这里不赘述,有兴趣可以自行了解。总结Paxos的核心原则就是少数服从多数。
但是Paxos协议存在一个问题,如果系统中同事有人提出议案,可能会出现碰撞导致失败。然后大家都是重试,重试仍然可能导致失败。这就会导致活锁。
解决的办法是在整个集群中设一个Leader,所有的议案都由他来提,这样就可以避免冲突。而引发的新问题就是如果Leader出问题了该如何处理,那就需要再选一个Leader出来。
总结
以 上就是我对Java大型互联网架构-你必须掌握的大型网站分布式一致性基础理论问题 及其优化总结,分享给大家,希望大家知道什么是Java大型互联网架构-你必须掌握的大型网站分布式一致性基础理论问题及其优化。觉得收获的话可以点个关注收藏转发一波喔,谢谢大佬们支持!
1、多写多敲代码,好的代码与扎实的基础知识一定是实践出来的
2、可以去百度搜索腾讯课堂图灵学院的视频来学习一下java架构实战案例,还挺不错的。
最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步。
3丶想了解学习以上课程内容可加群:569068099验证码:(06 必过)