1. 程式人生 > >集群通信組件tribes之應用程序處理入口

集群通信組件tribes之應用程序處理入口

app sdn 兩個 https pub src listen 負責 microsoft

Tribes為了更清晰更好地劃分職責。它被設計成用IO層和應用層,IO層專心負責網絡傳輸方面的邏輯處理。把接收到的數據往應用層傳送,當然應用層發送的數據也是通過此IO層發送,數據傳往應用層後必需要留一些處理入口供應用層進行邏輯處理,而考慮系統解耦,這個入口最好的方式是使用監聽器模式,在底層發生各種事件時觸發全部安裝好的監聽器,使之運行監聽器裏面的處理邏輯。這些事件主要包括了集群成員的加入和退出、消息報文接收完畢等信息,所以整個消息流轉過程被分成兩類監聽器。一類是跟集群成員的變化相關的監聽器MembershipListener,另外一類是跟集群消息接收發送相關的監聽器ChannelListener。應用層僅僅要關註這兩個接口即可了,寫好各種處理邏輯的監聽器加入到通道中即可。

以下是這兩個監聽器的接口,從接口定義的方法能夠非常清晰地看到各個方法被調用的時機,MembershipListener類型中memberadd是有成員加入時調用的方法,memberDisappeared是成員退出時調用的方法,ChannelListener類型中accept用於推斷是否接受消息,messageReceived用於對消息處理的方法,應用層把邏輯分別寫到這幾個方法就能夠在相應時刻運行相應的邏輯。

public interface MembershipListener {

public void memberAdded(Member member);

public void memberDisappeared(Member member);

}

public interface ChannelListener {

public void messageReceived(Serializable msg, Member sender);

public boolean accept(Serializable msg, Member sender);

}

技術分享

我們能夠在應用層自己定義若幹監聽器而且加入到GroupChannel中的兩個監聽器列表中,GroupChannel事實上能夠看成是一個封裝了IO層的抽象容器,它會在各個適當的時期遍歷監聽器列表中的全部監聽器並調用監聽器相應的方法,即運行應用層定義的業務邏輯。至此完畢了數據從

IO層流向應用層並完畢處理。兩種類型的監聽器給應用層提供了處理入口,應用層僅僅需關註邏輯處理,而其它的IO操作則交由IO層。這兩層通過監聽器模式串聯起來,優雅地將模塊解耦。


點擊訂購作者《Tomcat內核設計剖析》



集群通信組件tribes之應用程序處理入口