前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Kafka核心概念入门

Apache Kafka核心概念入门

作者头像
哒呵呵
发布2018-09-18 12:27:27
4340
发布2018-09-18 12:27:27
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记
简介

Apache Kafka是一款基于日志的消息系统,后来Kafka发展成为了一个“distributed streaming platform”,包含了消息系统,存储系统和流处理系统三个功能。

核心特性:
  1. 发布订阅模式的消息系统
  2. 持久化存储(commit log)数据
  3. 在输入输出过程中实现流数据的转换
核心概念
  1. 分布式集群,消息存储副本
  2. 按照topic存储同一类型数据
  3. 每一条记录包含key,value和时间戳
核心API
  1. 生产者,负责推送数据到相应的Topic
  2. 消费者,订阅相关Topic,并进行消费
  3. Stream API,在Kafka的输入和输出间进行相应转换
  4. Connector API,包装了一层可复用的生产者和消费者代码
Topics and Logs

Topics是记录着生产者产生的同一类型数据,一个Topic可以有很多个订阅者。对于每个Topic都会维护着相应的partition,每一个partition都可以理解为一个日志(有序不可变只增持久化),每一条在partition的记录都会有一个序列ID(offset)和相应的有效期。消费者可以控制offset,拥有着决定权(意味着你可以从选择从一个特定的老offset消费),而Kafka的元数据会维护每个消费者当前消费的offset。使用partition的好处在于可以将一个Topic的数据分布到多个服务器,根据数据大小进行良好的切分。

Distribution

使用主从复制模式,基于Zookeeper的分布式算法实现一致性。

Geo-Replication

跨数据中心复制

Producers

生产数据到对应的partition,并且拥有Topic里的partition的选择权

Consumers

Consumer可以组成一个Consumer组,当所有的Consumer都在一个组里的时候,消息会根据复杂发到其中一个Consumer上,而拥有不同的组时,则是广播到所有的Consumer组其中一个Consumer。引入Consumer组的原因是为了容错,一旦组里的一个Consumer挂了,挂了的Consumer对应的partition会分配给其它的Consumer,当一个新的Consumer加入时会分担组内的消费partition的压力。相比于传统的queue,Consumer组弥补了一个queue里的数据一旦消费便不可复现的问题。但是Kafka只提供了单个Partition的有序性,而不保证多个Partition之间数据的有序性,所以要实现有序就必须保证一个Topic就只有一个Partition,而每一个Consumer组只有一个Consumer。

可靠性
  1. 确保同一个生产者发布的消息在Topic的单个partition是有序的。
  2. 一个消费者收到的消息与日志顺序相同。
  3. 当一个Topic拥有N个副本时,可以容忍N-1个副本的丢失。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 核心特性:
  • 核心概念
  • 核心API
  • Topics and Logs
  • Distribution
  • Geo-Replication
  • Producers
  • Consumers
  • 可靠性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档