功能
啟動時,讀取持久化的信息氮采,構(gòu)建出訂閱樹
根據(jù)可訂閱/取消訂閱/讀取訂閱(包括計算出QoS)
類圖
這里寫圖片描述
既然是一棵樹,那么肯定是由一堆Node組成的,TopicTreeNode持有當前的topic的segment滴肿,通配符訂閱者信息(包含訂閱者、訂閱的QoS佃迄、是否共享訂閱泼差、以及共享訂閱組信息)。
每個節(jié)點都可以提供訂閱呵俏、取消訂閱堆缘、獲得訂閱者信息、以及一些訂閱樹節(jié)點的數(shù)據(jù)的增刪改查操作普碎。
TopicTree實現(xiàn)類持有了node的根結(jié)點吼肥,與每個節(jié)點一致提供對應(yīng)訂閱樹的操作。
Persistence相關(guān)的處理與支持的業(yè)務(wù)基本上與上節(jié)講解一致,此處就不多作贅述了潜沦。
TopicTreeBootstrap在broker啟動時根據(jù)cluster中client session萄涯、client session subscriptions、shared subscription來在內(nèi)存中構(gòu)建出這一棵樹,以便在后續(xù)使用時唆鸡,能夠在內(nèi)存中實時獲得到同步的內(nèi)存訂閱樹涝影。
訂閱樹是在每種類型的mqtt broker中幾乎都會存在的,訂閱樹的問題屬于優(yōu)化問題争占,只有針對符合的場景才能發(fā)揮其結(jié)構(gòu)燃逻、存儲、設(shè)計的巧妙臂痕。