(二)kafka从入门到精通之kafka的优势

简介: 咱们这篇内容主要是先来简单的认识一下kafka 的特性,以及常用mq的一些简单对比。

学习传送门

(一)kafka从入门到精通之初识kafka

一、常用消息队列比较

基于发布与订阅的消息系统那么多,为什么 Kafka 会是一个更好的选择呢?

咱们先来简单的看看mq的一个对比图吧。

特性 ActiveMQ RabbitMQ RocketMQ Kafka
生产者消费者模式 支持 支持 支持 支持
发布订阅模式 支持 支持 支持 支持
请求回应模式 支持 支持 不支持 不支持
Api完备性
多语言支持 支持 支持 java 支持
单机吞吐量 万级 万级 万级 十万级
消息延迟 微秒级 毫秒级 毫秒级
可用性 高(主从) 高(主从) 非常高(分布式) 非常高(分布式)
消息丢失 理论上不会丢失 理论上不会丢失
文档的完备性 教高
提供快速入门
社区活跃度
商业支持 商业云 商业云

从中可以看的出来,kafka在数据处理方面的优势还是很大的,下面咱们再来详细看看kafka都有哪些特性。

二、kafka特性

1、多个生产者

Kafka 可以无缝地支持多个生产者,不管客户端在使用单个主题还是多个主题。所以它很适合用来从多个前端系统收集数据,并以统一的格式对外提供数据,例如常见的埋点上报。

另外针对生产者模式,kafka也可以接受各种各样的数据源,最终都汇集到一个统一的消费者服务进行处理,这个在目前大数据处理场景中是至关重要的。

2、多个消费者

除了支持多个生产者外,Kafka 也支持多个消费者从一个单独的消息流上读取数据,而且消费者之间互不影响。这与其他队列系统不同,其他队列系统的消息一旦被一个客户端读取,其他客户端就无法再读取它。另外,多个消费者可以组成一个群组,它们共享一个消息流,并保证整个群组对每个给定的消息只处理一次。

不过需要额外注意的是,一般在一个消费组里面,一个topic的一个partition只能由一个消费者进行处理,也就是说不会存在群组内多个消费者同时读取一个partition的情况。这是保证一个partition内消息有序性的前提!

3、基于磁盘存储

Kafka 不仅支持多个消费者,还允许消费者非实时地读取消息,这要归功于 Kafka 的数据保留特性。消息被提交到磁盘,根据设置的保留规则进行保存。每个主题可以设置单独的保留规则,以便满足不同消费者的需求,各个主题可以保留不同数量的消息。消费者可能会因为处理速度慢或突发的流量高峰导致无法及时读取消息,而持久化数据可以保证数据不会丢失。消费者可以在进行应用程序维护时离线一小段时间,而无需担心消息丢失或堵塞在生产者端。消费者可以被关闭,但消息会继续保留在 Kafka 里。消费者可以从上次中断的地方继续处理消息。

一个topic内的消息是以partition为单位进行存储的,作为高可用架构的消息队列,一个partition也会存在多个副本进行数据备份容灾处理。磁盘存储也在一定程度上较低kafka的部署和运维成本。

还有个比较有意思的是:kafka之所以这么快完全归功于他的顺序写磁盘特性。

4、伸缩性

为了能够轻松处理大量数据,Kafka 从一开始就被设计成一个具有灵活伸缩性的系统,这在如今分布式系统中不可或缺的。用户在开发阶段可以先使用单个 broker,随着业务可以再扩展到包含 3 个 broker 的小型开发集群,然后随着数据量不断增长,部署到生产环境的集群可能包含上百个 broker。对在线集群进行扩展丝毫不影响整体系统的可用性。也就是说,一个包含多个 broker 的集群,即使个别 broker失效,仍然可以持续地为客户提供服务。

要提高集群的容错能力,那么就需要配置较高的复制系数。不过这也会影响消息写入的效率,所以在高可用和高性能之间还是要做出一定的抉择。

5、高性能

上面提到的所有特性,让 Kafka 成为了一个高性能的发布与订阅消息系统。通过横向扩展生产者、消费者和 broker,Kafka 可以轻松处理巨大的消息流。在处理大量数据的同时,它还能保证亚秒级的消息延迟。

三、总结

咱们这篇内容主要是先来简单的认识一下kafka 的特性,以及常用mq的一些简单对比。下一篇咱们来看看kafka的一些应用场景以及如何选择一个合适的消息队列。

目录
相关文章
|
2月前
|
消息中间件 监控 Kafka
Kafka 的特点和优势
Apache Kafka 作为一款分布式流处理平台,以其独特的特点和卓越的优势成为实时数据处理领域的瑰宝。本文将深入研究 Kafka 的各项特点和优势,并通过详实的示例代码展示其在不同场景下的强大应用。
|
5月前
|
消息中间件 存储 Kafka
(四)kafka从入门到精通之安装教程
Kafka是一个高性能、低延迟、分布式的分布式数据库,可以在分布式环境中实现数据的实时同步和分发。Zookeeper是一种开源的分布式数据存储系统,它可以在分布式环境中存储和管理数据库中的数据。它的主要作用是实现数据的实时同步和分发,可以用于实现分布式数据库、分布式文件系统、分布式日志系统等。Zookeeper的设计目标是高可用性、高性能、低延迟,它支持多种客户端协议,包括TCP和HTTP,可以方便地与其他分布式系统进行集成。
79 0
|
5月前
|
消息中间件 传感器 Kafka
(三)kafka从入门到精通之使用场景
Kafka 是一种流处理平台,主要用于处理大量数据流,如实时事件、日志文件和传感器数据等。Kafka的目的是实现高吞吐量、低延迟和高可用性的数据处理。Kafka提供了一个高度可扩展的架构,可以轻松地添加和删除节点,并且能够处理数百亿条消息/分区。Kafka的消息可以容错,即使某个节点失败,消息也会在集群中的其他节点上得到处理。总的来说,Kafka 是一个非常强大的数据处理平台,可以用于实时数据处理、日志文件处理、传感器数据处理和流处理等场景。
41 0
|
7月前
|
消息中间件 存储 数据采集
(一)kafka从入门到精通之初识kafka
消费者读取消息,消费者通过检查消息的偏移量来区分已经读取过的消息。消费者是消费者群组的一部分,说也就是说会有一个和多个消费者共同读取一个主题,群组保证每个分区只能被一个消费者使用。
76 0
|
9月前
|
消息中间件 存储 运维
带你读《企业级云原生白皮书项目实战》——4.1.2 消息队列RocketMQ版的优势
带你读《企业级云原生白皮书项目实战》——4.1.2 消息队列RocketMQ版的优势
215 0
|
9月前
|
消息中间件 存储 运维
带你读《企业级云原生白皮书项目实战》——4.1.5 消息队列Kafka版的优势
带你读《企业级云原生白皮书项目实战》——4.1.5 消息队列Kafka版的优势
360 0
|
消息中间件 监控 Kafka
Controller设计--Kafka从入门到精通(十五)
Controller设计--Kafka从入门到精通(十五)
|
消息中间件 存储 缓存
副本与ISR设计--Kafka从入门到精通(十四)
副本与ISR设计--Kafka从入门到精通(十四)
副本与ISR设计--Kafka从入门到精通(十四)
|
消息中间件 存储 安全
Broker消息设计--Kafka从入门到精通(十三)
Broker消息设计--Kafka从入门到精通(十三)
|
消息中间件 安全 Java
Consumer位移管理-Kafka从入门到精通(十一)
Consumer位移管理-Kafka从入门到精通(十一)

相关产品

  • 云迁移中心