美文网首页
kafka简介

kafka简介

作者: Kuco_Shen | 来源:发表于2021-04-21 19:58 被阅读0次

    简介

    Apache kafka 是一个分布式的基于push-subscribe的消息系统,它具备快速、可扩展、可持久化的特点。它现在是Apache旗下的一个开源系统,作为hadoop生态系统的一部分,被各种商业公司广泛应用。它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/spark流式处理引擎。


    简介

    特性

    • 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒
    • 可扩展性:kafka集群支持热扩展
    • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
    • 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
    • 高并发:支持数千个客户端同时读写

    架构组件

    Kafka中发布订阅的对象是topic。我们可以为每类数据创建一个topic,把向topic发布消息的客户端称作producer,从topic订阅消息的客户端称作consumer。Producers和consumers可以同时从多个topic读写数据。一个kafka集群由一个或多个broker服务器组成,它负责持久化和备份具体的kafka消息。

    • Topic:消息存放的主题
    • Producer:生产者
    • Consumer:消费者
    • Broker:Kafka的服务实例
    • Replications:副本(kafka容错机制)
    • Partitions:分区(每个分区只能被一个消费者消费)
    • Leaders:选举partition中的副本为leader,负责处理读写
    • Follower: 未被选举为leader的副本为follower,负责备份数据

    备份机制

    kafka 0.8以后,提供了HA机制,就是replica副本机制。每个partition的数据都会同步到其他机器上,形成自己的多个replica副本。然后所有replica会选举一个leader出来,那么生产和消费都跟这个leader打交道,然后其他replica就是follower。写的时候,leader会负责把数据同步到所有follower上去,读的时候就直接读leader上数据即可。


    备份机制

    kafka常见问题

    1、消息幂等性(重复消费)

    重复消费只针对消费者端而言,消费者要保证消息的幂等性,一般要结合业务场景进行,主要有两种解决方案:
    1)redis:消费数据后把消息的唯一键存到redis中,每次消费的时候去redis查一下key是否存在
    2)mysql:消费数据后把消息的唯一键存到mysql中,每次消费的时候查mysql

    2、数据丢失

    • 消费者:消费者自动提交offset的时候会有数据丢失的情况,改为手动提交offset可解决,极端情况下数据处理完后提交offset的时候挂了,可通过加幂等性操作解决
    • kafka:kafka某个broker宕机,重新选举leader时有数据未同步时会有消息丢失的情况,可通过设置参数(保证数据写入到每个副本后才算写入成功)解决
    • 生产者:设置acks=all即可避免丢失数据

    3、顺序性

    • 生产者:生产者没有顺序性问题
    • kafka:partition内部有序,多个partition时无法保证顺序,对需要顺序消费的数据指定到同一个partition即可保证顺序
    • 消费者:同一个partition时,当消费者内部启用多线程时会导致顺序错乱,可在消费者内部启用内存队列来保证多线程的顺序

    相关文章

      网友评论

          本文标题:kafka简介

          本文链接:https://www.haomeiwen.com/subject/zuizlltx.html