Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

轻量级分布式消息队列 支持一对一收发 也支持广播

Awesome Lists containing this project

README

        

# esq

## 这是个什么

轻量级消息队列,是对 的魔改,看看正经的轻量级消息队列应该如何设计,大有裨益。

## 使用方法

### 启动 esq 的单个节点

``` sh
cd cmd/gnode

go build

./gnode -http_addr=":9504" -tcp_addr=":9503" -etcd_endpoints="127.0.0.1:2379" -node_id=1 -node_weight=1
```

#### 简单的客户端测试 —— 发送与接受心跳

``` sh
cd cmd/singleCli

go run ./main.go
```

### 启动 esq 集群
#### 使用etcd

需要安装 etcd 并运行
``` sh
etcd
```

``` sh
cd cmd/gnode

go 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版

## 说点什么

感谢伟大的开源运动,让我能看到这么多优秀的前辈留下的代码,给我这个菜鸡开个大眼。