源码实践_实现一个mqtt(2)
2021/9/3 17:07:26
本文主要是介绍源码实践_实现一个mqtt(2),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 源码实践_实现一个mqtt(2)
- topic和tcp连接的关系
- btree
- topic节点代码
源码实践_实现一个mqtt(2)
订阅, 发布, tcp数据结构选型
topic和tcp连接的关系
-
查找topic快
此时没考虑topic匹配,只是考虑定义好直接写死
-
发送消息快
让topic维护tcp,找到topic,官博即可
btree
之前看过etcd,里面的内存数据结构用到的"github.com/google/btree"
,我也用,测试还比较快,支持节点是接口,实现Less即可
topic节点代码
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) } }
这篇关于源码实践_实现一个mqtt(2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21MQ-2烟雾传感器详解
- 2024-12-09Kafka消息丢失资料:新手入门指南
- 2024-12-07Kafka消息队列入门:轻松掌握Kafka消息队列
- 2024-12-07Kafka消息队列入门:轻松掌握消息队列基础知识
- 2024-12-07Kafka重复消费入门:轻松掌握Kafka消费的注意事项与实践
- 2024-12-07Kafka重复消费入门教程
- 2024-12-07RabbitMQ入门详解:新手必看的简单教程
- 2024-12-07RabbitMQ入门:新手必读教程
- 2024-12-06Kafka解耦学习入门教程
- 2024-12-06Kafka入门教程:快速上手指南