kafka编程模型
来源:互联网 发布:12306网络购票暂停 编辑:程序博客网 时间:2024/05/23 17:50
- kafka消费者编程模型
- kafka 消费者的pythone 和java客户端实现
- 1 python 客户端实例
- 2 python 客户端参数调优
- 3 Java 客户端实例
- 4 Java 客户端参数调优
- kafka生产者编程模型
- 1 同步生产模型
- 2 异步生产模型
- 3 两种生产模型伪代码描述
- 4 两种生产模型对比
- kafka生产者的python和java 客户端实现
- 1 Python客户端实例讲解
- 同步生产模型
- 异步生产模型
- 2 Python客户端参数调优
- 3 Java客户端实例讲解
- 4 Java客户端参数调优
- 1 Python客户端实例讲解
1 kafka消费者编程模型
分区消费模型
- 一个分区对应一个消费者
- 一个分区对应一个消费者
组(Group)消费模型
- 两种消费模型对比
2 kafka 消费者的pythone 和java客户端实现
2.1 python 客户端实例
- 安装
1)github下载kafka-python
2)安装,先安装six(pypi.python.org下载)后安装python
[root@bigdata kafka-python-0.9.4]# python setup.py install
- 客户端代码
分组模式:
import threadingfrom kafka.client import KafkaClientfrom kafka.consumer import SimpleConsumerclass Consumer(threading.Thread): daemon =True def run(self): client =KafkaClient("10.67.89.240:19092,10.67.5.30:19092,10.67.4.214:19092") consumer = SimpleConsumer(client,"test-group","bruce") for message in consumer: print(message.message.value)
import group_consumerimport timedef main(): consumer_thread = group_consumer.Consumer() consumer_thread.start() time.sleep(500000)if __name__ == '__main__': main()
分区模式:
import threadingfrom kafka.client import KafkaClientfrom kafka.consumer import SimpleConsumerclass Consumer(threading.Thread): daemon = True def __init__(self,partition_index): threading.Thread.__init__(self) self.part = [partition_index] self.__offset = 0 def run(self): client = KafkaClient("10.67.89.240:19092,10.67.5.30:19092,10.67.4.214:19092") consumer = SimpleConsumer(client,"test-group","bruce",auto_commit=False,partitions=self.part) consumer.seek(0,0) while True: message = consumer.get_message(True,60) self.__offset = message.offset print message.message.value
import logging,timeimport partition_consumerdef main(): threads = [] partition = 3 for index in range(partition): threads.append(partition_consumer.Consumer(index)) for t in threads: t.start() time.sleep(50000)if __name__ == '__main__': main()
2.2 python 客户端参数调优
- fetch_size_bytes:从服务器获取单包大小;
- buffer_size:kafka客户端缓冲区大小(一个fetch_size_bytes由多个buffer_size组成,客户端由多个tcp来回填充到buffers_size);
- Group:分组消费时分组名
- auto_commit: offset是否自动提交(一般用于分区模式,设置手动提交将实现其他语义)
2.3 Java 客户端实例
2.4 Java 客户端参数调优
3 kafka生产者编程模型
3.1 同步生产模型
3.2 异步生产模型
3.3 两种生产模型伪代码描述
3.4 两种生产模型对比
4 kafka生产者的python和java 客户端实现
4.1 Python客户端实例讲解
- 需要的软件环境:
- 已搭建好的kafka集群、Linux服务器一台、Python2.7.6 、kafka-Python软件包
- 分区消费模型的Python实现;
- 组(Group)消费模型的Python实现;
同步生产模型
import threading, timefrom kafka.client import KafkaClientfrom kafka.producer import SimpleProducerfrom kafka.partitioner import HashedPartitionerclass SyncProducer(threading.Thread): daemon = True def run(self): client = KafkaClient("10.206.216.13:19092,10.206.212.14:19092,10.206.209.25:1909") producer = SimpleProducer(client) #producer = KeyedProducer(client,partitioner=HashedPartitioner) while True: producer.send_messages('jiketest', "test") producer.send_messages('jiketest', "test") time.sleep(1)
异步生产模型
import threading, timefrom kafka.client import KafkaClientfrom kafka.producer import SimpleProducerclass ASyncProducer(threading.Thread): daemon = True def run(self): client = KafkaClient("10.67.89.240:19092,10.67.5.30:19092,10.67.4.214:19092") producer = SimpleProducer(client,async=True) while True: producer.send_messages('jiketest', "test") producer.send_messages('jiketest', "test") time.sleep(1)
4.2 Python客户端参数调优
- req_acks:发送失败重试次数;
- ack_timeout: 未接到确认,认为发送失败的时间;
- async : 是否异步发送;
- batch_send_every_n: 异步发送时,累计最大消息数;
- batch_send_every_t:异步发送时,累计最大时间;
4.3 Java客户端实例讲解
4.4 Java客户端参数调优
- message.send.max.retries: 发送失败重试次数;
- retry.backoff.ms :未接到确认,认为发送失败的时间;
- producer.type: 同步发送或者异步发送;
- batch.num.messages: 异步发送时,累计最大消息数;
- queue.buffering.max.ms:异步发送时,累计最大时间;
0 0
- kafka编程模型
- Storm集成Kafka编程模型
- Storm集成Kafka编程模型
- Kafka的消费编程模型
- Kafka学习(五):Kafka的消费编程模型
- Kafka学习(六):Kafka的生产者编程模型
- Kafka消费者生产者编程模型(一)
- Kafka消费者生产者编程模型(二)
- KAFKA 编程
- Kafka和ElasticSearch模型
- actor模型下kafka消费
- kafka的线程模型之一
- Kafka编程实例
- storm-kafka编程指南
- kafka集群编程指南
- kafka集群编程指南
- kafka Java编程
- Kafka Producer编程一
- Mybatis工作原理
- 第四篇 虚拟机类加载机制
- Java Sax解析xml
- 【Html】垂直居中-父元素高度确定的多行文本(方法一)
- 集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils探究
- kafka编程模型
- ANT(重要思想!)
- hdu 4630 线段树+在线操作
- 黑马程序员——IO流
- linux下创建和删除软、硬链接
- iOS 合并.a文件,制作通用静态库
- 读《程序员修炼之道——从小工到专家》(The Pragmatic Programmer: From Journeyman to Master)
- docker storage
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()