学习笔记:消息队列(六)BMQ(下)|青训营;

277 阅读2分钟

在上一次的笔记中,我们讲述到了写文件的流程,但是哪怕在C语言中,写文件都是有概率失败的。为了解决这个问题,我们要进行一点处理。

写文件失败怎么办

之前我们提到过,BMQ所使用的方式是文件节点随机写入,那么就可以选择直接换一个文件节点读写。

proxy

proxy是代理的意思,也是信息的中转站。我们可以通过代理来访问中间人进行分布式部署。 图片来自课件:

1692761245395.png

BMQ的高级特性

作为新的消息队列,BMQ要与之前的消息队列有所区别。

泳道

一般情况下,项目开发流程如下图所示:

graph TD
开发 --> 独立的线下机房环境BOE --> 产品预览环境PPE -->prod

BOE测试

在BOE测试时,如果有多个人同时测试,只能一个一个人来完成,相当于通路仅有一条。 如果是泳道消息,就像是游泳馆的泳道一样,每一个消息都新建一个topic,可惜会造成资源的浪费。

PPE测试

但在PPE测试的时候,用到的资源比BOE要小,无法承受生产环境的流量,即一个topic对接多个producer和customer。

泳道消息

因此,为了解决上述提到的问题,泳道消息选择了两者的折中,那就是使用一条主干,之后的用到部分用PPE完成。

databus

遇见问题

直接使用原生 SDK 会有什么问题?

  1. 客户端配置较为复杂
  2. 不支持动态配置,更改配置需要停掉服务
  3. 对于 latency 不是很敏感的业务,batch 效果不佳

提出方案

1692761870850.png

  1. 简化消息队列客户端复杂度
  2. 解耦业务与 Topic
  3. 缓解集群压力,提高吞吐

Mirror

我们需要小心一个问题,那就是跨域。 我们可以使用mirror,让最终一致。 图片来自课件:

1692762536675.png

Index

我们在使用数据库的时候,一般都会根据id对数据进行查询。 因此,我们在BMQ中对数据进行结构化,异步构建索引,再查询。

parquet

Apache Parguet是Hadoop生态圈中一种新型列式存储格式,它可以兼容 Hadoop 生态圈中大多数计算框架(Hadoop、Spark等),被多种查询引擎支持(Hive、Impala、Drill等)。

我们有两种存储方式,如课件中的图所示:

1692762705164.png