flink hadoop 从0~1分布式计算与大数据项目实战zookeeper内部原理流程简介以及java curator client操作集群注册,读取

Posted 峡谷电光马仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flink hadoop 从0~1分布式计算与大数据项目实战zookeeper内部原理流程简介以及java curator client操作集群注册,读取相关的知识,希望对你有一定的参考价值。

zookeeper内部原理流程

用processon画的有点大,看不清的可以放大查看

流程图详解

1.zookeeper 集群(至少个节点)启动后,会自动选举出一个leader,其他节点为follower 跟随节点
2.client 连接给定的单地址或者集群,连接集群时,会挑选一个可用的节点进行连接,整个节点可能时leader,也可能时follower
3.如果是读请求,则直接从当前连接的节点获取指定的service实例
4.如果时写请求
4.1.如果当前连接的是leader,则leader会将信息同步到所有其他节点并且得到ack反馈后commit消息,返回给client 成功
4.2.如果当前连接的是follower,则会先把请求转发给leader,然后会继续4.1的流程

java curator 操作 zookeeper 集群

java curator maven pom

<dependency>
 <groupId>org.apache.curator</groupId>
 <artifactId>curator-x-discovery-server</artifactId>
 <version>5.2.1</version>
</dependency>

java curator client操作集群注册

@Component
public class RegisterZookeeper implements ApplicationRunner 

    @Value("$zookeeper.address")
    private String zkAddress;

    @Override
    public void run(ApplicationArguments args) throws Exception 
        CuratorFramework client = CuratorFrameworkFactory.newClient(zkAddress, new RetryOneTime(1000));
        client.start();
        client.blockUntilConnected();
        ServiceInstance<Object> instance = ServiceInstance.builder().name("test1").address("10.188.17.28").port(7777).build();
        ServiceDiscovery<Object> serviceDiscovery = ServiceDiscoveryBuilder.builder(Object.class).client(client)
                .basePath("/zookeeper-test").build();
        serviceDiscovery.registerService(instance);
        serviceDiscovery.start();
        System.out.println("service register ok");


    
zkAddress 是配置文件里的zookeeper集群
zookeeper:
  address: hadoop1:2181,hadoop2:2181,hadoop3:2181

集群内查看注册信息

随便找一个节点进入后zookeeper 目录后 sh bin/zkCli.sh -server  hadoop1:2181 

然后ls -/ 查看全部注册信息

刚刚代码注册的实例信息

public class ZookeeperTester 

    private static  ZooKeeper Zk;
    public static void main(String[] args) throws Exception 
        CuratorFramework client = CuratorFrameworkFactory.newClient("hadoop1:2181,hadoop1:2181,hadoop1:2181", new RetryOneTime(1000));
        client.start();
        client.blockUntilConnected();

        ServiceDiscovery<Object> serviceDiscovery = ServiceDiscoveryBuilder.builder(Object.class).client(client)
                .basePath("/zookeeper-test").build();
        Collection<ServiceInstance<Object>> list = serviceDiscovery.queryForInstances("test1");

        list.forEach((instance)->
            String servicePath = instance.getAddress()+":"+instance.getPort();

            System.out.println(servicePath);
        );

        Thread.sleep(10000);

    

 代码运行结果

 获取到了刚刚注册的实例test1

以上是关于flink hadoop 从0~1分布式计算与大数据项目实战zookeeper内部原理流程简介以及java curator client操作集群注册,读取的主要内容,如果未能解决你的问题,请参考以下文章

大数据云计算高级实战Hadoop,Flink,Spark,Kafka,Storm,Docker高级技术大数据和Hadoop技能

伍翀 :大数据实时计算Flink SQL解密

Flink1.8 集群搭建完全指南(1):Hadoop伪分布式

flink常见的核心概念

flink常见的核心概念

Hadoop、Spark、Flink概要