[DB] Kafka

介绍

  • 一种高吞吐量的分布式发布订阅消息系统
  • 消息类型:主体Topic(广播)、队列Queue(一对一)
  • 消息系统类型:同步消息系统、异步消息系统
  • 常见消息产品:Redis、Kafka、JMS

术语

  • Topic:Kafka处理消息源(feeds of messages)的不同分类(不同于传统MQ)
  • Partition:Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset),一个分区对应一个消费者
  • Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息
  • Producers:消息和数据生产者,向Kafka的一个topic发布消息的过程叫做producers
  • Consumers:消息和数据消费者,订阅topics并处理其发布的消息的过程叫做consumers
  • Broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker

设计要点

  • 内存访问:使用Linux文件系统的cache,高效缓存数据
  • 磁盘持久化:不再内存中cache,直接顺序写入磁盘
  • zero-copy:减少IO操作
  • 消息处理:支持数据批量发送压缩
  • 主题分区:Topic划分为多个partition,提高消息处理并行度
  • 负载均衡:producer根据用户指定算法,将消息发送到指定的partition
  • 消息拉取:简化kafka设计,consumer根据消费能力自主控制消息拉取速度,自主选择消费模式
  • 可扩展性:需要增加broker结点时,新增broker向zk注册,procucer和consumer根据zk上的watcher调整

应用场景

  • 消息队列
  • 行为跟踪
  • 元信息监控
  • 日志收集
  • 流处理

命令

  • 配置文件:config/server.properties
  • 启动:bin/kafka-server-start.sh config/server.properties &
  • 创建主题:bin/kafka-topics.sh –create –zookeeper bigdata111:2181 -replication-factor 1 –partitions 3 –topic mydemo1
  • 生产者:bin/kafka-console-producer.sh –broker-list bigdata111:9092 –topic mydemo1
  • 消费者:bin/kafka-console-consumer.sh –zookeeper bigdata111:2181 –topic mydemo1

参考

Kafka入门经典教程

https://blog.csdn.net/hmsiwtv/article/details/46960053