先從manager的三個子子產品開始分析
一、biz子產品
autokeeper
AutoKeeperCollector類:
繼承自InitializingBean,afterPropertiesSet()調用後,調用startCollect()
startCollect啟動線程,通過調用zk的四字指令,來擷取zk的狀态:
autokeeper
AutoKeeperData類:繼承自AutoKeeperPersist接口
每次監控zk狀态,有新的連接配接加入的時候,就會調用autoKeeperData對象,将連接配接資訊,存入Map
Map的大體結構就是<server,<connection,[watcher,ephemeral]>>,說白了就是存的zk資訊
common-alarm子產品
主要是告警子產品,最終發告警郵件,都是這個子產品,
AlarmMessage data ,data.getMessage為告警資訊,data.getReceiveKey為管理背景配置的告警接收人。
common-arbitrate子產品
ArbitrateConfigImpl類,存着channel和pipeline的映射關系
DeadNodeListener類,繼承InitializingBean接口,當afterPropertiesSet()接口調用,啟動線程,處理死亡節點(Node節點)
其中processDead()方法,确認節點死亡,會發送告警,并重新開機對應channel
common-DataSourceCreator、basedao、baseservcie,不多說,資料庫的連接配接及增删改查。
config子產品為各增删改查的業務子產品(channel、pipeline、canal、zk、node、alarm)
monitor為各種子產品的監控報警政策,報警收斂配置等
statistics為延遲、堆積等狀态的增删改查方法
user顧名思義,使用者,管理者,增删改查
remote子產品:這個子產品都是一些遠端調用的方法,用于擷取node,canal的一些狀态資訊
interceptor和impl分别為接口和實作,具體是幹嘛的,在接口的代碼裡,都有詳細的介紹
再看biz子產品的配置,配置采用spring配置,ORM架構為Mybatis
二、deployer子產品分析:
web容器為内嵌Jetty,實作類:JettyEmbedServer
啟動類:OtterManagerLauncher 加載配置檔案,調用jetty啟動web容器
resources下放入很多靜态檔案,和主配置檔案
三、web子產品:
放了一堆Action(Controller方法) ,調用biz子產品中的service,dao。