這是openfire消息接收、處理流程圖下載,Apache MINA 是一個網(wǎng)絡應用框架,有助于用戶非常方便地開發(fā)高性能、高伸縮性的網(wǎng)絡應用。它通過Java NIO提供了一個抽象的、事件驅(qū)動的、異步的位于各種傳輸協(xié)議(如TCP/IP和UDP/IP)之上的API,Apache MINA 通?杀环Q之為。
openfire消息接收、處理流程圖首先boot()調(diào)用of_01.launch()向core中注冊了一個OpenFlow_01_Task的類的組件,并且把這個組件明明為"of_01"。
openfire消息接收、處理流程圖在這個類中有一個run方法會輪詢所有socket,包括用來監(jiān)聽連接請求的listener和維持與OVS連接的socket,每一個和OpenFlow交換機的連接都會生成一個Connection類的實例,當收到OpenFlow消息之后,會調(diào)用Connection類中定義的read()方法來檢查這個OpenFlow消息的頭部是不是符合規(guī)范,包頭部中的length是不是和包本身的長度相符,是何種類型的OpenFlow消息等,最終交給相應的handle函數(shù)來進行處理。
在read()方法中,會根據(jù)解析出的OpenFlow類型調(diào)用unpackers函數(shù),實際上是調(diào)用了libopenflow_01.py中定義的每種OpenFlow消息的類中的unpack方法,生成一個賦過值的該類的實例。
值得注意的是可能會出現(xiàn)幾個OpenFlow消息在一個TCP包中的情況,這里采用順序解析的方式,每解析完一個OpenFlow消息,就會得到一個新的offset,從而解析下一個OpenFlow消息。
1. 由于每個用戶都有1到多個好友,服務器的處理量被放大。
2. 分布式處理的復雜度,你的好友可能同時分布在n個服務器上,而且同時上線的好友沒有規(guī)律。
3. 請求量不均衡,可能瞬時非常大。比如你服務器剛重啟所有的客戶幾乎同時自動重連過來。比如Twitter宕機都是在一些熱點事件時,大家活躍度突然同時增大。所以系統(tǒng)必須按峰值的處理量設計。
4. 緩存cache設計困難。每個用戶的在線好友都不同,而且隨時在變。
5. 隱身同黑名單的業(yè)務邏輯很難高效處理。