此文意在解释一下协调组件,在看之前建议先看一下数据一致性。
我理解的就是我们在分布式应用开发中,为了协调分布式系统中各个机器协同运行而使用到的“公共组件”。比如Zookeeper、Redis等,都可以看作是“分布式协调组件”
分布式协调要考虑的东西有很多,主要是数据一致性,数据可用性,容错性。
举几个例子来说一下什么是协调:
1)比如说交警,红绿灯。这些就负责着协调交通,让道路不阻塞,但是这些都不会自己下去开这些车。
2)再比如在公司的项目经理,让一个任务来的时候,他需要分配任务到下边的开发人员,还要时刻监督着他们的代码开发速度,但是他不会去自己写这些代码。当他看到这些代码差不多了,就会去协调资源去调试,后续的一切都是他去协调的。还有当项目增多的时候,别的项目组会来借人,如果两个项目前后借一个人,如果项目经理有答应了就会出现问题。
3)在电脑的host文件中,有一个dns服务,里边的域名都对应一个IP地址,假设我在阿里云上买了个服务器并且买了个域名,这个是不是就会在阿里云的服务器上,全国的这些地址和域名的对应关系会存放在不同的位置上,假设某个服务器挂掉重新换了一台。那这个如果没有同步到我们这个区域的话,是不是就没办法再通过域名进行访问了。
协调组件可以通过算法,快速的讲各个地方的数据都同步,也就是数据一致。