基于Zookeeper的Ignite节点发现与管理实战指南
python爬虫,集群是如何实现节点的发现和管理
Ignite集群管理-基于Zookeeper的节点发现
Ignite支持基于组播、静态IP、Zookeeper、JDBC等的节点发现。
本文主要介绍基于Zookeeper的节点发现。
环境准备,两台笔记本电脑A、B,A笔记本电脑使用VMware虚拟机安装Ubuntu系统C。
1在C中安装Zookeeper
由于主要目的是测试Ignite,所以这里我们只安装一个zookeeper节点。
Zookeeper目录中的zkServer.shstart命令接下来,zookeeper启动。
检查Ubuntu系统C的IP地址为192.168.1.104,默认的zookeeper端口为12181。
注意:网络适配器这里的VMware虚拟机必须是桥接模式,否则机器A无法访问虚拟机。
2系统A正在运行Ignite节点1;
代码中粗体部分是Ignite注册代码,非常简单。
3。
系统B正在运行Ignite节点2;
packagecom.coshaho.learn.ignite.cluster;importorg.apache.ignite.Ignite;importorg.apache.ignite.IgniteCache;importorg.apache.ignite.Ignition;导入org.apache.ignite.cache。
CacheMode;importorg.apache.ignite.configuration.CacheConfiguration;importorg.apache.ignite.configuration.IgniteConfiguration;importorg.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;importorg.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder;publicclassIgniteCluster02{publicstaticvoidmain(String[]args){TcpDiscoverySpispi=newTcpDiscoverySpi();TcpDiscoveryZookeeperIpFinderipFinder=newTcpDiscoveryZookeeperIpFinder(//指定ZooKeeper连接string.ipFinder.setZkConnectionString("192.168.1.104:12181");spi.setIpFinder(ipFinder);newIgniteConfiguration故障发现SPI();cfg.setDiscoverySpi(spi);//StartIgnitenode.Igniteignite=Ignition.start(cfg);System.out.println("IgniteCluster2startOK.");CacheConfiguration
可以看到,Ignite节点2可以访问Ignite节点1的缓存数据。
zookeeper在哪些系统中使用,又是怎么用的?
Zookeeper作为分布式应用协调系统,广泛应用于多个系统,主要用于统一预约服务、状态同步服务、集群管理、模式管理、位置支持等关键服务。kazoo作为一个Python库,封装了zookeeper操作并提供了更高层的功能。
Zookeeper的主要操作包括创建、读取、更新和删除节点。
节点主要有四种类型:永久、自动顺序编号、临时和临时自动编号。
当一个大节点发生变化时,您可以关注一个节点或其所有子节点。
统一服务名称:在分布式系统中,使用zookeeper创建自动编号的节点,借助唯一ID来解决分配问题。
配置管理:多个节点共享配置信息。
当配置更新时,zookeeper通知节点重新加载配置。
集群管理:Zookeeper负责选择主机、监控节点变化、监督集群运行的稳定性。
Kazoo提供了简单的集群管理工具,例如封装。
资源位置:必须通过Zookeeper节点将资源状态变化通知服务,以便节点的操作能够及时响应。
共享块:实现方式与集群管理类似,创建临时节点并监控其状态。
kazoo提供锁管理封装,简化锁操作。
队列管理:Zookeeper是通过节点操作来管理队列功能的工具。
在使用zookeeper和kazoo时,需要注意观察者的正确使用机制,以避免出现问题和损失。
dataWatchkazoo简化了手表的使用,但仍需要根据具体情况进行平滑适配。
我个人的建议是,在某些情况下,使用防护机制可以让代码更加清晰,减少错误。