消息队列和Kafka

消息队列(类似于蜂巢柜的功能):异步操作

特点:低耦合,响应时间快,异步削峰限流(在不繁忙的时间段处理再处理任务),系统结构弹性大,易于扩展

kafka

Kafka的主要组件包括:

  • Broker:Kafka集群中的单个服务器节点,负责数据存储和处理。

  • Topic:消息发布的类别或者主题。

  • Partition:每个Topic被划分为多个不同的分区,分区内的数据有序。

  • Producer:生产者,负责向Kafka的Topic发送消息。

  • Consumer:消费者,负责从Kafka的Topic接收和处理消息。

  • Consumer Group:一组消费者的集合,用于实现消费者的负载均衡和故障转移。

  • ZooKeeper:Kafka使用ZooKeeper来进行集群管理、协调和元数据存储。

broker是kafka服务器的一个实例,kafka是broker的集群

Topic是逻辑概念,代表某一类信息

partition分区

Replication副本,防止某个broker宕机,为partition创建多个副本,保存数据,一个broker的副本放在不同的broker中

当存在副本时,就会区分Leader、Follower,

Leader:主分片,接收生产者发送的数据,对接消费者消费消息

Follower:仅负责和Leader同步数据

Kafka在工作时,broker、Topic、Partition等都需要在Zookeeper中注册

消息队列和Kafka的区别?

1.存储机制:Kafka是持久化存储,存储在磁盘上;消息队列是存储在内存中

2.实时处理:Kafka是高吞吐、低延迟,适用于实时数据处理;消息队列注重消息传递的可靠性

3.设计模式:Kafka是分布式流媒体平台;而传统消息队列是单个服务器

4.消费模型:Kafka采用发布-订阅模型,可以多个消费者消费同一消息;而传统队列只能一个消息对应一个消费者

Kafka如何保证消息传递的可靠性?

1.持久化

2.复制:创建多个副本,分布在不同区

3.批量发送

4.确认机制

死锁

定义:多个事务访问同一资源,对已有的资源不释放,相互锁定对方的资源,造成的死循环

条件:

互斥(一个线程拿到锁后,其他线程不能用)

请求和保持(尝试获取另外的锁,自己的锁不释放)

不可剥夺(锁只能线程自己释放)

循环等待(相互等待对方释放锁)

相关推荐
User_芊芊君子几秒前
【分布式训练】CANN SHMEM跨设备内存通信库:构建高效多机多卡训练的关键组件
分布式·深度学习·神经网络·wpf
酷酷的崽79821 分钟前
CANN 开源生态解析(四):`cann-dist-train` —— 构建高效可扩展的分布式训练引擎
分布式·开源
惊讶的猫1 小时前
AMQP 与 RabbitMQ 四大模型
分布式·rabbitmq
灰子学技术1 小时前
istio从0到1:如何解决分布式配置同步问题
分布式·云原生·istio
小马爱打代码2 小时前
ZooKeeper:入门实战
分布式·zookeeper·云原生
永远都不秃头的程序员(互关)3 小时前
CANN赋能AIGC分布式训练:硬核通信,加速大模型智能生成新纪元
分布式·aigc
杜子不疼.4 小时前
CANN集合通信库HCCL的大规模分布式训练通信优化与拓扑感知实践
分布式
ALex_zry16 小时前
Redis Cluster 分布式缓存架构设计与实践
redis·分布式·缓存
为什么不问问神奇的海螺呢丶18 小时前
n9e categraf rabbitmq监控配置
分布式·rabbitmq·ruby
TTBIGDATA1 天前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger