Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/impact-eintr/esq
轻量级分布式消息队列 支持一对一收发 也支持广播
https://github.com/impact-eintr/esq
etcd gin golang message-queue raft
Last synced: about 1 month ago
JSON representation
轻量级分布式消息队列 支持一对一收发 也支持广播
- Host: GitHub
- URL: https://github.com/impact-eintr/esq
- Owner: impact-eintr
- License: mit
- Created: 2021-07-14T09:01:06.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-03-15T08:09:04.000Z (almost 3 years ago)
- Last Synced: 2024-11-14T14:47:34.881Z (about 1 month ago)
- Topics: etcd, gin, golang, message-queue, raft
- Language: Go
- Homepage:
- Size: 348 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# esq
## 这是个什么
轻量级消息队列,是对 的魔改,看看正经的轻量级消息队列应该如何设计,大有裨益。
## 使用方法
### 启动 esq 的单个节点
``` sh
cd cmd/gnodego build
./gnode -http_addr=":9504" -tcp_addr=":9503" -etcd_endpoints="127.0.0.1:2379" -node_id=1 -node_weight=1
```#### 简单的客户端测试 —— 发送与接受心跳
``` sh
cd cmd/singleCligo run ./main.go
```### 启动 esq 集群
#### 使用etcd需要安装 etcd 并运行
``` sh
etcd
`````` sh
cd cmd/gnodego build
# 节点1
./gnode -http_addr="127.0.0.1:9504" -tcp_addr="127.0.0.1:9503" -etcd_endpoints="127.0.0.1:2379" -node_id=1 -node_weight=1 -data_save_path=./data1 -enable_cluster=true# 节点2
./gnode -http_addr="127.0.0.1:9506" -tcp_addr="127.0.0.1:9505" -etcd_endpoints="127.0.0.1:2379" -node_id=2 -node_weight=2 -data_save_path=./data2 -enable_cluster=true
```#### 使用raftd
首先安装 raftd
``` sh
./gnode -http_addr="127.0.0.1:9501" -tcp_addr="127.0.0.1:9502" -raftd_endpoint="127.0.0.1:8001" -node_id=1 -node_weight=1 -data_save_path=./data1 -enable_cluster=true -enable_raftd=true./gnode -http_addr="127.0.0.1:9503" -tcp_addr="127.0.0.1:9504" -raftd_endpoint="127.0.0.1:8001" -node_id=2 -node_weight=2 -data_save_path=./data2 -enable_cluster=true -enable_raftd=true
```#### 简单的客户端测试 —— 发送与接受心跳
``` sh
# etcd版
cd cmd/etcdClusterCli# raftd版
cd cmd/raftdClusterCli# 1 2 4 3 对应四种不同的选择节点的方式
go run ./main.go 1
go run ./main.go 2
go run ./main.go 3
go run ./main.go 4
```## 架构设计
![img](img/esq架构设计.jpg)### 客户端源码
- 单节点
- 集群模式
- etcd版
- raftd版## 说点什么
感谢伟大的开源运动,让我能看到这么多优秀的前辈留下的代码,给我这个菜鸡开个大眼。