前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka设计与原理

Kafka设计与原理

作者头像
用户5252199
发布2022-04-18 18:38:07
2090
发布2022-04-18 18:38:07
举报

Kafka基础介绍

Kafka是LinkedIn在2010年开发的分布式消息系统• 使用于LinkedIn的活动流和运营数据处理的管道

• 使用Scala&Java语言编写 • 并于2011年成为Apache的开源项目

• 具有分布式/高性能/高吞吐/水平扩展等特性• 支持发布/订阅&点对点模式的分布式消息系统

• 0.9之后支持StreamsAPI

• 支持主流编程语言的API调用[C++/Python/Go/Ruby/PHP/…]

Kafka版本演进(一)

kafka版本演进(二)

Kafka基础概念

Kafka的优点及场景(一)

分布式/可分区,具有消息复制和容错系统 [可靠性]

- 可以水平扩展,对不同Topic的不同处理 [扩展性]

- 发送和消息具有高吞吐量,压测最低10w/s主要瓶颈在网络IO[高性能]

- 支持批量消费,批量提交offset,快速落盘 [高可用性]

优点及场景(二)

监控系统

处理可监控的数据,可实时进行消息的处理计算

日志处理

Application 批量,异步发送日志/行为数据

流式处理

可以流式读取数据,支持Storm/Spark/Kafka Steaming

消息得生产实例&原理(一)

生产者-发送/发布消息的一端

消息的生产&原理(二)

消息的生产&原理(三)

消息的消费实例&原理(一)

消息的消费实例&原理(二)

消费规则:

一个Partition只能被同一个ConsumerGroup的一个线程消费

线程数小于partition数,可能会消费多个Partition

同一个partition保证是有序消费的

0.9之前consumer依赖zk,0.9之后直接链接kafka的Coordinator

消息的消费&原理(三)

数据的持久化机制-PARTITION

  • Kafka数据存储单元-Partition
  • 一个Partition对应一个文件夹
  • Partition中分为多个Segment
  • Segment的命名为offset.logSegment对应一个ofset.Index文件[记录offset的磁盘位置]

数据存储结构

数据存储示意图:

Segment file中index与log文件的对应关系图 [摘自网络]

Message物理结构图

Kafka 消息传递保证

At most once [最多一次]

At least once [至少一次]

Exacty once [正好一次]

Kafka 默认机制是 At least once ,用户可以选择处理一批数据之后批量提交offset来实现“Exacty once”

副本因子(REPLICATION)

Kafka将每个Partition复制到多个Server上,每一个Partition都有一个leader和多个follower[多机备份]

当一个leader挂掉之后,通过选举选择follower中一个作为leader[去中心化]

ZK中通过ISR维护着所有Follower,Follower通过Tcp与ZK保持心跳

副本因子

KAFKA逻辑架构设计

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术博文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档