#####2020 08 09小节
做通了第一波压力测试在一个自己很差的电脑上做了一万次io请求大约在8秒左右完成,在公司电脑上只用了800毫秒,io请求路径是经过mqtt代理和设备中心,先暂时这样吧,性能还是太差,虽然 是一个2核的虚拟机,但是代理程序能否准确 用到多核,缩小多线程临界区是性能的一个重要评测点,目前只支持mqtt3,下一步打算做信号处理和ini配置文件处理,配置打算用json,json应有良好的对接性, 当然下一步的重点也是要让程序可以良好的使用多块cpu,目前这个代理程序只支持mqtt3这个版本。较新的不支持,以后如果有业务需要会做支持的
####2020 08 19 开发计划规划
为了加强 mqtt 代理推送的准确性 写一下开发计划,如果推送消息直从代理直接返回给推送段2次确认,那么这个代理就变得没有意义了,我们没有办法知道接收方是 否已经准确收到我们的消息,所以说设计优化的底线原则
1.确保推送消息结果的准确性
2.尽可能避免加锁,尽可能利用计算机多核优势
3.尽可能缩小临界区
针对这个想法我较劲脑汁想出了以下方案在最近半个月里实施落地
1)确保推送消息结果的准确性
详尽修改代理中的协议
代理 =》 设备中心 加入 接收方的clientId,并且 会在 代理的 handle类里,加入每个代理的唯一计数器,等待返回的数据结构 用map,并且存储到线程本地 变量里(减少竞争情况发生)
等待超时时间采用时间轮算法,等待超时时间采用时间轮算法,区分超出等待时间的消息
2)尽可能利用计算机多核优势
各个会话的操作都在绑定的线程里运行,绝不会再其他不相干线程里运行逻辑,严禁计算机线程之间的争抢
3)代理和设备之间的会话保活策略用时间轮