死磕-kafka(二)

简介: 死磕-kafka(二)

一、关于Kafka的基本概念

Kafka是一个分布式实时数据流平台,可以独立部署在单台服务器上,也可以部署在多台服务器上构成集群。它提供了发布与订阅功能,用户可以发送数据到Kafka集群中,也可以从Kafka集群中读取数据。

二、Kafka中有几个核心的概念:

①、代理(Broker)

在Kafka集群中,一个kafka进程(Kafka进程又称为Kafka实例)被称为一个代理(Broker)节点。

代理节点是消费队列中的一个常用概念,通常,在部署分布式kafka集群时,一台服务器上部署一个Kafka实例。

②、生产者(Producer)

在Kafka系统中,生产者通常被称为Producer。

Prouducer将消息记录发送到Kafka集群指定的主题(Topic)中进行存储,同时生产者(Producer)也能通过自定义算法决定将消息记录发送到哪个分区(Partition)。

例如:通过获取消息记录主键(Key)的哈希值,然后使用该值对分区数取模运算,得到分区索引,计算公式如下:

java代码如下:

int partition = Math.abs(key.hashCode()) % numPartitions;

③、消费者(Consumer)

消费者(Consumer)从Kafka集群指定的主题(Topic)中读取消息记录。

在读取主题数据时,需要设置消费组名(GroupId),如果不设置,则Kafka消费者会默认生成一个消费组名称。

④、消费者组(Consumer Group)

消费者程序在读取Kafka系统主题(Topic)中的数据时,通常会使用多个线程来执行。

一个消费者组可以包含一个或多个消费者程序,使用多分区和多线程模型可以极大提高读取数据的效率。

注意:

一般而言,一个消费者对应一个线程。

在给应用程序设置线程数量时,遵循“线程数小于等于分区数”原则。如果线程数大于分区数,则多余的线程不会消费分区中的数据,这样会造成资源浪费。

⑤、主题(Topic)

Kafka系统通过主题来分区不同业务类型的消息记录。

例如:用户登录数据存储在主题A中,用户充值记录存储在主题B中,则如果应用程序只订阅了主题A,而没有订阅主题B,那该应用程序只能读取主题A中的数据。

⑥、分区(Partition)

每一个主题(Topic)中可以有一个或者多个分区(Partition),在Kafka系统的设计思想中,分区是基于物理层面上的,不同的分区对应着不同的数据文件。

Kafka通过分区(Partition)来支持物理层面上的并发读写,以提高Kafka集群的吞吐量。

每个主题(Topic)下的各个分区(Partition)中存储数据的具体流程如图所示:

1、每个分区(Partition)内部的消息记录是有序的,每个消息都有一个连续的偏移量序号(Offset)。

2、一个分区只对应一个代理节点(Borker),一个代理节点可以管理多个分区。

⑦、副本(Replication)

在Kafka中,每个主题(Topic)在创建时会要求指定它的副本数,默认是1,通过副本(Replication)机制来保证Kafka分布式集群数据的高可用性。

注意:

在创建主题时,主题的副本系数值应如下设置:

(1)、若集群数量大于等于3,则主题的副本系数值可以设置为3;

(2)、若集群数量小于3,则主题的副本系数值可以设置为小于等于集群数量值。

例如:集群数为2,则副本系数可以设置为1或者2,集群数为1,则副本系数只能设置为1。

通常情况下,当集群数量大于等于3时,为了保证集群数据不丢失,会将副本系数值设置为3,集群数量大于等于3时,副本系数值也可以设置为1或者2,但是会存在数据丢失的风险。


好吧,今天到这了,明天见~~

相关文章
|
2天前
|
消息中间件 存储 分布式计算
死磕-kafka(三)
死磕-kafka(三)
|
2天前
|
消息中间件 Kafka 调度
死磕-kafka(一)
死磕-kafka(一)
|
2天前
|
消息中间件 XML Kafka
死磕-kafka(二)
死磕-kafka(二)
|
2天前
|
分布式计算 Hadoop 分布式数据库
死磕HBase(二)
死磕HBase(二)
|
2天前
|
存储 NoSQL 关系型数据库
死磕HBase(一)
死磕HBase(一)
|
2天前
|
流计算 Docker 容器
死磕flink(八)
死磕flink(八)
|
2天前
|
SQL 算法 API
死磕flink(三)
死磕flink(三)
|
2天前
|
存储 分布式计算 大数据
死磕Flink(二)
死磕Flink(二)
|
2天前
|
消息中间件 存储 API
死磕flink(六)
死磕flink(六)
|
2天前
|
Linux 流计算
死磕flink(四)
死磕flink(四)