【Kafka技术内幕】(一):认识MQ——典型应用场景和基本特性概述

我是少侠露飞。学习塑造人生,技术改变世界。

引言

从本篇开始,少侠将会和大家一起进入消息队列(MQ)的学习。学习MQ之前,首先必须要掌握它的应用场景(不能为了用而用),然后继续深入关键特性。

1 MQ的应用场景

1.1 MQ应用场景:解耦

在这里插入图片描述

  • 语言间解耦
  • 应用间解耦
    屏蔽实现细节
    异步通信,做到上下游各自扩展
    以投递通知的方式,上游不关注下游,不必同时在线
  • 地域之间解耦:数据复制、传递

1.2 MQ应用场景:广播

在这里插入图片描述

  • RPC:发送次数由消费者决定
  • MQ:生产者只发送一次

1.3 MQ应用场景:流量削峰

在这里插入图片描述
Produce rate > Consume rate

  • MQ可能出现短暂积压
  • 实际场景:商品秒杀,热点评论,外卖订单,批量导入

2 MQ的基本特性

2.1 消息的完整性

2.1.1 不丢失数据

在这里插入图片描述
要保证MQ不丢失数据,一般从两个方面考虑:

  1. 数据可靠
    通过副本replica保证,如上图所示,每条消息保存了三份,生产者投递到leader里,然后每个leader有两个follower,这些follower从leader中拉取最新的消息数据(这个过程类似与MySQL主从模式下slave通过binlog日志从master同步数据)。数据有三份,并且保存在不同的服务器上,这样的话即使宕机了一台,也不会出现数据的丢失,从而保证了数据的可靠性
  2. 投递可靠
    数据到服务器上保存是可靠的,那还有可能发送的时候失败了啊,这怎么保证呢?别怕,正经的MQ都有投递的ACK机制。简单来说,就是Producer投递完消息到leader之后,会根据返回值判断是否成功投递,如果出现失败的话就会重新投递。这样从Producer端保证了投递的可靠性

2.1.2 消费一次

记录消费的位置
至少消费一次(at least once)

  • 正常情况只消费一次

业务幂等

2.1.3 顺序消费

全局有序

  • 绝对的全局序:单生产线程+单队列+单消费线程

局部有序

  • hash一类消息至一个分区下

大致有序

  • 时间窗口期之间是有序

2.2 MQ支撑的业务场景

可靠VS性能

  • 高吞吐&低可靠
  • 高可靠&低吞

容量:集群,可横向扩展
特性:延迟消息、事务消息、回溯、死信

2.3 容灾

在这里插入图片描述

  • 节点容灾:某个数据分片不可用
  • 集群容灾:某个节点不可用
  • 机房容灾:某个机房不可用
  • 地域容灾:某地域的机房均不可用

小结

消息队列的基本认识到这里就结束了,大家看其实也没太难,重点注意MQ的应用场景可能会在面试中被考察。从下节开始,我们就正式进入Kafka的相关学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值