【METAQ引见】
【METAQ介绍】
Metamorphosis是淘宝开源的一个Java消息中间件,他类似apache-kafka,但不是一个简单的山寨拷贝,而是做了很多改进和优化,项目的主页在淘蝌蚪上。
METAQ是一款完全的队列模型消息中间件,服务器使用Java语言编写,可在多种软硬件平台上部署。客户端支持Java、C++编程语言
MetaQ对外提供的是一个队列服务,内部实现也是完全的队列模型,这里的队列是持久化的磁盘队列,具有非常高的可靠性,并且充分利用了操作系统cache来提高性能
1. MetaQ是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。 2. Producer、Consumer、队列都可以分布式。 3. 能够保证严格的消息顺序 4. 提供丰富的消息拉取模式 5. 高效的订阅者水平扩展能力 6. 实时的消息订阅机制 7. 亿级消息堆积能力
MetaQ的存储结构是根据大规模互联网应用需求,完全重新设计的一套存储结构,使用这套存储结构可以支持上万的队列模型,并且可以支持消息查询、分布式事务、定时队列等功能
MetaQ内部大部分功能都靠队列来驱动,那么必须支持足够多的队列,才能更好的满足业务需求,MetaQ可以在单机支持上万队列,这里的队列全部为持久化磁盘方式,从而对IO性能提出了挑战。MetaQ是这样解决的
1. Message全部写入到一个独立的队列,完全的顺序写 2. Message在文件的位置信息写入到另外的文件,串行方式写
通过以上方式,既做到数据可靠,又可以支持更多的队列
3. MetaQ编程实践
消息中间件中有两个角色: "消息生产者(Producer)"和"消息消费者(Consumer)"。Meta里同样有这两个概念,消息生产者负责创建消息并发送到Meta服务器(Broker),Meta服务器会将消息持久化到磁盘,消息消费者从Meta服务器拉取消息并提交给应用消费
回顾我们之前说的MetaQ的架构图