首页 > 编程学习 > 【深入理解kafka系列】第一章 初识kafka

【深入理解kafka系列】第一章 初识kafka

发布时间:2022/10/1 0:52:45

        Kafka是由LinkedIn公司采用Scala语言开发的一个多分区、多副本的分布式消息系统,它以高吞吐、可持久化、可水平拓展、支持流数据处理等特性被广泛使用。

        Kafka越来越受青睐,它在我们使用中主要“扮演”了三大角色:

  • 消息系统:Kafka和传统的消息系统都具有系统解耦、冗余存储、流量削峰、缓冲、异步通信、拓展性、可恢复性等功能。此外,Kafka还提供了大多数消息系统难以实现的顺序消息及可回溯消息的功能。
  • 存储系统:Kafka把消息持久化道磁盘,相比其他基于内存的系统而言,降低数据丢失的风险。得益于Kafka的消息持久化功能和多副本机制,可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。
  • 流式处理平台:Kafka不仅为威哥留下的流失处理框架提供可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。

基本概念

Kafka体系引入了3个术语:

  • Producer:生产者,也就是消息发送方。生产者负责创建消息,然后将其投递到kafka中,进行相应的业务逻辑处理。
  • Consumer:消费者,也就是消息接收方。消费者连接到Kafka上并接受消息,进行相应的业务逻辑处理。
  • Broker:服务代理节点。对于Kafka而言,Broker可以看做一个独立的Kafka服务节点或服务实例。一个或多个Broker组成一个Kafka集群。

        在Kafka中还有两个重要的概念—主题(Topic)分区(Partition)。Kafka中的消息以主题为单位进行归类,生产者将消息发送到特定的主题,消费者负责订阅主题并消费。

      一个主题可以包含多个分区,而一个分区只属于单个主题。同一主题下不同分区包含的消息是不同的,分区在存储可以看做一个可追加的日志文件,消息被追加到分区日志文件的时候会分配一个特定的偏移量(offest),offest是消息在分区的唯一标识,Kafka通过它保证消息在分区的顺序性,不过offest不跨分区,所以,Kafka保证的是分区有序而不是主题有序

        Kakfa中的分区可以分布在不同的服务器(broker)上,也就是说,一个主题可以跨越多个broker,以此来提供比单个broker更强大的性能。

        Kafka为分区引入了多副本(Replica)机制,同一分区的不同副本保存相同的消息,其中leader副本负责处理读写请求,follower副本只负责与leader副本的消息同步。Kafka通过多副本实现了故障的自动转移,所以当集群中某个broker失效时仍然能保证服务可用。

  • AR:分区中的所有副本统称为AR(Assigned Replicas)。
  • ISR:所有与leader副本保持一定程度同步的副本组成ISR(In-Sync Replicas),只有在ISR集合中的副本才有资格被选举为新的leader
  • OSR:与leader副本同步滞后过多的副本组成OSR(Out-of-Sync Replicas)。

Copyright © 2010-2022 mfbz.cn 版权所有 |关于我们| 联系方式|豫ICP备15888888号