Kafka入门-01


初始Kafka


1. Kafka是什么?

Kafka是Linkedin公司开发,是一个分布式,支持分区(Partition)、多副本(Replica),基于Zookeeper协调的分布式消息系统,目前kafka的定位是一个分布式流式处理平台。

Kafka扮演着三大角色:

  • 消息系统:Kafka和传统的消息统统都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能
  • 存储系统:Kafka的消息持久化和多副本机制,可以将Kafka作为长期的数据存储系统来使用
  • 流式处理平台:Kafka还为每个流行的流式处理框架提供了可靠的数据来源,完整的流式处理类库等

2. Kafka的一些使用场景

  • 日志收集:kafka可以收集各种服务log,以统一接口服务的方式开放给各种Consumer,比如:hadoop、hbase、solr等
  • 消息系统:Kafka是一个异步通信系统,解耦生产者和消费者、可持久化缓存消息等
  • 用户活动跟踪:记录web或app用户的各种活动,将这些活动信息发布到Kafka的Topic中,订阅者通过订阅这些Topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘
  • 运营指标:Kafka也经常用来记录运营监控数据,包括收集各种分布式应用的数据,比如报警和报告

3. Kafka体系结构

在这里插入图片描述

4. Kafka基本概念

名称解释
Broker消息中间件处理节点,Broker 可以简单地看成一个独立的kafka服务节点或Kafka实例,一个或多个Broker 组成kafka集群
Topickafka根据topic对消息进行分类,生产者发布到kafka中的消息都要指定Topic,消费者订阅topic并消费消息,topic是一个逻辑上的概念
Producer消息生产者,向Broker发送消息的客户端
Consumer消息消费者,采用Pull的方式向Broker获取消息的客户端
ConsumerGroup消费者组,一条消息可以被不同的ConsumerGroup消费,但是一个ConsumerGroup中只能被一个consumer消费该消息
Partition分区,物理上的概念,一个Topic中可以分成多个Partition,每个partition内部消息是有序的,同一个Topic下不同分区包含的信息是不同的,分区可分布在不同的Broker中
Replica多副本,同一个分区保存着多副本消息,从而提升容灾能力,副本之间是“一主多从”关系,lead副本负责处理读写请求,follower副本负责与leader副本的消息同步

5. 多副本架构

在这里插入图片描述

### Kafka 初学者指南 Apache Kafka 是一种分布式流处理平台,能够实现高吞吐量的消息传递以及实时数据管道和应用程序构建。以下是关于 Kafka 的一些基本概念及其入门方法: #### 什么是 Apache Kafka? Apache Kafka 是由 LinkedIn 开发并于 2011 年开源的一个分布式事件流平台[^1]。它被设计用于高效地处理大规模消息队列,并支持高并发读写操作。 #### Kafka 的核心组件 - **Topic**: 主题是一个逻辑上的分类器,用来区分不同类型的数据流。 - **Producer**: 生产者负责向指定的主题发送消息。 - **Consumer**: 消费者订阅主题并消费其中的消息。 - **Broker**: Kafka 集群中的服务器节点称为 Broker,它们存储生产者的记录并提供给消费者访问。 - **Partition**: Topic 被划分为多个分区 (Partitions),这些分区分布在不同的 Brokers 上以提高性能和可靠性。 #### 如何从零开始学习 Kafka? ##### 学习路径建议 1. **理解基础架构**:熟悉 Kafka 的整体结构、其主要组成部分(如 Producer, Consumer, Topics 和 Partitions)的工作原理。 2. **安装与配置 Kafka**:可以通过官方文档下载 Kafka 并设置本地环境来实践基础知识。 3. **编写简单的程序**: - 使用 Java 或其他支持的语言创建一个简单的生产者/消费者应用。 - 下面展示了一个基于 Spring Cloud Stream 构建的简单 Kafka 应用示例: ```java @SpringBootApplication public class KafkaApplication { public static void main(String[] args) { SpringApplication.run(KafkaApplication.class, args); } @Bean public ApplicationRunner runner(MessageChannel output) { return args -> { IntStream.range(0, 10).forEach(i -> output.send(MessageBuilder.withPayload("foo" + i).build())); }; } } ``` 4. **深入研究高级特性**:探索诸如事务、精确一次语义、Kafka Streams API 等更复杂的功能。 5. **部署到生产环境**:尝试将开发的应用程序迁移到 Kubernetes 这样的容器编排平台上运行。 #### 参考资源推荐 对于初学者来说,《Scala Programming For Beginners Complete Guide》虽然专注于 Scala 编程语言的学习[^2],但它也可以作为辅助材料帮助理解如何利用函数式编程风格简化复杂业务逻辑的设计思路;另外还可以关注社区分享的技术博客或者视频教程进一步巩固所学知识点[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值