美文网首页
kafka-初体验

kafka-初体验

作者: xsren2019 | 来源:发表于2019-11-26 16:02 被阅读0次

最近学习了一个分布式爬虫系统 Frontera,其中通信载体使用的是 kafka。之前只是听说 kafka 很 🐂,但是没有实践过,借这个机会入门一下,也想在自己的爬虫系统中引入kafka。再次记录一下自己的学习过程和理解,希望对其他初学者能有帮助。

一、阅读文章

google关键词“kafka”,把排在前几位的文章阅读一下,对kafka有了初步的认识,觉得有用的文章(我一般学习都是先中文文档了解,英文文档深入):
Kafka背景及架构介绍
kafka官方文档
Kafka文件存储机制那些事
之后是实践python如何使用kafka,参考:
kafka-python
kafka-python 文档

二、我的思考

在阅读中想到的一些问题,和我的解答

1、kafka是什么?

我的理解是 :

kafka 是一个分布式的消息队列,也是一个分布式的发布-订阅系统,还是一个分布式存储系统。

2、多个 partition 在 多个 broker 中如何分布?

平均分布。partition 会尽量分配在每一个broker中。

3、partition 和 customer 的对应关系?

一个partition只能对应一个customer,即最多只有一个customer能从一个特定的partition取数据。

(1) 当customer中指定partition时:

customer会从对应的partition中获取数据(如果没有别的customer正在消费这个partition)。

(2) 当customer中没有指定partition时:

如果customer数量多于partition数量,则有的customer会没有partition对应;反之,partition会平均分配给customer。

4、kafka-python 中 producer 存数据时如何指定partition?

通过partitioner指定一个回调函数来决定。默认通过key计算hash值分配到不同分区;如果没有key,则随机分配。

5、kafka-python 中能创建topic吗?

如果服务器端允许自动生成topic的话是可以的,但是不推荐,标准方法还是在server端使用"kafka-topics.sh"创建。

三、python kafka

示例代码:
customer.py

#coding:utf8
from kafka import KafkaConsumer, TopicPartition
consumer = KafkaConsumer(
                         group_id='my-group2',
                         bootstrap_servers=['localhost:9092','localhost:9093','localhost:9094'])
consumer.subscribe(('test-topic1'))
 consumer.assign(_partition_ids)
for message in consumer:
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))

producer.py

#coding:utf8
from kafka import KafkaProducer
from kafka.partitioner.default import DefaultPartitioner
producer = KafkaProducer(bootstrap_servers=['localhost:9092','localhost:9093','localhost:9094'])
print producer.partitions_for('test-topic1')
for _ in range(3):
    producer.send('test-topic1', key=None, value=b'msg')

四、生产环境中

还没有做,方向是这个样子的:

1、安全验证

连接的时候需要验证,数据传输的时候可能需要加密(我司用的是ssl,具体参考官方文档"security"部分)。

2、优化配置

阅读相关文章优化配置,最大程度发挥kafka的性能。

相关文章

  • kafka-初体验

    最近学习了一个分布式爬虫系统 Frontera,其中通信载体使用的是 kafka。之前只是听说 kafka 很 ?...

  • spark 学习笔记

    Spark学习笔记 Data Source->Kafka->Spark Streaming->Parquet->S...

  • Logstash错误排查之-`Don't know ho

    现象 今天写好logstash后(kafka-》 logstash -》kafka ),本地测试OK后,上线后,疯...

  • kafka 内存管理 BufferPool

    闫文亮304 Kafka-生产者-BufferPool 先看注释 结合代码可知,BufferPool负责ByteB...

  • yii初体验(7-15)

    yii初体验(7)视图 yii初体验(8)模块 yii初体验(9) 小部件widgets yii初体验(10) 前...

  • 5-kafka(分布式消息队列)

    Kafka-分布式发布-订阅消息系统,最初是由LinkedIn公司所开发,Scala语言编写,之后加入Apache...

  • kafka->logstash

    一、安装kafka 请参考:kafka安装 二、安装logstash 请参考:logstash安装 三、kafka...

  • kafka-原理

  • Kafka-概述

    一、Kafka是什么 1.定义 Apache Kafka 是一款开源的消息引擎系统。消息引擎系统是一组规范。企业利...

  • 动画篇-layout动画初体验

    动画篇-layout动画初体验 动画篇-layout动画初体验

网友评论

      本文标题:kafka-初体验

      本文链接:https://www.haomeiwen.com/subject/ssfywctx.html