kafka介绍
一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统
主要应用场景是:日志收集系统和消息系统
核心概念
发布订阅模型
消息被持久化到一个topic中。消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。
Broker(服务器节点)
一台Kafka服务器就是一个Broker,一个集群由多个Broker组成,每个Broker可以容纳多个Topic;
Producer(发布者)
发布者将消息发布到Kafka的topic中。broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment文件中;
Consumers(消费者)
消费者可以从broker中读取数据。消费者可以消费多个topic中的数据;
Consumer group(消费者组)
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group);
Topic(消息类别)
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic;(类似数据库表名)
Partition(分区)
Topic中的数据分割为一个或多个partition。每个topic至少有一个partition;
Zookeeper
存放元数据;指主题分区的所有数据都保存在 ZooKeeper 中,且以它保存的数据为权威,其他都要与它保持对齐;
成员管理;是指 Broker 节点的注册、注销以及属性变更;
Controller选举;是指选举集群 Controller,而其他管理类任务包括但不限于主题删除、参数配置等;
代码示例
图形界面管理工具(kafka-manager)
问题
1.Kafka中的消息是否会丢失和重复消费?
2.Kafka中是怎么体现消息顺序性的?
3.Kafka中的事务是怎么实现的?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。