Brak opisu

Joyit a3630cc8d6 fix 2 tygodni temu
config 33554520fa finish proxy function, will try to debug 1 miesiąc temu
conn 9c19add1a5 still codding 1 miesiąc temu
examples 4730fd37b2 finish proxy code 1 miesiąc temu
util f64ca6d7e1 add pool_test 1 miesiąc temu
.gitignore c3e78f5f89 change mod name 1 rok temu
PROTO.md bc41f3765d fix id state 1 miesiąc temu
README.md 11fc068b30 add filter to request 2 tygodni temu
const.go bc41f3765d fix id state 1 miesiąc temu
dail.go 9c19add1a5 still codding 1 miesiąc temu
filter.go e188c36566 fix 1 miesiąc temu
go.mod c3e78f5f89 change mod name 1 rok temu
go.sum c3e78f5f89 change mod name 1 rok temu
hub.go a3630cc8d6 fix 2 tygodni temu
line.go 4730fd37b2 finish proxy code 1 miesiąc temu
mapx.go 9c19add1a5 still codding 1 miesiąc temu
type.go a3630cc8d6 fix 2 tygodni temu

README.md

一款简单的可以跨平台 mq 架构设计

提供服务端和客户端代码,采用多对多的结构,可能方便切换不同的连接方式和不同的连接地址。 如果直连优先,系统会定时尝试切换连接,直到直连成功。

设计原则

简单,安全,自动重连。 三层架构:

  • 通信连接层,实现不同的通信方式,如 tcp, websocket, udp 等
  • 连接聚合层,管理不同的连接,重连等
  • 用户接口

如何调试

进入 examples 目录,运行对应的文件进行调试

需要的功能

  • 同地址多连接协议
  • 自动重连
  • 多协议绑定
  • 连接验证
  • 自动使用代理来完成连接

优化连接方式

  • 高效匹配字符串算法
  • 随机匹配算法
  • 排序算法
  • 支持万级连接数

问题与优化

  • 优化命令匹配的算法,当有数量级的连接时需要考虑;如使用固定 ID,自动生成匹配缓存等方式
  • 同地址多连接共存,使用不同的连接发送消息,减少延时,提高消息送达可靠性
  • 并发相同channel连接时出现竞争的情况

已经解决的问题

  • 建立内存池来分配内存,减少内存碎片
  • 出现断线没有自动重连的问题
  • 随机频道获取
  • 断线时命令在还没有超时的情况下,要等待重连后发送
  • 增加 gzip 的功能,只需要压缩数据部分
  • 转发地址定时测试切换回到主服务节点
  • 增加订阅中间件,处理验证登录等问题