kafka的安装与测试

kafka的安装与测试

一、概念

定义: kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要用于大数据实时处理领域

使用消息队列的一个好处

1.解耦: 不需要两台服务器保持同时在线,通过消息队列处理。 另外一台服务器需要的时候从消息队列中取。

2.可恢复性:系统一部分组件失效的时候,不会影响到整个系统,消息列队降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息任然可以在系统中恢复。

3.缓冲:解决生产消息和消费的消息不一致的情况。

4.灵活性&峰值处理能力: 削峰的处理,当用户访问到达高峰期的时候通过消息队列去顶住突发的访问压力。

5.异步通信:不马上处理用户的消息,把它放入消息队列中,需要的时候再去处理它。

二、消息队列的两种模式

(1)点对点模式: (一对一,消费者主动的拉取数据,消息收到后消息删除)

​ 消息生产者生产信息发送到Queue中,消费者从Queue中取出消费信息。消息被取出后 queue中不再存储,所以消费者不可能消费到已经被消费的信息。

(2) 发布/订阅模式(一对多模式,消费者消费数据之后不会清楚消息) 有两种模式: 一是消费者主动拉取 二是消息队列推送

​ 消息生产者(发布)将消息发布到topic中,同时有多个消费者(订阅)消费该消息。和点对点的方式不同,发布到topic的消息会被所有的消费者订阅。

三、kafka的俗语解释

broker: kafka集群包含一个或多个服务器,服务器节点称为broker

broker存储topic的数据。如果某topicKafka 集群包含一个或多个服务器,服务器节点称为broker。

broker存储topic的数据。如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。

如果某topic有N个partition,集群有(N+M)个broker,那么其中有N个broker存储该topic的一个partition,剩下的M个broker不存储该topic的partition数据。

如果某topic有N个partition,集群中broker数目少于N个,那么一个broker存储该topic的一个或多个partition。在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致Kafka集群数据不均衡。

topic: 每条发布到kafka集群的消息都有一个类别,这个类别称为Topic,类似于数据库的表名

Partition: topic 中的数据分割为一个或者多个partition 每个topic至少有一个partition。每个partition中的数据使用多个segment文件存储。partition中的数据是有序的,不同partition间的数据丢失了数据的顺序。如果topic有多个partition,消费数据时就不能保证数据的顺序。在需要严格保证消息的消费顺序的场景下,需要将partition数目设为1。

Producer : 生产者就是数据的发布在,该角色将消息发布到Kafka的topic中broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment文件中,生产者发送的消息,存储到一个partition中,生产者也可以指定数据存储的partition。

Consumer : 消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。

Consumer Group :每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)

Leader:每个partition有多个副本,其中有且仅有一个作为Leader,Leader是当前负责数据的读写的partition。

Follower:Follower跟随Leader,所有写

你可能感兴趣的:(kafka,队列,java,linux)