zoukankan      html  css  js  c++  java
  • Kafka高可用及高性能原因

    一、Kafka的Topic主题

    Topic主题用来区分不同类型的消息,实际也就是适用于不同的业务场景,默认消息保存一周时间;

    同一个Topic主题下,默认是一个partition分区,也就是只能有一个消费者来消费,如果想提升消费能力,就需要增加分区;

    同一个Topic的多个分区,可以有三种方式分派消息(key,value)到不同的分区,指定分区、HASH路由、默认,同一个分区内的消息ID唯一、自增、顺序;

    消费者消费partition分区内的消息时,是通过offsert来标识消费的位置,消费掉的消息并不会立刻删除;

    二、重复消费或多消费者

    GroupId用来解决同一个Topic主题下重复消费问题,比如一条消费需要多个消费者接收到,就可以通过设置不同的GroupId实现;

    实际消息是存一份的,只是通过逻辑上设置标识来区分,系统会记录Topic主题下--》GroupId分组下--》partition分区下的offsert,来标识是否消费过。

    三、发送消息的高可用

    采用集群模式,多副本方式实现;一条消息的提交,可能通过设置acks标识实现不同的可用性,

    =0时,发送成功就OK;

    =1时,master成功响应才OK,

    =all时,一半以上的响应才OK(真正的高可用)

    四、消费消息的高可用

    通过关闭自动标识offsert模式,先拉取消息,消费完成后,再去设置offsert位置,来解决消费高可用;

    生产消费端需要幂等设计,防止确认失败,而造成的消息重复;

     五、Kafka高性能的原因

    单个partition内的消息是顺序读写,先进先出,消息ID是自增长,按ID分段成不同所Segment文件存储,检索快速;

    内存读写是零拷贝,使用了Linux的sendfile技术,减了用户态与内核态的内存拷贝移动次数;

    合理的要求是对我的锻炼,不合理的要求是对我的磨练!
  • 相关阅读:
    [国家集训队]数颜色 / 维护队列
    【模板】二逼平衡树(线段树+平衡树)
    jenkins实现接口自动化持续集成(python+pytest+ Allure+git)
    Locust快速上手指南
    缓解多分类的样本不均衡问题
    PlayStation@4功能介绍及测试应用
    APP专项测试-弱网测试
    游戏自动化测试-局内战斗
    Windows下JMeter分布式压测环境搭建
    基于simhash的文本去重原理
  • 原文地址:https://www.cnblogs.com/yefeng654321/p/12341704.html
Copyright © 2011-2022 走看看