天天看點

Otter源碼深入詳解(二)

Otter源碼深入詳解(二)

先從manager的三個子子產品開始分析

一、biz子產品

autokeeper

AutoKeeperCollector類:

繼承自InitializingBean,afterPropertiesSet()調用後,調用startCollect()

Otter源碼深入詳解(二)

startCollect啟動線程,通過調用zk的四字指令,來擷取zk的狀态:

Otter源碼深入詳解(二)

autokeeper

AutoKeeperData類:繼承自AutoKeeperPersist接口

每次監控zk狀态,有新的連接配接加入的時候,就會調用autoKeeperData對象,将連接配接資訊,存入Map

Otter源碼深入詳解(二)
Otter源碼深入詳解(二)

Map的大體結構就是<server,<connection,[watcher,ephemeral]>>,說白了就是存的zk資訊

common-alarm子產品

主要是告警子產品,最終發告警郵件,都是這個子產品,

Otter源碼深入詳解(二)

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分别為接口和實作,具體是幹嘛的,在接口的代碼裡,都有詳細的介紹

Otter源碼深入詳解(二)

再看biz子產品的配置,配置采用spring配置,ORM架構為Mybatis

Otter源碼深入詳解(二)

二、deployer子產品分析:

web容器為内嵌Jetty,實作類:JettyEmbedServer

啟動類:OtterManagerLauncher 加載配置檔案,調用jetty啟動web容器

resources下放入很多靜态檔案,和主配置檔案

三、web子產品:

放了一堆Action(Controller方法) ,調用biz子產品中的service,dao。

繼續閱讀