• Mac 安装ZooKeeper+kafka基本使用


    为什么 Kafka 依赖 ZooKeeper?

    下面ZooKeeper基本介绍:

    1、基本功能

    ZooKeeper 为分布式系统提供了一种配置管理的服务:集中管理配置,即将全局配置信息保存在 ZooKeeper 服务中,方便进行修改和管理,省去了手动拷贝配置的过程,同时还保证了可靠和一致性。

    2、命名服务

      在分布式系统中,经常需要对应用或者服务进行统一命名,便于识别和区分开来,而 ZooKeeper 就提供了这种服务。

    3、分布式锁

      锁应该都不陌生,没有用过也听说过,在多个进程访问互斥资源的时候,需要加上一道锁。在分布式系统中,分布式程序分布在各个主机上的进程对互斥资源进行访问时也需要加锁。

      分布式锁应当具备以下条件:

    • 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行;
    • 高可用的获取锁与释放锁;
    • 高性能的获取锁与释放锁;
    • 具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误);
    • 具备锁失效机制,防止死锁;
    • 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。
    4、集群管理

      在分布式系统中,由于各种各样的原因,例如机器故障、网络故障等,导致集群中的节点增加或者减少,集群中有些机器需要感知到这种变化,然后根据这种变化做出对应的决策。

    我们需要知道以下几点:

    • Client 表示客户端,是请求发送方,数量不限;
    • Server 表示服务端,是请求接收方,数量不限;
    • Client 可以连接到每个 Server,每个 Server 中的数据都是一样的;
    • ZooKeeper 启动时,会从所有 Server 中选取一个作为 leader(Paxos 协议),每个 follower 都会和 leader 建立连接;
    • leader 负责进行数据更新等操作,并将数据同步到 follower 中,以此实现数据一致性。

    znode( ZooKeeper 的数据节点) 有四种类型 :

    1)PERSISTENT(持久节点

      默认的节点类型。持久化保存的节点,创建节点的客户端与 ZooKeeper 断开连接后,该节点依旧存在 。

    2)PERSISTENT_SEQUENTIAL(持久顺序节点)

      所谓顺序节点,就是在创建节点时,ZooKeeper 根据创建的时间顺序给该节点名称进行编号,适合用于分布式锁、分布式选举等场景。创建时添加 -s 参数即可。

    3)EPHEMERAL(临时节点)

      和持久节点相反,当创建节点的客户端与 ZooKeeper 断开连接后,临时节点会自动删除,适用于心跳、服务发现等场景。创建时添加参数-e 即可。

    4)EPHEMERAL_SEQUENTIAL(临时顺序节点)

      顾名思义,该类节点结合了临时节点和顺序节点的特征,在创建节点时,ZooKeeper 根据创建的时间顺序给该节点名称进行编号,当创建节点的客户端和 ZooKeeper 断开连接后,节点自动删除。创建时添加 -e -s 参数即可。

    ZooKeeper 实现分布式锁就是利用了临时顺序节点。

     首先在 ZooKeeper 中创建一个持久节点 ParentLock,每当有客户端想要获得锁时,就在 ParentLock 下创建一个临时顺序节点,如果该节点是第一个,则获得锁,如果不是,则找到排序比它靠前的一个节点并注册 Watcher,用于监听节点是否存在。若第一个节点运行完毕,其客户端会调用指令删除该节点,或者其客户端崩溃,第一个节点也会自动删除,而第二个节点监听到该节点被删除,再经过查询确认就能获得锁了。不难发现 ZooKeeper 实现的分布式锁相当于是一个等待锁的队列,能够提升抢锁的效率,但是因为需要创建和删除节点,导致性能较低。

    为什么 Kafka 依赖 ZooKeeper?_kafka依赖zookeeper_freshru的博客-CSDN博客

    zooKeeper

    1. #下载到目录usr/local下解压并且重命名
    2. wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
    3. tar zxvf apache-zookeeper-3.8.1-bin.tar.gz
    4. #创建data目录
    5. #修改.cfg文件
    6. cd zookeeper
    7. mkdir data
    8. cd conf
    9. mv mv zoo_sample.cfg zoo.cfg
    10. vim zoo.cfg
    11. 修改
    12. /data路径为
    13. /usr/local/zookeeper/data
    14. 根据需求添加端口号配置
    15. admin.serverPort=1234
    16. # bin目录下
    17. ./zkServer.sh start # 启动,这样启动是单机启动。
    18. ./zkServer.sh close # 关闭
    19. ./zkServer.sh status # 查看状态
    20. 设置开机自启
    21. cd /etc/rc.d/init.d
    22. vim zookeeper
    23. #!/bin/bash
    24. #chkconfig:2345 20 90
    25. #description:zookeeper
    26. #processname:zookeeper
    27. export JAVA_HOME=/usr/local/jdk/jdk8
    28. case $1 in
    29. start) su root /usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg;;
    30. stop) su root /usr/local/zookeeper/bin/zkServer.sh stop;;
    31. status) su root /usr/local/zookeeper/bin/zkServer.sh status;;
    32. restart) su /usr/local/zookeeper/bin/zkServer.sh restart;;
    33. *) echo "require start|stop|status|restart" ;;
    34. esac
    35. # 启动服务
    36. chkconfig --add zookeeper
    37. service zookeeper start
    38. # 进入zookeeper的目录
    39. //启动zookeeper服务端 -指定配置文件cong/zoo.cfg
    40. sudo ./bin/zkServer.sh --config conf start
    41. //启动zookeeper客户端
    42. sudo ./bin/zkCli.sh -server 127.0.0.1:2181
    43. //查看zookeeper启动状态
    44. ./bin/zkServer.sh status
    45. # 使用zookeeper命令,测试是否启动成功
    46. //创建节点key
    47. create /queue
    48. //创建临时顺序节点
    49. create -e -s /queue/host1
    50. //查看创建的节点信息
    51. ls -R /queue

    1、下载kafka安装包

    使用kafka集成zookeeper
    1. cd /usr/local/kafka/kafka_2.12-3.1.0/bin
    2. //启动zookeeper应用程序
    3. ./zookeeper-server-start.sh ../config/zookeeper.properties
    4. 如果启动报错:INFO ZooKeeper audit is disabled.
    5. 修改../config/zookeeper.properties
    6. 添加audit.enable=true
    7. 然后重新启动

    Apache Download Mirrors https://www.apache.org/dyn/closer.cgi?path=/kafka/3.1.0/kafka_2.12-3.1.0.tgz

    1. 将压缩文件移动到自己的software
    2. mv kafka_2.12-3.1.0.tgz /Users/xiansongliu/Downloads/kafka
    3. 解压压缩文件
    4. tar -zxvf kafka_2.12-3.1.0.tgz
    5. 将安装包移动到/usr/local
    6. sudo mv kafka_2.12-3.1.0 /usr/local/kafka
    7. 启动kafka
    8. ./bin/kafka-server-start.sh -daemon config/server.properties

    kafka消息交互

    1、创建一个topic

     ./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test 
    

    2、查看创建的topic

    ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

    消息通信

     ./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test 
    

    1、在kafka服务端发送消息 

    ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
    

    2、此时客户端接收到消息

     zookeeper安装教程_zookpeer安装_北漂人Java的博客-CSDN博客

    mac 安装kafka教程_mac安装kafka_北漂人Java的博客-CSDN博客

  • 相关阅读:
    JAVA毕业设计河南省农村多元化养老服务管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库
    复习单片机:流水灯(内含2种方法(左移操作符法+crol法)+设计思路+原始代码)
    【MySQL】数据库操作指南:数据类型篇
    戏说领域驱动设计(十九)——外验
    数据治理的 “独孤九剑”
    LINUX中命令
    【黑马程序员】mysql进阶再进阶篇笔记
    计网笔记-第五章:数据链路层
    Java基础深化和提高-------IO流
    设计模式-迭代器模式
  • 原文地址:https://blog.csdn.net/qq_15371293/article/details/132856256