kafka 配置以及python运用

kafka配置:
    server.properties:
     1. broker.id = 0  每台机器配置唯一的broker id
     2. zookeeper配置

启动服务:
    1.启动 zookeeper 集群
    2. 启动 kafka
       bin/kafka-server-start.sh config/server.properties

创建topic
     bin/kafka-topics.sh --create --zookeeper master:2181,slave1:2181,slave2:2181 \
     --replication-factor 1 --partitions 1    --topic test

    主要配置副本数 分区 与主题

发送消息:
     producer 向broker推送消息,broker (Leader)会选择一个partition存储,也会放副本
     leader 选举是由kafka 中 zookeeper 服务选出的。
     producer 发送方式有两种: 同步(默认), 异步
    在Producer配置文件中:
     producer.type 配置同步/异步
     request.required.asks设置确认消息属性
     ack:
         0  不确认
         1  leader 确认
        -1  leader 和follower都确认

如何确保producer发送的消息不丢失,确保消息不重复:

         producer 同步发送选择 -1消息确认模式,--确保消息不会丢失.
         异步,只要配置无限阻塞,防止队列满了.--确保消息不会丢失.


针对消息重复:将消息的唯一标识保存到外部介质中,每次消费时判断是否处理过即可

Kafka 分配 Replica 的算法如下:
    1. 将所有 broker(假设共 n 个 broker)和待分配的 partition 排序
    2. 将第 i 个 partition 分配到第(i mod n)个 broker 上
    3. 将第 i 个 partition 的第 j 个 replica 分配到第((i + j) mode n)个 broker上

.

kafka  python编程(topic由命令行创建):

   Producer :

from kafka import KafkaProducer,KafkaConsumer
import json
ka = KafkaProducer(bootstrap_servers='master:9092')
data = {"a":1}
msg = json.dumps(data)
ka.send("jpb", msg)

   send当中也可以指定分区

Consumer:

con=KafkaConsumer("jpb",bootstrap_servers=["master:9092"],group_id="123456789")
for msg in con:
    print msg

group_id 是表示同一个group_id没有共享消息的权限,比如两个Consumer,groud_id一样的,如果一个Consumer 接收到Producer的消息,另一是接收不到的.

KafkaConsumer 第一个参数可以是 topic list

KafkaConsumer 中参数很多其中就有auto_offset_reset, enable_auto_commit

auto_offset_reset (str):

A policy for resetting offsets on OffsetOutOfRange   errors: 'earliest' will move to the oldest available message, 'latest' will move to the most recent. Any  other value will raise the exception. Default: 'latest'.

就是说当offset越界时, earliest : 将offset设置为最早的信息, latest: 将offset设置为最新的信息,其它的值出现越界将抛出异常

 enable_auto_commit (bool):  就是说consumer 会将自己的offset定期提交给kafka。默认是True

If True , the consumer's offset will be periodically committed in the background. Default: True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值