• Kafka 分布式消息队列介绍


    Kafka 分布式消息队列 类似产品有JBoss、MQ

    一、由Linkedln 开源,使用scala开发,有如下几个特点:

    (1)高吞吐

    (2)分布式

    (3)支持多语言客户端 (C++、Java)

    二、组成: 客户端是 producer 和 consumer,提供一些API,服务器端是Broker,客户端提供可以向Broker内发布消息、消费消息,服务器端提供消息的存储等功能

    Kafka 特点是支持分区、分布式、可拓展性强

    三、Kafka 的消息分几个层次

    (1)Topic 一类主题

    (2)Partition 默认每个消息有2个分区,创建Topic可以指定分区数,1天有 1亿行可以分8个分区,如果每天几十万行就一个分区吧

    (3)Message 是每个消息

    四、数据处理流程

    1.生产者 生产消息、将消息发布到指定的topic分区

    2.kafka 集群接收到producer发过来的消息后,将其持久化到硬盘,可以指定时长,而不关注消息是否被消费

    3.consumer从kafka集群pull或push方式,并控制获取消息的offset偏移量,consumer重启时需要根据offset开始再次消费数据,consumer自己维护offset

    五、kafka如何实现高吞吐量

    1.充分利用磁盘的顺序读写
    2.数据批量发送
    3.数据压缩
    4.Topic划分多个partition

    六、kafka 如何实现load balance &HA

    1)producer 根据用户指定的算法,将消息发送到指定的partition
    2)存在多个partition,每个partition存在多个副本replica,每个replica分布在不同的broker节点上
    3)每个partition需要选取lead partition,leader partition负责读写,并由zookeeper负责fail over 快速失败
    4)通过zookeeper管理broker与consumer的动态加入与离开

    七、扩容

    当需要增加broker节点时,新增的broker会向zookeeper注册,而producer及consumer会根据zookeeper上的watcher感知这些变化,并及时作出调整

  • 相关阅读:
    Live2d Test Env
    Live2d Test Env
    Live2d Test Env
    图神经网络入门
    CommandLineRunner 可能会导致你的应用宕机停止,我劝你耗子尾汁
    不使用 MQ 如何实现 pub/sub 场景?
    为什么 @Value 可以获取配置中心的值?
    vite + ts 快速搭建 vue3 项目 以及介绍相关特性
    给 Mac 添加右键菜单「使用 VSCode 打开」
    【Python】连接常用数据库
  • 原文地址:https://www.cnblogs.com/405845829qq/p/4477728.html
Copyright © 2020-2023  润新知