死磕-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,但是会存在数据丢失的风险。


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

相关文章
|
4月前
|
消息中间件 存储 分布式计算
死磕-kafka(三)
死磕-kafka(三)
|
8月前
|
消息中间件 存储 Kafka
阿里 P7 三面凉凉,kafka Borker 日志持久化没答上来
阿里 P7 三面凉凉,kafka Borker 日志持久化没答上来
|
4月前
|
消息中间件 Kafka 调度
死磕-kafka(一)
死磕-kafka(一)
|
4月前
|
消息中间件 XML Kafka
死磕-kafka(二)
死磕-kafka(二)
|
5月前
|
消息中间件 存储 缓存
这么酷的Kafka,背后的原理了解一下又不会死!
这么酷的Kafka,背后的原理了解一下又不会死!
205 2
|
8月前
|
消息中间件 Kafka API
这些年背过的面试题——Kafka篇
本文是技术人面试系列Kafka篇,面试中关于Kafka都需要了解哪些基础?一文带你详细了解,欢迎收藏!
|
消息中间件 存储 大数据
为啥非要用Kafka?其他MQ不行么? by 彭文华
为啥非要用Kafka?其他MQ不行么? by 彭文华
|
消息中间件 Kafka 程序员
美团面试真题,如何保证Kafka消息不丢失?
一位工作了5年的小伙伴去美团面试以后,跟我反馈说,被问到一个“如何保证Kafka消息不丢失?”的问题,不知道如何回答。其实,这道题真的很基础。 很多小伙伴可能只会回答说,消息要持久化,添加消息确认机制。如果,你只是这样回答,那就和普通的程序员没什么区别。要想让面试官感觉你确实有不一样的理解,就应该从多个方面更全面地来分析和回答这个问题。今天,我来给大家讲明白。
143 0
|
消息中间件 存储 数据采集
kafka几道面试题
kafka几道面试题
kafka几道面试题
|
消息中间件 缓存 算法
腾讯三面:说说Kafka的分区状态机的实现原理?
1 我为何读这源码? PartitionStateMachine,分区状态机负责管理Kafka分区状态的转换,类似ReplicaStateMachine。
117 0

热门文章

最新文章