所谓集群,就是将部署在多个服务器上的相同应用集合在一起做同一件事情。因此,集群首先要解决的问题就是如何将多个服务器主机上的应用进行统一的管理,达到从外面看来就像是只有一个服务器主机在跑应用一样,这就要求集群系统必须具备全局信息的管理能力。比如应用程序的运行一般总是依赖一些配置信息,不可能让用户对集群里的每台主机去做单独的配置,而是由集群系统自动实现配置信息的全局同步,直接点说就是需要一个配置中心进行统一管理。
配置中心的主要作用是维护一致性信息,实现集群各主机的协调管理,因此其不仅仅只是用来存储共享配置,还可以用来存储其他各种公共的信息,比如服务信息,因此就可以实现服务注册和服务发现;比如锁信息,从而提供分布式锁机制等等。当前主流配置中心一般都包括配置管理、集群成员管理、命名服务、任务分配、心跳检测、分布式锁等功能。
当前社区可选的优秀开源有Zookeeper和Etcd,下面简单看一下。
1,Zookeeper
官网: http://zookeeper.apache.org/
Zookeeper起源于Hadoop,后来进化为Apache的顶级项目。现在已经被广泛使用在Apache的项目中,例如Hadoop,Kafka,Solr等等。
Zookeeper是Java写的,因此依赖Java环境,客户端官方语音支持C、Java,但GitHub上可以搜索到其他语言的客户端实现。
2,Etcd
官网: https://etcd.io/
Etcd是用go语言开发的,Etcd官方提供有Go语言和Java语言的SDK。
Etcd出现的时间并不长,但前景貌似非常好,在Kubernetes的kube master里就使用etcd作为分布式存储获取分布式锁。
Etcd使用RAFT算法实现一致性,比Zookeeper的ZAB算法更简单,Etcd也没有使用Zookeeper的树形数据结构,而是提供了一个分布式的key-value存储数据。
ps:虽然都是用key-value存储数据,但Redis更关注数据的存储管理,而Etcd更关注事务管理,关注高可用和强一致性。
参考:
1,https://medium.com/@Imesha94/apache-curator-vs-etcd3-9c1362600b26
转载请保留地址: http://www.lenky.info/archives/2020/03/2737 或 http://lenky.info/?p=2737
备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来 信 讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从 CC创作共享协议 ,而一些私人性质较强的心情随笔,建议不要转载。
法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以 Email 或书面等方式告知,本站将及时删除相关内容或链接。