• Kafka环境搭建


    Kafka官网:http://kafka.apache.org/

    Producer:消息生产者,负责向Topic推送消息。broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment文件中。

    Consumer:消息消费者,可以从一个或者多个Topic节点上获取消息。

    Consumer Group:为一个或者多个Consumer进行分组。

    Topic:消息队列,每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。

    Partition:一个Topic被拆分成一个或多个Partition(分区)。每个partition中的数据使用多个segment文件存储。partition中的数据是有序的,不同partition间的数据丢失了数据的顺序。如果topic有多个partition,消费数据时就不能保证数据的顺序。在需要严格保证消息的消费顺序的场景下,需要将partition数目设为1。

    Broker:kafka集群包括一个或多个服务器,这些服务器节点被称作broker。

    Leader:每个partition有多个副本,其中有且仅有一个作为Leader,Leader是当前负责数据的读写的partition。

    Follower:Follower跟随一个Leader,Leader负责读写数据,并会通过广播同步到所有的Follower节点上。如果Leader宕机,那么将会从Follower中选举出一个新的Leader。当Follower挂掉,那么Leader则会将该Follower从ISR列表中删除并重新创建一个Follower。

     

    Kafka注册中心依赖于Zookeeper,基于scala,scala是基于JAVA环境的。所以还需要安装JDK,kafka-2.3.1自带了单节点的zookeeper,在入门学习阶段,可以用来玩玩。因为在实际环境中,zookeeper是一个集群。

    下载Zookeeper之后,新建data和log文件夹:

    bin目录存放一些常用命令,conf存放着zookeeper的配置文件,打开conf目录,赋值一份zoo_sample.cfg文件,重命名为zoo.cfg。修改zoo.cfg配置:

    修改dataDir和dataLogDir配置分别是刚刚创键的data和log文件夹路径,clientPort是zookeeper服务的端口

    # data和log目录配置
    dataDir=D:\Users\dagger\IdeaProjects\software\zookeeper\data
    dataLogDir=D:\Users\dagger\IdeaProjects\software\zookeeper\log
    
    # zookeeper默认端口
    clientPort=2181
    
    # zookeeper admin默认端口,可通过localhost:8080/commands访问
    admin.serverPort=8888

    在bin目录下运行zkServer.cmd启动zookeeper服务,如果是Linux,请运行zkServer.sh start。进入kafka目录,修改config/server.properties配置

    # 每个broker都应该不一样
    broker.id=0
    # 监听本机9092端口
    listeners=PLAINTEXT://:9092
    # log目录
    log.dirs=D:/Users/dagger/IdeaProjects/software/kafka/logs
    # zookeeper连接地址
    zookeeper.connect=localhost:

    linux直接运行bin目录下的sh脚本,window环境需要进入window目录中运行bat脚本。启动kafka-server ./kafka-server-start.bat ../../config/server.properties 

    创建Topic,  .kafka-topics.bat --bootstrap-server localhost:9092 --create --replication-factor 1 --partitions 1 --topic test 

    --bootstrap-server:kafka-server服务地址

    --create:创建命令

    --replication-factor:副本数,保证消息的高可用

    --partitions:Topic的分区数

    --topic:指定主题

    查看Topic详细信息, .kafka-topics.bat --bootstrap-server localhost:9092 --describe test 

    Topic:test      PartitionCount:1        ReplicationFactor:1     Configs:segment.bytes=1073741824
            Topic: test     Partition: 0    Leader: 0       Replicas: 0     Isr: 0

    使用Producer向Topic中推送消息, ./kafka-console-producer.bat --broker-list localhost:9092 --topic test 

    --broker-list:节点集合,多个节点用逗号(,)分隔

    使用Consumer从Topic中消费消息, .kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning 

    --from-beginning:从Topic第0个位置开始拉取消息,忽略游标,拉取的是完整数据。

    如果出现consumer接收不到producer发送的数据的问题,可能是server.properties配置有个配置没有打开。

    listeners=PLAINTEXT://:9092
  • 相关阅读:
    如何使Linux系统上的程序开机后自动运行 (转)
    Makefile详解 (转--不错就是有点长)
    ./configure && make && make install详解 (转)
    从程序员角度看ELF | Linux-Programming (转)
    动态符号链接的细节 (转)
    GCC编译动态和静态链接库例子
    gcc编译静态库和动态库
    udhcp源码详解(五) 之DHCP包--options字段
    一个炒鸡好用的pdf阅读器
    Linux 创建用户 用户组 用户权限
  • 原文地址:https://www.cnblogs.com/dagger9527/p/11846369.html
Copyright © 2020-2023  润新知