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