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的消息类型

架构图:


<a href=https://yqfile.alicdn.com/df7feda75ff9baaf14be1f1da8327a383b0e071c.png" >

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

相关文章
|
18小时前
|
IDE Linux Go
记录一个go语言与IDE之间的问题
【7月更文挑战第1天】本文介绍在IDE中调试Go应用可能遇到的问题。当问题与IDE的自动完成有关,可以试着使用其他编辑器如Linux的vim是否无此问题。这可以验证表明IDE可能不完全兼容最新语言版本,建议使用无自动检测工具临时解决。
13 0
|
20小时前
|
安全 Go
Go语言的iota关键字有什么用途?
**Go语言中的`iota`是常量生成器,用于在`const`声明中创建递增的常量。`iota`在每个新的`const`块重置为0,然后逐行递增,简化了枚举类型或常量序列的定义。例如,定义星期枚举:** ```markdown ```go type Weekday int const ( Sunday Weekday = iota // 0 Monday // 1 Tuesday // 2 ... ) ``` 同样,`iota`可用于定义不同组的常量,如状态码和标志位,保持各自组内的递增,提高代码可读性。
|
2天前
|
JSON 算法 测试技术
在go语言中调试程序
【6月更文挑战第29天】Go语言内置`testing`包支持单元测试、基准测试和模糊测试。`go test`命令可执行测试,如`-run`选择特定测试,`-bench`运行基准测试,`-fuzz`进行模糊测试。
14 2
在go语言中调试程序
|
4天前
|
编译器 Go C++
必知的技术知识:go语言快速入门教程
必知的技术知识:go语言快速入门教程
|
5天前
|
编译器 Go 开发者
|
5天前
|
Devops Go 云计算
Go语言发展现状:历史、应用、优势与挑战
Go语言发展现状:历史、应用、优势与挑战
|
6天前
|
Go
go语言map、实现set
go语言map、实现set
13 0
|
6天前
|
Go
go语言数组与切片
go语言数组与切片
15 0
|
6天前
|
Go
go语言的hello,world
go语言的hello,world
10 1
|
6天前
|
Java Go Windows
go语言实现加减法出题器(再也不用担心孩子学习了)
go语言实现加减法出题器(再也不用担心孩子学习了)
11 0

热门文章

最新文章