朋友,你是不是一样呢? 废话少说:
文章目录
什么是分布式系统
最简单的事例,就比如我们的商品管理系统。之前的系统是包含了所有的功能,比如用户注册登录、管理员功能、物品管理等等。这叫做集中式系统。也就是一个人干好几件事。
后来随着功能的增多,用户量也越来越大。集中式系统维护太麻烦,拓展性也不好。于是就考虑着把这些功能进行划分。通俗的理解就是原本需要一个人干的事,现在分给n个人干,各自干各自的,最终取得和一个人干的效果一样。
正规一点的定义是:一个业务拆分多个子业务,部署在不同的服务器上。 然后通过一定的通信协议,能够让这些子业务之间相互通信。
既然分给了n个人,那就涉及到这些人的沟通交流协作问题。想要去解决这些问题,就需要先了解分布式系统中的CAP理论,给后面Zookeeper或者部分的中间件,埋下一个小小的伏笔。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。壮士,千万不要被这个看起来高大上的概念迷惑住。
举个小例
首先我们看一张图。
网络中有两个节点N1和N2,之间的网络是可以连通的,N1中有个应用程序A,和一个数据库V,N2也有个应用程序B2和一个数据库V。现在,A和B是分布式系统的两个部分,V是分布式系统的两个子数据库:
那么问题来了。突然有两个用户小明和小华分别要同时访问了N1和N2。理想的操作是下面这样:
(1)小明访问N1节点,小华访问N2节点。同时访问的;
(2)小明把N1节点的数据V0变成了V1;
(2)N1节点一看自己的数据有变化,马上执行M操作,告诉了N2;
(4)小华读取到的就是最新的数据。也是正确的数据。
上面是种最理想的情景。它满足了CAP理论的三个特性。但对于一个分布式系统来说,是不可能满足以下的三点:
- Consisteny(一致性