• 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感知这些变化,并及时作出调整

  • 相关阅读:
    js递归函数使用介绍
    js获取checkbox复选框获取选中的选项
    分享:Oracle 系统变量函数用法说明
    jQuery CSS()方法改变CSS样式实例解析
    jQuery添加/改变/移除CSS类
    php实现文件下载代码一例
    jquery 获取URL参数并转码的例子
    Python无限元素列表实例教程
    MSSQL数据导出到MYSQL
    .NET CORE控制器里的方法取传参的坑
  • 原文地址:https://www.cnblogs.com/oftenlin/p/4045924.html
Copyright © 2020-2023  润新知