zoukankan      html  css  js  c++  java
  • 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感知这些变化,并及时作出调整

  • 相关阅读:
    Linux小命了(6)cd
    Linux小命令(5)mkdir
    性能测试(1)-开篇杂谈
    Linux小命令(4)ls
    Linux小命令(3)cat
    Linux小命令(2)man
    机器学习-学习方法
    flask-cache
    mysql 常用时间函数
    发现变化,拥抱变化
  • 原文地址:https://www.cnblogs.com/oftenlin/p/4045924.html
Copyright © 2011-2022 走看看