简单说kafka是一个高吞吐的分部式消息系统,并且提供了持久化。

kafka的架构

• producer:消息生存者
• consumer:消息消费者
• broker:kafka集群的server,负责处理消息读、写请求,存储消息
• topic:消息队列/分类
• Queue里面有生产者消费者模型
• broker就是代理,在kafka cluster这一层这里,其实里面是有很多个broker
• topic就相当于queue
• 图里没有画其实还有zookeeper,这个架构里面有些元信息是存在zookeeper上面的,整个集群的管理也和zookeeper有很大的关系

kafka的消息存储和生产消费模型

• 一个topic分成多个partition
• 每个partition内部消息强有序,其中的每个消息都有一个序号叫offset
• 一个partition只对应一个broker,一个broker可以管多个partition
• 消息不经过内存缓冲,直接写入文件
• 根据时间策略删除,而不是消费完就删除
• producer自己决定往哪个partition写消息,可以是轮询的负载均衡,或者是基于hash的partition策略

有两个重要特点:(1)利用了磁盘连续读写性能远远高于随机读写的特点;(2)并发,将一个topic拆分多个partition(kafka读写的单位是partition).

1.进入kafka2.10目录后,查看启动目录cat startkafka.sh

2.更改配置文件conf/server.properties,修改broker.id(每台唯一)及更改zookeeper的主机名,端口号不用变,修改执行权限:chmod +x ./bin/*

3.启动kafda:bash startkafka.sh

4.使用过程

创建topic 20160118
./bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 2 --partitions 2 --topic 20160118
./bin/kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181  --describe  --topic  20160118
查看tocpic的目录
./bin/kafka-topics.sh --list --zookeeper  node1:2181,node2:2181,node3:2181(结果为20160118)
查看tocpic的具体信息
./bin/kafka-topics.sh --describe --zookeeper node1:2181,node2:2181,node4:2181
    结果为:
    Topic:20160118    PartitionCount:2    ReplicationFactor:2    Configs:
    Topic: 20160118    Partition: 0    Leader: 2    Replicas: 2,0    Isr: 2,0
    Topic: 20160118    Partition: 1    Leader: 0    Replicas: 0,1    Isr: 0,1
查看日志目录:ll /kafka-logs/
发送信息: bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic 20160118
接收信息: bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic 20160118
接收所有信息(包括之前发送的及未打开此命令时发送的消息):
bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic 20160118 --from-beginning

最新文章

  1. C——没有bool的C语言?
  2. C#中获得机器的字符编码webName信息
  3. 矩阵求逆算法及程序实现(C++)
  4. HTML5系列一(属性概述)
  5. EF-在EF中运行sql语句
  6. VS2013调试时,IIS Express Worker Process 已停止工作
  7. Linux 常用命令笔记
  8. [C# 基础知识系列]C#中易混淆的知识点
  9. open_binary_frm
  10. Exploit用法示例
  11. 教你利用iframe在网页中显示天气
  12. JDBC学习笔记(8)——数据库连接池(dbcp&C3P0)
  13. hdu1533解题报告
  14. 基于jQuery的上下无缝滚动应用(单行或多行)
  15. JNI只C性能测试
  16. Spring 学习笔记(七)—— 切入点表达式
  17. [ASP.NET MVC]笔记(三) 成员资格、授权和安全性
  18. 小程序web-view组件
  19. PHP内核之旅-3.变量
  20. Android选择多图上传

热门文章

  1. 【转】C#中没有id 没有name C#怎么点击按钮
  2. 使用 桌面的 chrome 远程调试 Android 的页面
  3. TIBCO ActiveMatrix BPM 生成daa包脚本
  4. python在linux制作图形界面(snack)
  5. Spring核心框架 - AOP的原理及源码解析
  6. 视图--bai
  7. 练习--LINUX进程间通信之消息队列MSG
  8. TSS 内核栈 用户栈的关系
  9. easyui源码翻译1.32--DateTimeBox(日期时间输入框)
  10. Layout Resource官方教程(2)用ViewStub引用的嵌入的layout可推迟加载