【大数据学习 | kafka】kafuka的基础架构

1. kafka是什么

Kafka是由LinkedIn开发的一个分布式的消息队列。它是一款开源的、轻量级的、分布式、可分区和具有复制备份的(Replicated)、基于ZooKeeper的协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比,KafKa能够很好的处理活跃的流数据,使得数据在各个子系统中高性能、低延迟地不停流转。

Kafka使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。

2. 什么是消息队列

消息队列:是在消息的传输过程中保存消息的容器。

消息在原始的传输过程中是直接传输的,端对端的数据传递,但是有的时候我们需要将消息数据进行部分的缓冲存储,以达到方便使用的目的,中间的组件可以做消息的传输中间介质,这个组件就是消息队列。更像是一个消息的蓄水池一样的功能

类比现实中更像是高速公路的休息区

3. 消息队列的好处

缓冲

解耦

异步

如果是同步服务,如上图,那么用户的体验度是非常差的,因为需要将短信发送完毕然后在返回成功通知,页面才会跳转,但是如果短信发送遇见网络等问题,没有办法直接发送,这个时候客户需要等待很长的时间

直接将需要发送的消息放入到消息队列中,然后消息服务会不停的扫描队列中需要发送的消息将数据发送出去,但是不会让客户等待,用户会大大的增加体验度

抵挡洪峰

如上图,我们需要处理流量的波峰和抖动,那么我们需要设定整个集群的处理能力达到最大的5M/s才可以,但是大多数时候这个处理能力都是浪费的,我们用不到

我们可以使用消息队列进行数据的存储,然后计算服务慢慢去消息队列中拉取数据进行消费就可以了,可以在一定程度节省成本

4. 消费订阅模式

通过以上的讲解,我们可以了解整个kafka的原理和架构了,消息队列其实就是一个数据传输过程中的缓冲区,能够存储数据,在流程中作为一个中间的介质,承上启下,在特定的情景下起到解耦,缓冲,异步的功能。

作为中间的介质,它的上下游需要传输和拉取数据,上游传输数据的部分称之为生产者,生产数据发送到kafka中,下游拉取数据的组件称之为消费者,自己拉取想要的数据并且进行数据的计算和处理,消费者和消费者以及kafka是三个部分,大家一定要注意,他们不是一个整体

其中生产者只是发送数据到队列中,但是消费者在消费数据的时候却有两种不同的方式

1.点对点消费

点对点的方式,在队列中的数据有且只有一个消费者可以消费数据,在消费完毕数据以后会将数据从队列中删除,这个数据有且只有一次消费

2.发布订阅模式

发布订阅模式中每个人可以消费数据,这个数据会在队列中存储七天,每个订阅这个数据的人都可以消费到相应的数据,并且可以重复的进行消费数据,在大多数情况下我们都使用发布订阅模式

5. kafka基础架构

kafka作为消息队列,主要在大数据的处理和计算过程中起到承上启下的作用,作为中间的一个缓冲中间件,那么它首先就要具备数据的稳定性和可靠性,并且存储数据量和吞吐量以及数据的检索速度一定要有所保证,那么单台机器肯定是没有办法解决这个问题的,在之前的所有的大数据组件部分我们都有所介绍,首先要保证性能一定要多台机器,分布式计算和存储才能保证性能,其次就是数据一定要做副本备份才能在多台机器的集群中保证数据的稳定性。所以首先要给大家介绍的就是kafka的集群组成结构

kafka首先我们要知道它不是一个主从集群,之前的课程中我们讲过,主从集群中节点有的天生就是主节点不能被其他的从节点替代,在非主从集群中每个节点都可以作为主节点,如果一个节点宕机那么其他的节点可以选举为主节点管理整个集群,在kafka集群中每个节点都称之为broker,其中每个节点都存在一个kafka_controller组件,但是只有一台节点的controller组件是活跃状态的,其他的都是standby状态,只有主节点宕机了,那么从节点才会选举成为主节点,但是究竟谁是主节点呢?这个时候我们需要一个外部协调管理组件zookeeper进行集群选举

### Apache Kafka 使用指南和常见问题 #### 一、Kafka架构概述 Apache Kafka是一个分布式流处理平台,其设计基于发布/订阅模式的消息队列系统。它通过主题(Topic)和分区(Partition)的结构来实现消息的高效传递,支持高吞吐量和低延迟的数据交换[^1]。 #### 二、生产者与消费者的交互机制 - **生产者(Producer)**负责向特定的主题发送消息。每个消息会被分配到该主题下的某个分区内。 - **消费者(Consumer)**可以从一个或多个主题中读取消息。为了提高并发度和支持容错能力,同一组内的不同消费者实例能够消费来自相同主题的不同分区上的消息。 #### 三、Shell脚本与命令行工具的应用场景 对于日常运维操作而言,利用Shell脚本来调用Kafka自带的各种CLI(Command Line Interface),可以帮助管理员更便捷地管理集群资源和服务状态。例如创建Topic、查看Offset信息等都是常见的应用场景之一。 #### 四、配置选项详解 针对不同的业务需求,可以通过调整参数设置来优化系统的性能表现: - 数据持久化策略决定了如何保存已提交的日志文件; - 数据保留时间则影响着历史记录的最大存储期限; - 此外还有诸如压缩算法的选择等多项重要配置项可供定制化修改以满足实际环境的要求。 #### 五、监控手段推荐 确保良好的服务质量和稳定性离不开有效的监测措施。官方提供了多种方式让用户跟踪集群健康状况,包括但不限于JMX(Java Management Extensions), Prometheus, Grafana等等可视化仪表盘解决方案;同时也鼓励开发者根据自身情况开发专属插件来进行更加细致入微的状态捕捉。 #### 六、版本更新注意事项 当涉及到软件迭代升级时,务必仔细阅读官方文档所提供的迁移指南,并严格按照指示完成相应准备工作。这期间可能还会遇到兼容性测试失败等问题,在此之前最好提前做好充分准备并制定应急预案以便快速响应可能出现的风险挑战[^2]。 #### 七、Doris Connector集成案例分析 如果计划将实时计算框架如Apache Flink同Kafka结合起来,则需要特别关注两者之间的适配工作。具体来说就是按照官方给出的操作手册逐步实施依赖库引入、表定义映射等一系列必要环节直至最终达到预期效果为止[^3]。 ```bash # 创建一个新的topic名为test_topic $ kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test_topic ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值