当前位置: 首页 > news >正文

Kafka入门

1. Kafka简介

alt

Apache Kafka 是LinkedIn公司开发的一款开源的高吞吐、分布式的消息队列系统,它具有高伸缩性、高可靠性和低延迟等特点,因此在大型数据处理场景中备受青睐。Kafka 可以处理多种类型的数据,如事件、日志、指标等,广泛应用于实时数据流处理、日志收集、监控和分析等领域。

2. 设计架构

  • Producer :消息生产者,就是向 kafka broker 发消息的客户端。
  • Consumer :消息消费者,向 kafka broker 取消息的客户端。
  • Topic :一个Topic是消息的分类或主题,它是Kafka中进行消息发布和订阅的基本单位。Producer(生产者)将消息发布到一个或多个Topic,而Consumer(消费者)订阅一个或多个Topic并消费其中的消息。
  • Consumer Group:这是 kafka 用来实现一个 topic 消息的广播(发给所有的 consumer)和单播(发给任意一个 consumer)的手段。一个 topic 可以有多个 Consumer Group。
  • Broker:一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。
  • Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker上,每个 partition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的id(offset)。将消息发给 consumer,kafka 只保证按一个 partition 中的消息的顺序,不保证一个 topic 的整体(多个 partition 间)的顺序。
  • Offset:kafka 的存储文件都是按照 offset.kafka 来命名,用 offset 做名字的好处是方便查找。例如你想找位于 2049 的位置,只要找到 2048.kafka 的文件即可。当然 the first offset 就是 00000000000.kafka。
alt
alt

3. Kafka特点

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

4. 使用场景

  1. 日志收集:可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、HBase、Solr等。
  2. 消息系统:解耦和生产者和消费者、缓存消息等。
  3. 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
  4. 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
  5. 流式处理:比如spark streaming和 Flink。
  6. 系统解耦:在重要操作完成后,发送消息,由别的服务系统来完成其他操作
  7. 流量削峰:一般用于秒杀或抢购活动中,来缓冲网站短时间内高流量带来的压力
  8. 异步处理:通过异步处理机制,可以把一个消息放入队列中,但不立即处理它,在需要的时候再进行处理

5. 安装、配置和启动Kafka

要安装、配置和启动Kafka,请按照以下步骤进行操作:

  1. 下载Kafka:从Apache Kafka官网下载最新版本的Kafka,并解压到本地目录。

  2. 配置Kafka:编辑Kafka的配置文件(config/server.properties),根据需求修改以下配置项:

    • advertised.listeners:Kafka Broker的地址和端口配置。
    • zookeeper.connect:ZooKeeper的地址和端口配置。
  3. 启动ZooKeeper:打开一个终端窗口,启动ZooKeeper服务器:bin/zookeeper-server-start.sh config/zookeeper.properties

  4. 启动Kafka Broker:在另一个终端窗口中,启动Kafka Broker服务器:bin/kafka-server-start.sh config/server.properties

顶尖架构师栈

关注回复关键字

【C01】超10G后端学习面试资源

【IDEA】最新IDEA激活工具和码及教程

【JetBrains软件名】 最新软件激活工具和码及教程

工具&码&教程

本文由 mdnice 多平台发布

http://www.lryc.cn/news/176179.html

相关文章:

  • 异地恋的甜蜜解药:李哥的群晖Videostation电影分享教程
  • JSON数据获取指南!
  • ASCII码-对照表
  • 点餐小程序的制作流程详解
  • Python应用程序:从Android日志到Excel文件的智能过滤和输出
  • C++常见面试题汇总
  • redis缓存穿透问题
  • 学生宿舍管理系统(前端java+后端Vue)实现-含前端与后端程序
  • codesys【网桥】
  • JS生成随机字符串的多种方法
  • 多维时序 | MATLAB实现GWO-BP多变量时间序列预测(灰狼算法优化BP神经网络)
  • PyTorch中的pyi檔案生成機制
  • GeoServer运行报错503,……Unmapped relationship: 7
  • uniapp ui安装 阿里图标库使用 报错 Assignment to constant variable.
  • Spring IOC容器实例化Bean整体流程图
  • 【挑战开发100个项目 | 2. C语言图书管理系统】
  • 二刷力扣--二叉树(2)
  • 【C++ Efficiency】使用运算符的复合形式取代其单独形式,效率更高
  • uview的真机演示,微信小程序,当两个input框的时候,从一个input切换到两一个input的时候,键盘调不起来
  • 信息化发展58
  • 2023前端面试题
  • Spring整合第三方框架-MyBatis原始操作代码
  • 比特币 ZK 赏金系列:第 2 部分——查找哈希冲突
  • Android9底部导航栏出现空白按钮问题分析
  • 秦时明月沧海手游阵容推荐,秦时明月沧海角色强度
  • 基于微信小程序的大学生科技竞赛竞技报名系统设计与实现(源码+lw+部署文档+讲解等)
  • crypto:摩丝
  • Docker最基本使用
  • vue2.x 迭代更新项目去掉缓存处理
  • Linux高性能服务器编程 学习笔记 第八章 高性能服务器程序框架