消息队列和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.确认机制
死锁
定义:多个事务访问同一资源,对已有的资源不释放,相互锁定对方的资源,造成的死循环
条件:
互斥(一个线程拿到锁后,其他线程不能用)
请求和保持(尝试获取另外的锁,自己的锁不释放)
不可剥夺(锁只能线程自己释放)
循环等待(相互等待对方释放锁)
原文地址:https://blog.csdn.net/jjjjjkkkl/article/details/135922958
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!