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的消费能力
    以适当的速率消费消息。

  • 相关阅读:
    9 种数据库中Select Top的使用方法 (只显示数据库的前几条记录)(Oracle、Infomix、DB2、SQL Server、Access、Sybase、MySQL、FoxPro、Sqlite)
    Delphi Treeview用法介绍
    TTreeView、TTreeNodes和TTreeNode
    delphi中TreeView使用
    Delphi 中多线程同步的一些处理方法
    delphi 中几种多线程操作方式
    Delphi 多线程介绍,以及线程类TThread 分析
    Delphi TTcpClient 和 TTcpServer 类 (TBaseSocket、TIpSocket、TCustomIPClient、TTcpClient、TUdpSocket、TRawSocket、TCustomTcpServer、TTcpServer) 介绍
    用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割
    通过Mellanox ConnectX NIC使用XDP加速
  • 原文地址:https://www.cnblogs.com/fansik/p/7171400.html
Copyright © 2011-2022 走看看