Kafka学习笔记(1)简介

本文探讨了Kafka作为分布式消息队列在大数据实时处理中的重要性,介绍了消息系统的分类(P2P与发布/订阅)、适用场景如解耦、冗余和扩展性,以及RabbitMQ、Redis、ZeroMQ、ActiveMQ等常见系统对比。重点聚焦Kafka的设计目标,包括高吞吐、持久化、分布式和适应流批处理的能力。
摘要由CSDN通过智能技术生成

一个分布式的基于发布\订阅模式的消息队列,主要应用与大数据实时处理领域。

1.1 消息系统的分类

  • Peer-to-Peer(点对点)

    • 一般基于pull或者polling接收消息
    • 发送到队列中的消息被一个而且仅一个接收者接收,即使有多个接收者在同一队列中侦听同一消息
    • 既支持异步“即发即弃”的消息传送方式,也支持同步请求/应答传送方式
      在这里插入图片描述
  • 发布/订阅

    • 发布到一个主题的消息,可被多个订阅者锁接收
    • 发布/订阅即可基于push消费数据,也可基于pull或者polling消费数据
    • 解耦能力比P2P更强
      在这里插入图片描述

1.2 消息系统适用的场景

  • 解耦:各系统间通过消息系统这个统一接口进行数据交换,无需了解彼此的存在
  • 冗余:部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险
  • 扩展:消息系统是一个统一的数据接口,各系统可独立扩展
  • 峰值处理能力:消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求
  • 可恢复性:系统中部分组件失效并不会影响整个系统,他恢复后仍然可从消息系统中获取并处理数据
  • 异步通信:在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理

1.3 常用消息系统的对比

  • RabbitMQErlang编写,支持多协议AMQPXMPPSMTPSTOMP,支持负载均衡,数据持久化,同时支持peer-to-peer和发布\订阅模式
  • Redis:基于key-value键值对的nosql数据库,同时支持MQ功能,可用于轻量级队列服务适用,就入队操作来说,当数据小于10kb时,redis性能优于RabbitMQ
  • ZeroMQ:轻量级,不需要单独的消息服务器或中间件,应用程序本身扮演该角色,peer-to-peer,其本质是一个库,需要开发人员组合多种技术实现,复杂度比较高
  • ActiveMQjms实现,peer-to-peer,支持持久化,XA事务
  • Kafka:高性能跨语言的分布式发布\订阅消息系统,数据持久化,全分布式,同时支持在线和离线处理
  • RocketMQ:纯java实现,发布\订阅消息系统,支持本地事务及XA分布式事务

1.4 Kafka的设计目标

  • 高吞吐率:在廉价的机器上单机可支持每秒100万条消息的读写
  • 消息持久化:所有消息均被持久化到磁盘,无消息丢失,支持消息重放
  • 完全分布式:Producer`Broker\Consumer`均支持水平扩展
  • 同时满足适应在线流处理和离线批处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小达人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值