栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kafka概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kafka概述

定义

Kafka最初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统,现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用。

Apache Kafka是一个分布式的发布-订阅消息系统,能够支撑海量数据的数据传递。在离线和实时的消息处理业务系统中,Kafka都有广泛的应用。Kafka将消息持久化到磁盘中,并对消息创建了备份保证了数据的安全。Kafka在保证了较高的处理速度的同时,又能保证数据处理的低延迟和数据的零丢失。

Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。

发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。

Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

特性

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

使用场景

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

技术优势

(1)可伸缩性:Kafka的两个重要特性造就了它的可伸缩性。
1)Kafka集群在运行期间可以轻松地扩展或收缩(可以添加或删除代理),而不会宕机。
2)可以扩展一个Kafka主题来包含更多分区。由于一个分区无法扩展到多个代理,所以它的容量受到代理磁盘空间的限制。能够增加分区和代理的数量意味着单个主题可以存储的数据量是没有限制的。
(2)容错性和可靠性:Kafka的设计方式使某个代理的故障能够被集群中的其他代理检测到。由于每个主题都可以在多个代理上复制,所以集群可以在不中断服务的情况下从此类故障中恢复并继续运行。
(3)吞吐量:代理能够以超快的速度有效地存储和检索数据。

消息队列

目前企业中比较常见的消息队列产品主要有Kafka、ActiveMQ、RabbitMQ、RocketMQ。

在大数据场景下主要采用Kafka作为消息队列。

传统消息队列的应用场景

传统的消息队列的主要应用场景包括:缓存/消峰、解耦和异步通信。

缓存/消峰:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

异步通信:允许用户把一个消息放入队列中,但并不立即处理它,然后在需要的时候再去处理它们。


异步通信:

消息队列的两种模式

(1)点对点模式:
消费者主动拉取数据,消息收到后清除消息。

(2)发布订阅模式:

  • 可以有多个topic主题(浏览、点赞、收藏、评论)。
  • 消费者消费数据后不删除数据。
  • 每个消费者相互独立,都可以消费到数据。
Kafka的基础架构


一台服务器不能存储100T数据,所以需要分而治之。

  • 为了方便扩展,并提高吞吐量,一个topic分为多个partition。

  • 配合分区的设计,提出消费者组的概念,组内每个消费者并行消费。

  • 为了提高可用性,为每个partition增加若干副本,类似于NameNode HA。

  • zookeeper中存放一些配置信息,例如Kafka服务器节点运行状态、,记录leader相关信息。Kafka2.8.0以后也可以配置不采用zookeeper。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/918564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号