消息队列
什么是消息队列?消息队列的字母别称就是MQ,是指用来保存消息的一个容器,本质是个队列,但是这个队列不是简单的队列,需要支持高吞吐,高并发,还有高可用性。
业界消息队列
-
Kafka:分布式的,分区的,多副本的日志提交服务,其中发挥比较亮眼的是在高吞吐领域
Kafka这种消息队列虽然有很高的吞吐,但是其运维成本比较高,对于负载不均衡的场景下,解决方案非常复杂,而且他还没有自己的缓存,完全依赖Page Cache。Controller和Coordinator和Broker在同一进程中,大量IO会造成其性能下降,这些都是Kafka消息队列所面临的问题。
-
RocketMQ:低延迟,强一致,高性能,高可靠,万亿级别的容量和灵活的可扩展性,在一些实时场景中运用较广
- 这种消息队列一般在那种场景下会使用呢?例如一些针对电商业务线,其业务涉及广泛,比如注册,订单,库存,物流等等,当然不止于此,在许多业务巅峰时刻也有所使用,比如秒杀活动,双十一,周年庆等等。
- 其中RocketMQ有一些非常具有个人特色的高级特性:事物消息,重试和死信队列,延迟队列
其中我们在视频学习中,老师还展示了架构模型和存储模型,但是我因为一些原因弄不到这些模型图片,就不解释了
-
Plisar:这是下一代云原生分布消息流平台,集消息,存储,轻量化函数式计算为一体,采用存算分离的架构设计
-
BMQ:和plusar架构类似,存算分离,初期定位是承接高吞吐的离线上午场景,逐步替换掉对应的Kafka集群
- BMQ可以解决一些Kafka存在的一些问题。
- BMQ的读写流程:Failver机制,写入状态机
- BMQ高级特性:泳道,Databus,Mirror,Index,Parquet。
- Databus可以减缓消息队列的复杂度,解耦业务与Topic,缓解集群压力,提高吞吐。
- Index直接是在BMQ中将数据结构化,配置索引IDDL,一部构建索引后,通过Index Query服务读取数据。
- Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼任Hadoop生态圈中大多数计算框架,可以被多种查询引擎支持。
说实话,感觉这节课学的一脸懵逼,笔记也写的稀烂,但是不能因为学习困难就不写笔记,完事开头难,学习过程中都不会是尽善尽美的,以后会越来越好的。