kafka

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: kafka

一、消息队列介绍

1.1 为什么需要消息队列 (MQ)

主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,

导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection 错误,引发雪崩效应。


我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队列常应用于异步处理,流量削峰,应用解耦,

消息通讯等场景当前比较常见的 MQ 中间件有 ActiveMQ、RabbitMQ、RocketMQ、Kafka等。


1.2 使用消息队列的好处

(1)解耦

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


(2)可恢复性

系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。


(3)缓冲

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


(4)灵活性 & 峰值处理能力

在访问量剧增的情况下, 应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。 使用消息队列能够使关键组件顶住突发的访问压力, 而不会因为突发的超负荷的请求而完全崩溃。


(5)异步通信很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制, 允许用户把一个消息放入队列, 但并不立即处理它。 想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。


1.3 消息队列的两种模式

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

消息生产者生产消息发送到消息队列中, 然后消息消费者从消息队列中取出并且消费消息。 消息被消费以后,

消息队列中不再有存储,所以消息消费者不可能消费到已经被消费的消息。消息队列支持存在多个消费者, 但是

对一个消息而言,只会有一个消费者可以消费。


(2)发布/订阅模式(一对多, 又叫观察者模式,消费者消费数据之后不会清除消息)

消息生产者 (发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。

发布/订阅模式是定义对象间一种—对多的依赖关系,使得每当一个对象(目标对象)的状态发生改变,则所有依赖干它的对象(观察者对象)都会得到通知并自动更新。


二、Kafka相关介绍

2.1 Kafka定义

Kafka 是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据实时处理领域。


2.2 Kafka简介

Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于 Zookeeper协调的分布式消息中间件系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如基于 hadoop的批处理系统、低延迟的实时系统、Spark/Flink 流式处理引擎,nginx 访问日志,消息服务等等,用 scala 语言编写, Linkedin 于 2010 年贡献给了 Apache 基金会并成为顶级开源项目。


2.3 Kafka的特性

高吞吐量、低延迟

Kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒。每个 topic 可以分多个 Partition,Consumer Group 对 Partition 进行消费操作,提高负载均衡能力和消费能力。


可扩展性

kafka 集群支持热扩展


持久性、可靠性

消息被持久化到本地磁盘,并且支持数据备份防止数据丢失


容错性

允许集群中节点失败(多副本情况下,若副本数量为 n,则允许 n-1 个节点失败)


高并发

支持数干个客户端同时读写


三、安装kafka群集

第一台zookeeper安装kafka:

1.解压并改名

tar xf kafka_2.11-2.2.1.tgz 
mv kafka_2.11-2.2.1 /usr/local/kafka


2.修改配置

cd /usr/local/kafka/config/
cp server.properties server.properties.bak
vim server.properties
broker.id=1
listeners=PLAINTEXT://192.168.8.10:9092
log.dirs=/usr/local/kafka/logs
zookeeper.connect=192.168.8.10:2181,192.168.8.20:2181,192.168.8.30:2181
zookeeper.connection.timeout.ms=60000


3.复制kafka目录到其他服务器

scp -rp /usr/local/kafka/ root@192.168.8.20:/usr/local/
scp -rp /usr/local/kafka/ root@192.168.8.30:/usr/local/

第二台zookeeper安装kafka:

cd /usr/local/kafka/config/
vim server.properties
broker.id=2
listeners=PLAINTEXT://192.168.8.20:9092


第三台zookeeper安装kafka:

cd /usr/local/kafka/config/
vim server.properties
broker.id=3
listeners=PLAINTEXT://192.168.8.30:9092


三台服务器启动kafka服务:

cd /usr/local/kafka/bin
./kafka-server-start.sh  ../config/server.properties   &

在第一台服务器发布消息:

cd /usr/local/kafka/bin
./kafka-console-producer.sh --broker-list 192.168.8.10:9092,192.168.8.20:9092,192.168.8.30:9092 --topic test


在第二台服务器订阅消息:

cd /usr/local/kafka/bin 
./kafka-console-consumer.sh --bootstrap-server 192.168.8.10:9092,192.168.8.20:9092,192.168.8.30:9092 --topic test --from-beginning
相关文章
|
5月前
|
消息中间件 存储 大数据
阿里云消息队列 Kafka 架构及典型应用场景
阿里云消息队列 Kafka 是一款基于 Apache Kafka 的分布式消息中间件,支持消息发布与订阅模型,满足微服务解耦、大数据处理及实时流数据分析需求。其通过存算分离架构优化成本与性能,提供基础版、标准版和专业版三种 Serverless 版本,分别适用于不同业务场景,最高 SLA 达 99.99%。阿里云 Kafka 还具备弹性扩容、多可用区部署、冷热数据缓存隔离等特性,并支持与 Flink、MaxCompute 等生态工具无缝集成,广泛应用于用户行为分析、数据入库等场景,显著提升数据处理效率与实时性。
|
缓存 IDE Shell
【Shell 命令集合 系统设置 】Linux 重置终端的显示 reset命令 使用指南
【Shell 命令集合 系统设置 】Linux 重置终端的显示 reset命令 使用指南
516 0
|
消息中间件 存储 监控
【最佳实践】Beats导入RabbitMQ日志至阿里云Elatic Stack实现可视化分析
RabbitMQ是一个开放源消息代理,创建于2007年以实现 AMQP,并且在过去的十二年中,不断增加插件列表,目前已包括 HTTP,STOMP,SMTP 和其他协议。它也是 Kafka 的一个强劲的竞争者。
1988 0
【最佳实践】Beats导入RabbitMQ日志至阿里云Elatic Stack实现可视化分析
|
存储 弹性计算 关系型数据库
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
在我们选择阿里云服务器系统盘和数据盘时,如果是选择ESSD云盘,还需要选择云盘的云盘性能级别PL,PL性能级别有PL3、PL2、PL1、PL0四个性能级别的云盘规格,如果是通过阿里云的活动来购买云服务器的话,由于系统盘默认一般为20G或40G容量,可选的PL性能级别通常只有PL0(单盘IOPS性能上限1万)和PL1(单盘IOPS性能上限5万)可选择,有的用户肯能并不清楚ESSD云盘的性能等级之间有何区别,单盘IOPS性能指的是什么,本文为大家介绍一下ESSD云盘的云盘性能级别PL3、PL2、PL1、PL0相关知识点。
阿里云服务器ESSD云盘性能等级PL0、PL1、PL2、PL3区别,云盘性能级别PL知识点参考
|
6月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
500 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
2月前
|
存储 前端开发 关系型数据库
终于有人把数据仓库讲明白了
数据仓库不是大号数据库,更不是BI附属品。它通过整合多源数据、统一标准,让数据更易查、易用,真正服务于业务分析与决策。本文带你厘清数据仓库的本质、架构与搭建步骤,避开常见误区,实现数据价值最大化。
终于有人把数据仓库讲明白了
|
4月前
|
JSON 数据挖掘 API
闲鱼商品列表API响应数据python解析
闲鱼商品列表API(Goodfish.item_list)提供标准化数据接口,支持GET请求,返回商品标题、价格、图片、卖家信息等。适用于电商比价、数据分析,支持多语言调用,附Python示例代码,便于开发者快速集成。
|
存储 Kubernetes 持续交付
k8s学习
【10月更文挑战第1天】
490 4
|
消息中间件 存储 关系型数据库
实时计算 Flink版产品使用问题之如何使用Kafka Connector将数据写入到Kafka
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
测试技术
如何使用 JUnit 测试方法是否存在异常
【8月更文挑战第22天】
533 0