赞
踩
目录
通过模拟企业的环境,实现一个双VIP高可用的Web服务器集群,使用Nginx做负载均衡,用中间件kafka收集用户访问的Nginx Web集群日志,用淘宝接口清洗数据,得出IP所属的 isp. provinEe和bandwidth并入库。
entos8台,Nginx(1. 14. 1), keepalived(2. 1.5),filebeat,kafka(2.12),zookeeper,mysql等
前面写的博客讲解了原理
kafka学习(2)数据的可靠性和一致性_meikokoo的博客-CSDN博客
zookeeper:分布式应用程序协调管理服务,用于配置管理、域名管理、分布式数据存储、集群管理;在kafka3.0版本已经脱离zookeeper,kafka自己实现zookeeper功能。
zookeeper中数据的同步只需要过半节点同步完成,就表示数据已经commit。需要注意的是zookeeper不是强一致性,它属于最终一致性,由于每个节点的数据量默认不超过1M,所以最终同步性不影响使用。
在kafka中生产者和消费者只和leader打交道,但是生产者和任何一台broker连接都可以,因为broker会返回当前请求副本leader的信息,最后生产者再跟leader打交道。而在zookeeper中也差不多,客户端连接任意一台zk都可以进行操作,但是数据新增修改等事务的操作必须在leader上运行,客户端如果连接到follower上进行事务操作,follower会返回给leader的ip,最终客户端还是会在leader上操作。
zookeeper中的follower用于查询和选举
zookeeper中选举采用一致性算法zab,遵循少数服从多数的原则,随机投票票数过半的当选leader,如果出现平票的情况则重新投票,所以通常将节点数设置为奇数。
zookeeper集群中,节点间的网络通信不良时,容易出现脑裂的现象。集群中的节点监听不到leader节点的心跳,就会认为leader节点出现异常,此时一个大集群将分成小集群,在这些小集群会各自选举出自己的leader,一旦网络通信恢复,原有的集群就会出现多个leader造成脑裂。
所以可以通过设置节点的数量,比如节点数量设置为5,当分裂成小集群时候分为2、3,节点数为2的那个集群很再难选出leader。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。