Kafka 简单实验二(Python实现简单生产者消费者)
Apache Kafka 是什么?
Kafka 是一个开源的分布式流处理平台,其简化了不同数据系统的集成。流指的是一个数据管道,应用能够通过流不断地接收数据。Kafka 作为流处理系统主要有两个用处:
- 数据集成: Kafka 捕捉事件流或数据变化流,并将这些数据送给其它数据系统,如关系型数据库,键值对数据库或者数据仓库。
- 流处理:Kafka接收事件流并保存在一个只能追加的队列里,该队列称为日志(log)。日志里的信息是不可变的,因此支持连续实时的数据处理和流转换,并使结果在系统级别可访问。
相比于其它技术,Kafka 拥有更高的吞吐量,内置分区,副本和容错率。这些使得 Kafka 成为大规模消息处理应用的良好解决方案。
Kafka 系统有三个主要的部分:
- 生产者(Producer): 产生原始数据的服务。
- 中间人(Broker): Kafka 是生产者和消费者之间的中间人,它使用API来获取和发布数据。
- 消费者(Consumer): 使用中间人发布的数据的服务。
安装 Kafka
见 Kafka 简单实验一
配置环境
我们的项目将包括:
生产者:将字符串发送给 Kafka 消费者: 获取数据并展示在终端窗口中 Kafka: 作为中间人
安装需要的依赖包
pip install kafka-python
创建生产者
生产者是给 Kafka 中间人发送消息的服务。值得注意的是,生产者并不关注最终消费或加载数据的消费者。 创建生产者: 创建一个 producer.py 文件并添加如下代码:
import time
from kafka import SimpleProducer, KafkaClient # connect to Kafka
kafka = KafkaClient('localhost:9092')
producer = SimpleProducer(kafka)
# Assign a topic
topic = 'my-topic'
创建消息:
循环生成1到100之间的数字
发送消息:
Kafka 消息是二进制字符串格式(byte)
以下是完整的生产者代码:
import time
from kafka import SimpleProducer, KafkaClient # connect to Kafka
kafka = KafkaClient('localhost:9092')
producer = SimpleProducer(kafka)
# Assign a topic
topic = 'my-topic' def test():
print('begin')
n = 1
while (n<=100):
producer.send_messages(topic, str(n))
print "send" + str(n)
n += 1
time.sleep(0.5)
print('done') if __name__ == '__main__':
test()
创建消费者
消费者监听并消费来自 Kafka 中间人的消息。我们的消费者应该监听 my-topic 主题的消息并将消息展示。
以下是消费者代码(consumer.py):
from kafka import KafkaConsumer #connect to Kafka server and pass the topic we want to consume
consumer = KafkaConsumer('my-topic') print "begin"
for msg in consumer:
print msg
运行项目
确保 Kafka 在运行
打开两个终端,在第一个终端中运行消费者:
$ python consumer.py
在第二个终端运行生产者:
$ python producer.py
Kafka 简单实验二(Python实现简单生产者消费者)的更多相关文章
- 实验二:MAL——简单后门 by:赵文昊
实验二:MAL--简单后门 一.后门是什么? 哪里有后门呢? 编译器留后门 操作系统留后门 最常见的当然还是应用程序中留后门 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序. 二.认识netc ...
- python JoinableQueue在生产者消费者项目中的简单应用
class multiprocessing.JoinableQueue([maxsize]) JoinableQueue, a Queue subclass, is a queue which add ...
- 进程,线程,GIL,Python多线程,生产者消费者模型都是什么鬼
1. 操作系统基本知识,进程,线程 CPU是计算机的核心,承担了所有的计算任务: 操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件:那么操作系统是如何进行任务调度的呢? ...
- python 进程锁 生产者消费者模型 队列 (进程其他方法,守护进程,数据共享,进程隔离验证)
#######################总结######### 主要理解 锁 生产者消费者模型 解耦用的 队列 共享资源的时候 是不安全的 所以用到后面的锁 守护进程:p.daem ...
- Python中的生产者消费者模型
---恢复内容开始--- 了解知识点: 1.守护进程: ·什么是守护进程: 守护进程其实就是一个‘子进程’,守护即伴随,守护进程会伴随主进程的代码运行完毕后而死掉 ·为何用守护进程: 当该子进程内的代 ...
- 实验二——Linux系统简单文件操作命令
项目 内容 这个作业属于那个课程 这里是链接 作业要求在哪里 这里是链接 学号-姓名 17041506-张政 作业学习目标 学习在Linux系统终端下进行命令行操作,掌握常用命令行操作并能通过命令行操 ...
- 实验二 Linux系统简单文件操作命令
项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接接地址 学号-姓名 17041428-朱槐健 作业学习目标 1.学习在Linux系统终端下进行命令行操作 2.掌 ...
- kafka集群配置和java编写生产者消费者操作例子
kafka 安装 修改配置文件 java操作kafka kafka kafka的操作相对来说简单很多 安装 下载kafka http://kafka.apache.org/downloads tar ...
- Python实现:生产者消费者模型(Producer Consumer Model)
#!/usr/bin/env python #encoding:utf8 from Queue import Queue import random,threading,time #生产者类 clas ...
随机推荐
- 如何让footer一直在网页底部(不使用绝对定位并且网页不论长度多长)
html: <html> <head> <link rel="stylesheet" href="layout.css" ... ...
- 错误”ORA-12560: TNS: 协议适配器错误“解决方法
错误”ORA-12560: TNS: 协议适配器错误“解决方法 原本是可以通过sqlplus连接数据库的,命令如下: C:\Users\xuwei>sqlplus /nolog SQL*Plus ...
- MyBatis3-实现多表关联数据的查询
前提: 1.新建Article表和增加模拟数据,脚本如下: Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` ) NOT NU ...
- runtimeService.startProcessInstanceById("process:6:55036", 2222, variables) SQL语句
JAVA: variables:{ user_flow_start_dept : "3333"} runtimeService.startProcessInstanceById(& ...
- js 集合
[深入理解javascript原型和闭包系列 ] 历时半月完稿,求推荐 jQuery 学习笔记(未完待续) JavaScript作用域原理(三)——作用域根据函数划分
- 【hdoj_2124】RepairTheWall
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2124 思路:贪心法.由于要求所需的块儿(block)的最小数目,先把所有的块儿加起来,看看大小是否> ...
- 手工安装kubernetes
参考的URL是 http://www.cnblogs.com/zhenyuyaodidiao/p/6500830.html 安装kubernets本身比较顺利,只是作dashboard时,老是日文版, ...
- 解决center7默认shell不显示完整路径问题
root用户下执行以下命令: vim ~/.bash_profile 然后屏蔽这两行: #PATH=$PATH:$HOME/bin #export PATH 新加入一下代码: PS1='[\u@\h: ...
- [BZOJ2653]middle 主席树+二分
2653: middle Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 2042 Solved: 1123[Submit][Status][Disc ...
- [xunsearch] 在thinkphp中使用xunsearch
file: XunSearchController.class.php <?php namespace Home\Controller; include '/opt/xunsearch/sdk/ ...