纯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/main1,启动main.exe 或 ./main
整理出了几个讨论比较多的问题:1,在发送消息的时候是通过http,为什么不是websocket?http目前双向流控制比较麻烦,websocket是最方便的2,消息是否存储数据库?默认存储数据库,并可以自己加存储逻辑,例如redis kafka等消息队列中
read_write is licensed under the MIT License.