消息中间件系列教程(19) -Kafka-简介

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 消息中间件系列教程(19) -Kafka-简介

1. Kafaka简介

Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。

它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。

注意Kafka并没有遵循JMS规范,它只提供了发布和订阅通讯方式。

kafka中文官网:http://kafka.apachecn.org/quickstart.html

2. Kafka 优点

  • 「高吞吐量、低延迟」:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
  • 「可扩展性」:kafka集群支持热扩展
  • 「持久性、可靠性」:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。
  • 「容错性」:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)。
  • 「高并发」:支持数千个客户端同时读写。

3. Kafka的使用场景

  • 「日志收集」:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
  • 「消息系统」:解耦和生产者和消费者、缓存消息等。
  • 「用户活动跟踪」:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
  • 「运营指标」:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
  • 「流式处理」:比如spark streaming和storm。
  • 「事件源」

4. Kafka相关概念名称

  • 「Broker」:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。
  • 「Topic」:一类消息,消息存放的目录即主题,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
  • 「massage」: Kafka中最基本的传递对象。
  • 「Partition」:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。
  • 「Segment」:partition物理上由多个segment组成,每个Segment存着message信息。
  • 「Producer」 : 生产者,生产message发送到topic。
  • 「Consumer」 : 消费者,订阅topic并消费message, consumer作为一个线程来消费。
  • 「Consumer Group」:消费者组,一个Consumer Group包含多个consumer。
  • 「Offset」:偏移量,理解为消息partition中的索引即可。

5. Kafka存储策略

1.kafka以topic来进行消息管理,每个topic包含多个partition,每个partition对应一个逻辑log,有多个segment组成。

2.每个segment中存储多条消息(见下图),消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。

3.每个part在内存中对应一个index,记录每个segment中的第一条消息偏移。

4.发布者发到某个topic的消息会被均匀的分布到多个partition上(或根据用户指定的路由规则进行分布),broker收到发布消息往对应partition的最后一个segment上添加该消息,当某个segment上的消息条数达到配置值或消息发布时间超过阈值时,segment上的消息会被flush到磁盘,只有flush到磁盘上的消息订阅者才能订阅到,segment达到一定的大小后将不会再往该segment写数据,broker会创建新的segment。

6. Kafka架构原理

kafka生产者发送消息原理:

目录
相关文章
|
6月前
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
1693 0
|
20天前
|
消息中间件 缓存 监控
go高并发之路——消息中间件kafka
本文介绍了高并发业务中的流量高峰应对措施,重点讲解了Kafka消息中间件的使用,包括常用的Go语言库sarama及其版本问题,以及Kafka的版本选择建议。文中还详细解释了Kafka生产者的四种分区策略:轮询、随机、按Key和指定分区,并提供了相应的代码示例。
go高并发之路——消息中间件kafka
|
2月前
|
消息中间件 中间件 Kafka
解锁Kafka等消息队列中间件的测试之道
在这个数字化时代,分布式系统和消息队列中间件(如Kafka、RabbitMQ)已成为日常工作的核心组件。本次公开课由前字节跳动资深专家KK老师主讲,深入解析消息队列的基本原理、架构及测试要点,涵盖功能、性能、可靠性、安全性和兼容性测试,并探讨其主要应用场景,如应用解耦、异步处理和限流削峰。课程最后设有互动答疑环节,助你全面掌握消息队列的测试方法。
|
2月前
|
消息中间件 Kafka API
|
3月前
|
消息中间件 Kafka API
kafka使用教程
kafka使用教程
|
6月前
|
消息中间件 存储 Kafka
go语言并发实战——日志收集系统(二) Kafka简介
go语言并发实战——日志收集系统(二) Kafka简介
134 1
|
5月前
|
消息中间件 NoSQL Kafka
消息中间件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之间的区别
消息中间件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之间的区别
|
6月前
|
消息中间件 Java Kafka
教程:Spring Boot集成Kafka Streams流处理框架
教程:Spring Boot集成Kafka Streams流处理框架
|
2月前
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
103 1
|
2月前
|
消息中间件 Java Kafka
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
58 1

热门文章

最新文章