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

  • 相关阅读:
    IOS sqlite数据库增删改查
    宏定义偷懒型set,get
    创业白手起家也须要条件——北漂18年(14)
    Python模拟登录wap版百度贴吧+自己主动回贴
    纯CSS制作冒泡提示框
    tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)
    ZOJ 3587 扩展KMP
    用选择法对10个整数按从小到大排序(数组)
    设计一个算法,推断一个二叉树是否为全然二叉树
    Hibernate学习笔记(八) — 懒载入与抓取策略
  • 原文地址:https://www.cnblogs.com/fansik/p/7171400.html
Copyright © 2011-2022 走看看