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

导读:本篇文章讲解 【Kafka技术内幕】(一):认识MQ——典型应用场景和基本特性概述,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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

引言

从本篇开始,少侠将会和大家一起进入消息队列(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的相关学习。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13477.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!