服务架构

纯go实现的轻量级网关系统

纯go实现的网关系统,支持私信消息与广播消息,各层之间通过http/websocket/go channel通讯,支持水平扩展。
使用redis作为消息存储与投递的载体十分轻量。
各层之间分布式服务,在扩容部署时将会方便很多。
由于go的交叉编译特性,编译后可以快速在各个平台上运行

架构设计

消息服务(集群)

传输层消息转发
消息默认同步类型,可变为redis,database,kafka等扩展

协议层消息转发
同上

应用层消息转发
同上

相关组件

语言:golang
数据库:mysql
可以替换成sqlite3 或者其他数据库,
数据库ORM:gorm

数据库及表结构

暂略

安装

在启动各层之前,请确保启动了mysql数据库,并初始化了以上表,
并确保7788, 7799, 7700端口没有被占用。
然后按照以下顺序启动各层,如果要扩容connect层,
请确保connect层配置中各个serverId不一样!
0,编译
go build read_write/cmd/main
1,启动
main.exe 或 ./main

相关问题解答

整理出了几个讨论比较多的问题:
1,在发送消息的时候是通过http,为什么不是websocket?
http目前双向流控制比较麻烦,websocket是最方便的
2,消息是否存储数据库?
默认存储数据库,并可以自己加存储逻辑,例如redis kafka等消息队列中

交流群

License

read_write is licensed under the MIT License.