Žiadny popis

Joyit e26b9d7ae1 fix 1 týždeň pred
config bc27882ab2 fix client reconnect 2 mesiacov pred
conn e26b9d7ae1 fix 1 týždeň pred
examples 65848344d0 add filter to channel function 1 mesiac pred
.gitignore c3e78f5f89 change mod name 6 mesiacov pred
README.md 4519ed7818 fix channel started time bug 1 mesiac pred
filter.go a817e5d80d add all channel filter 1 mesiac pred
go.mod c3e78f5f89 change mod name 6 mesiacov pred
go.sum c3e78f5f89 change mod name 6 mesiacov pred
hub.go 65848344d0 add filter to channel function 1 mesiac pred
line.go 1106e2c28b fix channel bug 1 mesiac pred
mapx.go 7fad451a8a add get rand data 2 mesiacov pred
type.go 04442448f4 add nat sign in host info struct 1 mesiac pred
type_test.go 65848344d0 add filter to channel function 1 mesiac pred

README.md

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

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

设计原则

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

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

需要的功能

  • 同地址多连接协议
  • 自动重连
  • 多协议绑定
  • 连接验证

优化连接方式

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

问题与优化

  • 优化命令匹配的算法,当有数量级的连接时需要考虑;如使用固定 ID,自动生成匹配缓存等方式
  • 建立内存池来分配内存,减少内存碎片
  • 同地址多连接共存,使用不同的连接发送消息,减少延时,提高消息送达可靠性

已经解决的问题

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