esq

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2022 License: MIT

README

esq

这是个什么

轻量级消息队列,是对 https://github.com/wuzhc/gmq 的魔改,看看正经的轻量级消息队列应该如何设计,大有裨益。

使用方法

启动 esq 的单个节点
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
简单的客户端测试 —— 发送与接受心跳
cd cmd/singleCli

go run ./main.go
启动 esq 集群
使用etcd

需要安装 etcd 并运行

etcd
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

首先安装 raftdhttps://github.com/impact-eintr/raftd

./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
简单的客户端测试 —— 发送与接受心跳
# 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

客户端源码

说点什么

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

Directories

Path Synopsis
cmd
扫(确认消息): - sfid为扫文件编号,soffset为当前扫偏移量,两个字段表示当前扫描到哪个文件哪个位置 - sfid为0,sfid加1,查看文件是否存在,存在则映射 - 根据soffset和roffset读取内容,更新soffset - 扫描完毕,删除数据文件,删除读步骤的map表记录 跳跃表 这个是干嘛用的?估计是遗留下来的代码?原本可能是存储引擎
扫(确认消息): - sfid为扫文件编号,soffset为当前扫偏移量,两个字段表示当前扫描到哪个文件哪个位置 - sfid为0,sfid加1,查看文件是否存在,存在则映射 - 根据soffset和roffset读取内容,更新soffset - 扫描完毕,删除数据文件,删除读步骤的map表记录 跳跃表 这个是干嘛用的?估计是遗留下来的代码?原本可能是存储引擎
pkg
logs
日志调度器 功能: 初始化各个日志处理器 使用: logger := logs.NewDispatcher() logger.SetTarget(logs.TARGET_FILE, `{"filename":"xxxx.log","level":10,"max_size":500,"rotate":true}`) logger.Error("这是一个错误") logger.Debug("这是一个调试") logger.Info("这是一个信息") logger.Warn("这是一个警告")
日志调度器 功能: 初始化各个日志处理器 使用: logger := logs.NewDispatcher() logger.SetTarget(logs.TARGET_FILE, `{"filename":"xxxx.log","level":10,"max_size":500,"rotate":true}`) logger.Error("这是一个错误") logger.Debug("这是一个调试") logger.Info("这是一个信息") logger.Warn("这是一个警告")
utils
时间工具类 @author wuzhc 20190623
时间工具类 @author wuzhc 20190623

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL