MetaQ

MetaQ

简介:

  • 概念:MetaQ是一款分布式、队列模型的消息中间件。
  • 模式:分为Topic与Queue两种模式
  • 消费方式:Push和Pull两种方式消费
  • 特点:支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询。

影响性能的关键几点

  • 序列化与反序列化
    从MetaQ Cleint要发送消息,必须要先序列化,然后才能通过网络发送出去。 MetaQ Server收到消息后,要进行反序列化,才能解析出消息内容,最后序列化存储到文件系统。
    MetaQ Client收到消息,首页MetaQ Server必须从文件中读取消息,然后通过网络发送给MetaQ Client,收到消息,进行反序列化,应用才能识别消息内容。
    MetaQ核心功能,都要通过序列化与反序列化,所以其性能,对MetaQ性能有关键性的影响,其实不是对MetaQ,只要使用了序列化与反序列化,其对性能影响都很大。
    虽然使用Google的Protocol Buffers性能会更好,但各个版本不兼容。所以MetaQ选择使用JSON
  • write性能
    因为MetaQ Server会有大量的write系统调用 ,所以其性能对MetaQ性能有着重要的影响。
    优化:
  • MetaQ消息只保留在一个物理文件上,所有的消息都会写一个物理文件,每个物理文件都是固定大小,超过设置的阀值后,自动创建新的一个文件。当磁盘快满时,会自动删除老的文件。
  • read性能
    因为MetaQ Server会有大量的read系统调用 ,所以其性能对MetaQ性能有着重要的影响。
    优化:
  • read优化主要是使用了map文件映射技术。这样可以减少系统上下文切换和复制数据的开销。
  • 同时文件系统提供了文件预读的功能,也使的读取文件开销,特别是顺序读时,开销比较低。
  • 网络框架
    因为发送消息,订阅消息都必须经过网络,如果网络组件性能不好,对MetaQ性能有着关键的影响。
  • MetaQ的网络框架,选择了Netty4。Netty4因出色的性能和易用性,成为高性能场景的不二选择。

Group Commit技术

  • Group Commit也就是组提交,组提交是指可以多次分写请求只要通过一次刷新数据,就可以实现这些请求的数据都已刷新到磁盘上。
  • MySQL数据库能保证ACID,事务提交也使用了Group Commit来提高性能(为了保证D,数据需要持久化到文件系统)。

MetaQ学习笔记

你可能感兴趣的:(MetaQ)