zoukankan      html  css  js  c++  java
  • kafka集群配置与测试

    刚接触一些Apache Kafka的内容,用了两天时间研究了一下,仅以此文做相关记录,以供学习交流。

     概念:

    kafka依赖的项:

    1. 硬件上,kafka利用线性存储来进行硬盘直接读写。

    2. kafka没有使用内存作为缓存。

    3. 用zero-copy。

    4. Gzip和Snappy压缩,

    5. kafka对事务处理比较弱,但是message分发上还是做了一定的策略来保证数据递送的准确性的。

    kafka关于存储的几个概念

    1. Partition:同一个topic下可以设置多个partition,目的是为了提高并行处理的能力。可以将同一个topic下的message存储到不同的paritition下。

    2. Offset:kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。

    在分布式方面:

    1. broker的部署是没有主从结构的,每个节点都是同等的,节点的增减和减少都不需要改变任何配置。

    2. producer和consumer通过zookeeper去发现topic,并通过zookeeper来协调生产和消费的过程。

    3. producer、consumer和broker均采用TCP连接,通信基于NIO实现。并且Producer和consumer能自动检测broker的增加和减少。

    一.配置

    克隆出三台虚拟机,我这三台虚拟机的ip分别为
    192.168.128.129
    192.168.128.132
    192.168.128.133
    在129这个服务器上找到 kafka目录/config/server.properties文件,做如下修改
    broker.id=129
    host.name=192.168.128.129
    zookeeper.connection=192.168.128.129:2181
    
    这里只用到了一个zookeeper,并部署到了129上,没有用集群,当然也可以部署到其他机器上。
    132上的kafka配置
    roker.id=132
    host.name=192.168.128.132
    zookeeper.connection=192.168.128.129:2181
    

    133上的kafka配置

    broker.id=133
    host.name=192.168.128.133
    zookeeper.connection=192.168.128.129:2181
    

    二.测试

    在129上启动zookeeper服务器
    bin/zkServer.sh start conf/zoo.cfg
    

     启动129,132,133上的kafka服务

    [root@bogon kafka_2.8.0-0.8.1]# nohup bin/kafka-server-start.sh config/server.properties &
    

     在任意机器上建一个topic,因为有三个kafka服务,所以这里replication-factor设为3

    bin/kafka-topics.sh --create --zookeeper 192.168.128.129:2181 --replication-factor 3 -partitions 1 --topic 3test
    Created topic "3test".
    

     查看topic,此时的leader kafka为129,repicas:集群里有三个kafka,Isr:正常使用的kafka

    bin/kafka-topics.sh --describe --zookeeper 192.168.128.129:2181
    Topic:3test	PartitionCount:1	ReplicationFactor:3	Configs:
    	Topic: 3test	Partition: 0	Leader: 129	Replicas: 129,132,133	Isr: 129,132,133
    

     在133这台机器上开启一个producer,往132这个kafka发消息

    [root@slave-03 kafka_2.8.0-0.8.1]# bin/kafka-console-producer.sh --broker-list 192.168.128.132:9092 --topic 3test
    this is a message to 132 broker
    re?
    

     停掉132的kafka,再次查看topics,此时可用的Isr为129和133,leader依然为129,因为129的kafka没有被停过,所以没有重新选举leader

    [root@slave-02 kafka_2.8.0-0.8.1]# bin/kafka-topics.sh --describe --zookeeper 192.168.128.129:2181
    Topic:3test	PartitionCount:1	ReplicationFactor:3	Configs:
    	Topic: 3test	Partition: 0	Leader: 129	Replicas: 129,132,133	Isr: 129,133
    

     在129上开启一个consumer

    [root@bogon kafka_2.8.0-0.8.1]# bin/kafka-console-consumer.sh --zookeeper 192.168.128.129:2181 --topic 3test --from-beginning
    this is a message to 132 broker
    re?
    
    自此,发现停掉了132,依然能通过zookeeper从129和133的kafka上收到发往132的消息。
    kafka集群测试通过
  • 相关阅读:
    jquery.datatables中文使用说明
    jquery.datatables中文语言设置
    .net c# 视频剪切抓取缩略图
    Firefox os初体验
    maven 管理项目实践指南
    HTML5本地存储之Database Storage篇
    推荐开源软件
    HTML5实现网页元素的拖放操作
    分布式环境下基于redis解决在线客服坐席动态分配的问题
    HTML5本地存储之Web Storage篇
  • 原文地址:https://www.cnblogs.com/younldeace/p/3796580.html
Copyright © 2011-2022 走看看