kafka简介

在这里插入图片描述

一言蔽之

kafka诞生于LinkedIn,是其贡献的分布式高性能消息引擎服务【MQ】(如今其定位为一个分布式流处理平台

消息引擎系统

  • 消息引擎系统EMS:企业以一套标准消息规范屏蔽不同系统的差异,传递准确语义消息。

  • 设计因素:

    • 消息设计:结构 xml、json、file、binary
    • 传输协议:http、rpc、binary
  • 消息引擎范式

    • 消息队列:点对点
      在这里插入图片描述
    • 发布订阅:一对多
      在这里插入图片描述
    • java 消息服务:jms,作为api规范,提供很多接口实现用于实现分布式系统消息传递。大部分主流mq支持,kafka则没完全遵循。另辟蹊径。

设计概要

  1. 吞吐量/延时
    • 对于kafka而言,吞吐量就是每秒能处理的消息数目或者字节数
      • 页缓存
      • io交给os
      • 零拷贝sendfile
      • 追加写入日志,避免磁盘随机写寻址(高速
        • 固态与非固态
        • 顺序写和随机写
    • 延时表示客户端发起请求与服务器处理并响应给客户端的这段时间
      • micro-batch实现低延迟高吞吐
  2. 消息持久化
    • 解耦消息发送和消费
    • 实现灵活消息处理,消息重演
  3. 负载均衡和故障转移
    • 负载均衡, producer->topic(key hash)partition->consumer group均衡消费
      在这里插入图片描述
    • 故障转移,容错:
      • 集群controller 依靠zk,处理broker(isr)
      • consumer重平衡(随机,轮询,sticky)
        • 旧版本依赖zk
        • 新版本依赖group Coordinator
  4. 伸缩性
    • zk轻量级状态维护,元数据(topic,partition信息等)更新
      • kafka consumer注册的watcher就能感知所消费的partition列表和发现broker
      • broker用zk来注册broker以及监听分区leader存活

kafka基本术语

  • 消息
    • 二进制消息
    • bytebuffer+页缓存
  • topic和partition:topic-partition-message
    • 业务消息,topic代表一类消息,是个逻辑概念
    • partition可以理解成有序消息日志(夹着这一层提高吞吐
  • offset
    • kafka本质就是一个消息tuple(三元组)-> <tioic,partition,offset>
  • replica
    • partition副本
  • leader和follower:区别传统主备(mysql读写分离都提供服务),此类leader唯一对外服务,其余被动追随
    • 副本分为领导者
    • 追随者
  • ISR:in-sync replica
    • isr集合:所有replica同步leader
    • 交付语义:所有replica收到同一条消息,才算已提交
    • isr动态调整:由于各种原因,replica消息滞后,isr踢出,replica重新追上leader,纳入isr

应用场景FAQ
网站行为日志追踪用户行为都可以以消息形式发到kafka,用于行为分析或者优化网站
审计数据收集运维监控
日志收集企业分布式跨部门多应用产生日志,可以统一通过kafka输送到下游如hdfs
Event Sourcing用事件序列表示状态变更,【DDD领域驱动】。
流式处理纯净,轻应。对标【flink storm spark streaming】。应用于以kafka为系统总线的场景,此场景下,相比spark stream减少kafka消息拆分再组装的一些额外开销。

By mori.wang
vipshop.fcs
2019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值