Нема описа

Joyit a817e5d80d add all channel filter пре 9 месеци
config bc27882ab2 fix client reconnect пре 10 месеци
conn 93b7400bb4 fix cross origin пре 10 месеци
examples 65848344d0 add filter to channel function пре 10 месеци
.gitignore c3e78f5f89 change mod name пре 1 година
README.md 4519ed7818 fix channel started time bug пре 10 месеци
filter.go a817e5d80d add all channel filter пре 9 месеци
go.mod c3e78f5f89 change mod name пре 1 година
go.sum c3e78f5f89 change mod name пре 1 година
hub.go 65848344d0 add filter to channel function пре 10 месеци
line.go 1106e2c28b fix channel bug пре 10 месеци
mapx.go 7fad451a8a add get rand data пре 11 месеци
type.go 04442448f4 add nat sign in host info struct пре 9 месеци
type_test.go 65848344d0 add filter to channel function пре 10 месеци

README.md

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

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

设计原则

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

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

需要的功能

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

优化连接方式

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

问题与优化

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

已经解决的问题

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