zoukankan      html  css  js  c++  java
  • Kafka

    一、Kafka回顾

    1、AMQP协议

         消息队列中消息交互规范,多数分布式消息中间件基于该协议进行消息传输

    2、Broker

         对于kafka,将生产者发送的消息,动态的添加到磁盘,一个Broker等同于一个kafka应用实例,用于存放消息队列

    3、主题:分区:消息

         一个分区(Patition)等同于一个消息队列,存放n条消息;一个主题(Topic)包括多个分区

    二、常用分布式消息中间件特性对比

    1、事务

         在消息系统中,事务指多条消息一起发送时,要么全部发送成功,或全部回滚,不可能一部分成功,一部分失败

    2、负载

         大量的生产者和消费者向消息系统发送请求,消息系统必须能够均衡这些请求到n台服务器。

    3、动态扩容

         系统或服务不支持动态扩容,就意味着当访问量大于当前集群可处理数量时,不得不停止服务,反之,kafka支持zk管理集群,增加或减少一台服务器,并不影响生产环境的服务,从而达到扩容效果

         高吞吐量、高水平扩展

    三、Kafka消费者模型

         Kafka消息系统基于发布-订阅模式,相对于ActiveMQ,没有点对点消息处理机制。

    1、分区消费模型

         2个kafka 服务器,4个分区(P0-P3) ,分区消费模型即为:1个分区对应1个消费实例,如图4个分区,需要4个消费者实例从分区中取数据。

    2、分区消费编码思路

        (1)获取分区的size,一共多少个分区;

        (2)针对每一个分区,分别创建一个线程,去消费该分区的数据

        (3)每个线程即为一个消费者实例,通过连接;执行消费者构建;消费offset (偏移量);记录消息偏移量。

    3、组消费模型

         同样4个分区,P0-P3,这里使用GroupA,GroupB,GroupA可获取0,3,1,2分区的数据,GourpB也是。分组消费模型中,每个组都能拿到kafka集群当前全量数据。

    4、组消费实现思路

      (1)获取group里有多少个consumer实例

      (2)根据实例个数,创建线程

      (3)执行run方法,启动消费

    四、Kafka生产者模型

    1、同步生产模型

         发送一条消息,如果没有收到kafka集群的确认收到的信号,则再次重发,直到发送次数超过设置的最大次数为止。其中有一次收到了确认,就接着发送下一条消息。

    2、异步生产模型

         消息发送到客户端的缓冲队列中,如果队列中条数到了设置的队列最大数或存放时间达到最大值,就把队列中的消息打包,一次性发送给kafka服务端。

    3、同步、异步对比

    同步生产模型:

    (1)低消息丢失率;

    (2)高消息重复率;

    (3)高延迟,低吞吐量,每发一条,都要等着确认之后才继续发下一条

    异步生产模型:

    (1)低延迟;

    (2)高发送性能;

    (3)高消息丢失率(无确认机制,发送端队列满),不等待确认就直接发下一个,如果发送的队列已经满了,那接着发的消息就全丢失。另外队列满了发送给服务器,也无确认机制,整个队列就丢了。

    4、应用场景

         要求不能丢消息,对吞吐量没要求,使用同步

         日志处理等,丢了几条也可接受,但对吞吐量要求极高,采用异步

  • 相关阅读:
    第十五章:字段与属性
    第二十章:封装与继承
    第二十一章;泛型List
    第十九章:对象初始化器
    第十八章:构造方式
    第十七章:方法的重载
    request和response对象常用方法
    面向对象(1)
    request和response
    tomcat
  • 原文地址:https://www.cnblogs.com/Lzf127/p/8707833.html
Copyright © 2011-2022 走看看