zoukankan      html  css  js  c++  java
  • Kafka的架构

    1、Kafka整体架构
        一个典型的Kafka集群中包含若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等),
    若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干consumer group,以及一个zookeeper集群。
    Kafka通过zookeeper管理集群配置,选举leader,以及在consumer group发生变化时进行平衡。producer使用push模式将消息
    发布到broker,consumer使用pull模式从broker订阅并消费消息。

    2、Topic & Partition
        Kafka提供一个抽象概念:topic
        一个topic是对一组消息的归纳,对每个toopic,Kafka对他的日志进行了分区

    3、Kafka的特性
    (1)、Kafka高吞吐率的原因,顺序读写
    (2)、Kafka的吞吐率可以水平扩展
    (3)、Kafka的消息可以被保存
    (4)、在发送一条消息是,也可以指定这条消息的key,producer根据这个key和partition机制来判断将这条消息发送到哪个partiton。
    (5)、一般情况下partition数量大于broker的数量,并且所有partition的leader均匀分布在broker上。
    4、如何确定Topic/Patition的数量
    (1)越多的分区可以提供更高的吞吐量
    (2)越多的分区需要打开更多的文件句柄
    (3)更多的分区会导致更高的不可用性
    (4)更多分区可能增加端对端的延迟
    (5)更多的分区意味着需要客户端需要更多的内存
    5、Producer
        Producer将消息发布到制定的topic中,并负责决定发布到哪个分区,通常简单的由负载均衡机制随机选择分区,
    但也可以通过特定的分区函数(key值)选择分区,使用更多的是第二种
    6、Sync Producer & Async Producer
    Sync 同步模式
        生产一条消息,消费一条消息
    Async 异步模式
        生产者将生产消息放到队列缓冲中,消费者从缓冲区去中去取消息
    7、Consumer/consumer group
        每一个consumer实例都属于一个cousumer group,每一条消息会被同一个consumer group里的一个consumer实例消费。
    不同consumer group可以同时消费一条消息

    8、Push & Pull
        producer向broker push消息,consumer从broker pull消息。push模式和pull模式各有优劣
        push模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。push模式的目标是尽可能以最快速度传递消息
    但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力
    以适当的速率消费消息。

  • 相关阅读:
    FileZilla Server下载及安装
    FileZilla Server设置虚拟目录
    FileZilla Server超详细配置
    Freaktab将于12月底关闭
    Thinkpad笔记本指点杆(小红点)自动漂移的问题
    STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解)
    STC12C5A56S2和DS12C887做的电子闹铃
    联盛德 HLKW806 (九): 软件SPI和硬件SPI驱动ST7789V液晶LCD
    联盛德 HLKW806 (六): I2C驱动SSD1306 128x64 OLED液晶屏
    联盛德 HLKW806 (五): W801开发板上手报告
  • 原文地址:https://www.cnblogs.com/fansik/p/7171400.html
Copyright © 2011-2022 走看看