soul-admin端 upstreamcheckservice#setup()啟動載入後初始時候從db查詢出來放入upstreammap
/**
* setup selectors of divide plugin.
*/@postconstruct
public void setup()}
}if(check)
}
建立乙個定時任務,迴圈check方法
successlist 承裝通過check的上有資料,如果發生資料變化更新更新upstrammap的資料,並且更新db 同時發布變更資料事件,閘道器側訂閱該事件之後進行記憶體資料的變更
private void scheduled()}
private void check(final string selectorname, final list upstreamlist)
, host: {} ", divideupstream.getupstreamurl(
), divideupstream.getupstreamhost());
} successlist.add(divideupstream);}
else
is fail ", divideupstream.getupstreamurl());
}}if(successlist.size(
)== upstreamlist.size(
))if
(successlist.size(
)> 0)
else
}
private void updateselectorhandler(final string selectorname, final list upstreams)
else
; // publish change event.
eventpublisher.publishevent(new datachangedevent(configgroupenum.selector, dataeventtypeenum.update,
collections.singletonlist(selectordata)));
}}
探檢測具體實現,ip+埠如果建立鏈結成功則通過upstreamcheckutils#checkurl Soul閘道器中的Http服務探活
服務探活機制是為了發現系統中上下游服務的的狀態。當有新的服務註冊時要通知其他系統,當有服務下線時也要告知其他系統。soul閘道器中有對http服務處理的探活,所有的服務物件儲存在soul admin的upstream map中,這裡面的服務物件有兩個 乙個來自於原有的資料庫,乙個來自於其他服務的註冊...
soul閘道器學習筆記二
目錄 web專案如何引入soul閘道器 壓力測試 第二天學習分析 總結 相關使用文件可參考官方文件 今天是學習soul閘道器的第二天,今天的目標是使用soul專案提供的http例子,學會如何在業務專案中引入使用soul。在soul專案裡面有個子模組 soul examples,官方例子。其中http...
Soul閘道器原始碼學習05
soul web基於webflux 可以使用netty作為應用伺服器,eventloop 可以說是netty的排程中心,負責事件的監聽 i o事件 訊號事件 channelpipeline 事件處理鏈,channelhandler事件處理。相對於channelpipeline 而言netty事件分為...