• kafka的安装和使用


     简单说kafka是一个高吞吐的分部式消息系统,并且提供了持久化。

     kafka的架构

    • producer:消息生存者
    • consumer:消息消费者
    • broker:kafka集群的server,负责处理消息读、写请求,存储消息
    • topic:消息队列/分类
    • Queue里面有生产者消费者模型
    • broker就是代理,在kafka cluster这一层这里,其实里面是有很多个broker
    • topic就相当于queue
    • 图里没有画其实还有zookeeper,这个架构里面有些元信息是存在zookeeper上面的,整个集群的管理也和zookeeper有很大的关系

    kafka的消息存储和生产消费模型

    • 一个topic分成多个partition
    • 每个partition内部消息强有序,其中的每个消息都有一个序号叫offset
    • 一个partition只对应一个broker,一个broker可以管多个partition
    • 消息不经过内存缓冲,直接写入文件
    • 根据时间策略删除,而不是消费完就删除
    • producer自己决定往哪个partition写消息,可以是轮询的负载均衡,或者是基于hash的partition策略

    有两个重要特点:(1)利用了磁盘连续读写性能远远高于随机读写的特点;(2)并发,将一个topic拆分多个partition(kafka读写的单位是partition).

    1.进入kafka2.10目录后,查看启动目录cat startkafka.sh

    2.更改配置文件conf/server.properties,修改broker.id(每台唯一)及更改zookeeper的主机名,端口号不用变,修改执行权限:chmod +x ./bin/*

    3.启动kafda:bash startkafka.sh

    4.使用过程

    创建topic 20160118
    ./bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 2 --partitions 2 --topic 20160118
    ./bin/kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181  --describe  --topic  20160118
    查看tocpic的目录
    ./bin/kafka-topics.sh --list --zookeeper  node1:2181,node2:2181,node3:2181(结果为20160118)
    查看tocpic的具体信息
    ./bin/kafka-topics.sh --describe --zookeeper node1:2181,node2:2181,node4:2181
        结果为:
        Topic:20160118    PartitionCount:2    ReplicationFactor:2    Configs:
        Topic: 20160118    Partition: 0    Leader: 2    Replicas: 2,0    Isr: 2,0
        Topic: 20160118    Partition: 1    Leader: 0    Replicas: 0,1    Isr: 0,1
    查看日志目录:ll /kafka-logs/
    发送信息: bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic 20160118
    接收信息: bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic 20160118
    接收所有信息(包括之前发送的及未打开此命令时发送的消息):
    bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic 20160118 --from-beginning

  • 相关阅读:
    【Android】给Android Studio设置代理
    Android studio如何使用SVN进行版本控制?
    Android studio
    nohup java -jar 启动java项目
    Linux命令发送Http GET/POST请求
    Java 读取配置文件的几种方式
    java -jar 报错 Error: A JNI error has occurred, please check your installation and try again
    java.net 发送http请求
    textarea高度自适应
    webrtc切换媒体设备
  • 原文地址:https://www.cnblogs.com/Mandylover/p/5143284.html
Copyright © 2020-2023  润新知