KiteQ —— 基于 go + protobuff 的消息队列

KiteQ 是一个基于 go + protobuff 实现的多种持久化方案的 mq 框架(消息队列)。

特性:

* 基于zk维护发送方、订阅方、broker订阅发送关系、支持水平、垂直方面的扩展
* 基于与topic以及第二级messageType订阅消息
* 基于mysql、文件存储方式多重持久层消息存储
* 保证可靠异步投递
* 支持两阶段提交分布式事务

工程结构:

kiteq/
├── README.md
├── binding           订阅关系管理处理跟ZK的交互
├── build.sh          安装脚本
├── client            KiteQ的客户端
├── doc               文档
├── handler           KiteQ所需要的处理Handler
├── kite_benchmark_xxx.go KiteQ的Benchmark程序
├── kiteq.go          KiteQ对外启动入口
├── protocol          KiteQ的协议包,基于PB和定义的Packet
├── server            KiteQ的Server端组装需要的组件
├── stat              状态信息统计
└── store             KiteQ的存储结构

概念:

* Binding:订阅关系,描述订阅某种消息类型的数据结构
* Consumer : 消息的消费方
* Producer : 消息的发送方
* Topic: 消息的主题比如 Trade则为消息主题,一般可以定义为某种业务类型
* MessageType: 第二级别的消息类型,比如Trade下存在支付成功的pay-succ-200的消息类型

架构图:

https://yqfile.alicdn.com/df7feda75ff9baaf14be1f1da8327a383b0e071c.png" >

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-10-28 03:05:20

KiteQ —— 基于 go + protobuff 的消息队列的相关文章

基于条件变量的消息队列

     条件变量是线程之前同步的另一种机制.条件变量给多线程提供了一种会和的场所.当条件变量和互斥锁一起使用时,允许线程以无竞争的方式等待特定的条件发生.这样大大减少了锁竞争引起的线程调度和线程等待.      消息队列是服务器端开发过程中绕不开的一道坎,前面,我已经实现了一个基于互斥锁和三队列的消息队列,性能很不错.博客园中的其他园主也实现了很多基于环形队列和lock-free的消息队列,很不错,今天我们将要实现一个基于双缓冲.互斥锁和条件变量的消息队列:这个大概也参考了一下java的blo

基于条件变量的消息队列 说明介绍_C 语言

条件变量是线程之前同步的另一种机制.条件变量给多线程提供了一种会和的场所.当条件变量和互斥锁一起使用时,允许线程以无竞争的方式等待特定的条件发生.这样大大减少了锁竞争引起的线程调度和线程等待.      消息队列是服务器端开发过程中绕不开的一道坎,前面,我已经实现了一个基于互斥锁和三队列的消息队列,性能很不错.博客园中的其他园主也实现了很多基于环形队列和lock-free的消息队列,很不错,今天我们将要实现一个基于双缓冲.互斥锁和条件变量的消息队列:这个大概也参考了一下java的blocking

基于HBase的消息队列:HQueue

1. HQueue简介 HQueue是一淘搜索网页抓取离线系统团队基于HBase开发的一套分布式.持久化消息队列.它利用HTable存储消息数据,借助HBase Coprocessor将原始的KeyValue数据封装成消息数据格式进行存储,并基于HBase Client API封装了HQueue Client API用于消息存取. HQueue可以有效使用在需要存储时间序列数据.作为MapReduce Job和iStream等输入.输出供上下游共享数据等场合. 2. HQueue特性 由于HQu

几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程. 本文选自<架构解密:从分布式到微服务>. 本文盘点了四种常用的微服务架构方案,分别是ZeroC IceGrid.Spring Cloud.基于消息队列与Docker Swarm. ZeroC IceGrid微服

基于TableStore构建简易海量Topic消息队列

前言 消息队列,通常有两种场景,一种是发布者订阅模式,一种是生产者消费者模式.发布者订阅模式,即发布者生产消息放入队列,多个监听的消费者都会收到同一份消息,也就是每个消费者收到的消息是一样的.生产者消费者模式,生产者生产消息放入队列,多个消费者同时监听队列,谁先抢到消息就会从队列中取走消息,最终每个消息只会有一个消费者拥有. 在大数据时代,传统的生产者消费者队列模式中的Topic数目可能从少量的几个变为海量topic.例如要实现一个全网爬虫抓取任务调度系统,每个大型的门户,SNS都会成为一个to

云队列:一个基于Hadoop的大规模消息基础平台

云队列:一个基于Hadoop的大规模消息基础平台 东华大学 史冬冬 本文基于从当前分布式系统消息通信的需求出发,并结合Hadoop云计算平台,提出了一个面向Internet规模的.高性能和高可靠的消息队列服务平台--云队列(Cloudqueue).通过云队列平台所提供的消息服务实现异步通讯.存储转发.可靠传输.跨互联网等特性,云队列可以在云计算时代为应用程序提供高性能.高可靠.大容量的面向互联网的消息传递服务. 文章从现实需求出发,在分析了消息中间件的相关基础知识和Hadoop关键技术的基础之上

消息队列和管道的区别(转载)

转载自:http://bbs.chinaunix.net/viewthread.php?tid=265266 作者:beginner-bj 请问管道和消息队列有什么不同  管道通信(PIPE) 管道通信方式的中间介质是文件,通常称这种文件为管道文件.两个进程利用管道文件进行通信时,一个 进程为写进程,另一个进程为读进程.写进程通过写端(发送端)往管道文件中写入信息:读进程通过读 端(接收端)从管道文件中读取信息.两个进程协调不断地进行写.读,便会构成双方通过管道传递信息 的流水线. 利用系统调用

PHP memcache实现消息队列实例

现在memcache在服务器缓存应用比较广泛,下面我来介绍memcache实现消息队列等待的一个例子,有需要了解的朋友可参考. memche消息队列的原理就是在key上做文章,用以做一个连续的数字加上前缀记录序列化以后消息或者日志.然后通过定时程序将内容落地到文件或者数据库. php实现消息队列的用处比如在做发送邮件时发送大量邮件很费时间的问题,那么可以采取队列. 方便实现队列的轻量级队列服务器是: starling支持memcache协议的轻量级持久化服务器 https://github.co

C#:消息队列应用程序

程序 摘要:本文概述一种用于处理若干消息队列的 Windows 服务解决方案,重点介绍 .NET 框架和 C# 应用程序. 下载 CSharpMessageService.exe 示例文件 (86 KB) 目录简介.NET 框架应用程序 应用程序结构 服务类 检测设备 安装总结参考资料 简介Microsoft 近期推出了一种用于生成集成应用程序的新平台--Microsoft .NET 框架..NET 框架允许开发人员使用任何编程语言迅速生成和部署 Web 服务和应用程序.Microsoft In