Kafka原理篇

Kafka是一款分布式消息系统,由LinkedIn开发并成为Apache项目。它提供高性能、持久化、分布式和可扩展性的消息处理能力。Kafka的主要特点是生产者消费者模型、高吞吐量、持久化、负载均衡、可扩展性和灵活的消费模式。Kafka架构包括producer、broker和consumer,数据在partition中按offset顺序存储。Kafka的零拷贝技术提升了系统性能。此外,Kafka常用于日志收集、流处理和事件源等场景。
摘要由CSDN通过智能技术生成

1 Kafka简介

      Kafka是分布式发布订阅消息系统。他最初由Linkedin公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的可划分的冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。
      在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟地不停流转。传统的企业消息系统并不是非常适合大规模的数据处理。为了已在同时搞定在线应用(消息)和离线应用(数据文件和日志),Kafka就出现了。Kafka可以起到两个作用:
      ① 降低系统组网复杂度;
      ② 降低编程复杂度,各个子系统不在是相互协商接口,各个子系统类似插口在插座上,
      Kafka承担高速数据总线的作用。
      Kafka主要的特点
      ① 消息系统的特点:生产者消费者模型,FIFO。
      分析:消息系统基本的特点是保证了有基本的生产者消费者模型,partition内部是FIFO的,partition之间不是FIFO的,当然我们可以把topic设为一个partition,这样就是严格的FIFO。
      ② 高性能:单节点支持上千个客户端,百MB/S吞吐。
      分析:接近网卡。
      ③ 持久性:将消息持久化到普通磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication(备份)防止数据丢失。
      分析:直接append到磁盘里面去,这样做的好处:第一个是直接持久化,数据不会丢;第二个是顺序写,然后消费数据也是顺序地读,所以持久化的同时保证顺序,因为磁盘顺序读比较快。
      ④ 分布式:数据副本冗余、流量负载均衡和可扩展。
      分析:分布式,数据冗余就是同一份数据可以分到不同的broker上面去,也就是当一份数据的磁盘坏掉的时候,数据不会丢失,比如3个副本,就是在3个机器磁盘都坏掉的情况下数据才会丢。当然分配副本的时候是按照负载均衡来的。可扩展可以理解为在线扩展,不需要停掉服务。
      ⑤ 很灵活:消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡。
      分析:消费方式非常灵活,第一是消息持久化时间跨度比较长,一天或者一星期等;第二是consumer自己维护消费状态、Queue模型、发布订阅(广播)的模型和回滚的模型。
      ⑥ 支持online和offline

2 Kafka工作原理

2.1 Kafka架构

在这里插入图片描述
      Kafka的整体架构非常简单,是显示分布式架构,producer、broker和consumer都可以是多个。producer和consumer实现Kafka注册的接口,数据从producer发送到broker,broker承担一个中间缓存和分发的作用。broker分发注册到系统中的consumer。客户端和服务器端的通信,是基于简单、高性能且与编程无关的TCP协议。几个概念如下:
(1)Broker:消息中间件处理结点,一个Kafka结点就是一个broker,多个broker可以
组成一个Kafka集群。
(2)Topic:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
(3)Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个强有序的队列。一个partition只对应一个br

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值