订阅, 发布, tcp数据结构选型
查找topic快
此时没考虑topic匹配,只是考虑定义好直接写死
发送消息快
让topic维护tcp,找到topic,官博即可
之前看过etcd,里面的内存数据结构用到的"github.com/google/btree"
,我也用,测试还比较快,支持节点是接口,实现Less即可
type Topic struct { Mux sync.Mutex Name string Conn map[string]net.Conn Hash int64 } func NewTopic(name string, conn map[string]net.Conn) *Topic { t := &Topic{ Name: name, Conn: conn, } t.CalcHash() return t } // Less btree的元素实现了Less接口 // 注意下面需要具体的数字进行排序 func (t *Topic) Less(b btree.Item) bool { return t.Hash < b.(*Topic).Hash } // CalcHash 计算hash值 // 简单的hash字符串唯一操作运算,每个不同topic的二进制数字和大部分不一样 // todo: 以后找个合适的hash func (t *Topic) CalcHash() { b := []byte(t.Name) for _, v := range b { t.Hash += int64(v) } }