1. 總體設計
1.1 基本設計概念和處理流程
1.1.1 程序劃分
主要分為服務端和客戶端兩個部分。
客戶端部分又分為同步與異步兩種模式。
1.1.2 處理流程描述
JAVA版接口平臺主要實現(xiàn)與外部接口的服務端和客戶端的通訊。并提供業(yè)務接口,允許基于當前內(nèi)核實現(xiàn)各種業(yè)務。
2. 平臺設計思想
2.1 業(yè)務無關性
本平臺設計的核心思想是實現(xiàn)通訊平臺的核心功能,盡可能使代碼與業(yè)務剝離,提高代碼的可重用性。
2.2 核心功能模塊
本平臺主要由幾個核心模塊所組成對各種業(yè)務的支持
2.2.1 通信模塊
使用JAVA1.4+版本提供的無堵塞IO實現(xiàn)服務端和客戶端的通訊,并提供同步和異步處理兩種方式
2.2.2 線程池服務
使用了JDK 1.5 帶的線程池,提供一個線程池的服務,為服務端或客戶端提供多線程處理的功能。本身實現(xiàn)了Singleton模式和自帶了監(jiān)控線程,實現(xiàn)了自我管理。
2.2.3 字節(jié)處理模塊
為解析協(xié)議提供簡便的方法處理字節(jié)數(shù)組。
2.3 主要接口
為了實現(xiàn)通信平臺的業(yè)務無關性,本平臺設計了一些接口提供給業(yè)務開發(fā)實現(xiàn)。
2.3.1 協(xié)議解析接口
為所有解析協(xié)議提供統(tǒng)一協(xié)議解析類接口。主要是為了統(tǒng)一協(xié)議解析的方式。
2.3.2 業(yè)務接口
業(yè)務接口主要有兩種:業(yè)務邏輯接口和業(yè)務實現(xiàn)接口。
2.3.2.1 業(yè)務邏輯接口
主要為了處理每一個指令的業(yè)務流程,例如先讀取,再處理業(yè)務,再返回結(jié)果;或者先發(fā)送指令,再等待返回結(jié)果。
2.3.2.2 業(yè)務實現(xiàn)接口
主要處理每個協(xié)議中每一個指令所對應的業(yè)務網(wǎng)處理。
2.3.3 注冊器接口
專門為客戶端登錄服務器時提供的統(tǒng)一的注冊方式。
3. 平臺設計
3.1 服務端的設計
3.1.1 模塊設計圖
3.1.2 功能
l 通訊服務
l 并發(fā)處理客戶端請求
l 自監(jiān)控
l 可自定義的業(yè)務接口
3.2 客戶端設計
3.2.1 模塊設計圖
3.2.2 功能
l 與服務端通訊
l 可自定義的業(yè)務接口
l 支持異步模式
4. 業(yè)務接口設計
4.1 服務端業(yè)務接口
4.1.1 業(yè)務邏輯接口
通過繼承一個業(yè)務邏輯類接口和一個抽象業(yè)務邏輯類實現(xiàn)統(tǒng)一的業(yè)務邏輯接口實現(xiàn)。主要功能有:
l 讀取請求內(nèi)容
l 發(fā)送請求
l 讀取配置文件
l 協(xié)議解析
l 反射調(diào)用業(yè)務實現(xiàn)接口
4.1.2 業(yè)務實現(xiàn)接口
對于單個指令的業(yè)務實現(xiàn)
4.2 客戶端業(yè)務接口
通過繼承客戶端類,通過調(diào)用通訊接口實現(xiàn)客戶端的業(yè)務流程,主要功能有:
l 發(fā)送指令
l 接收指令
l 重置連接
5. 系統(tǒng)自我監(jiān)控設計
5.1 客戶端
5.1.1 斷開連接后重連
客戶端連接到服務端時會自動判斷是否正常連接,如果在通訊過程中,發(fā)現(xiàn)網(wǎng)絡中斷,將重新發(fā)起一個連接請求,并自動注冊到服務器上。
5.1.2 同步通信超時
客戶端提供異步通信和同步通信。在同步通信是一個線程堵塞的方法,該方法會等待結(jié)果的返回才退出該方法。但如果等待時間超過配置的超時時間,會拋出一個通信超時的異常,并退出該方法。
5.2 服務端
5.2.1 線程回收
服務端處理請求都是使用線程池處理每個客戶端的請求。在客戶端通訊的過程中如果連接斷開了,或者發(fā)生了一些特定的異常,則線程池監(jiān)控線程會將該線程中的連接斷開,并將線程回收到線程池中。
6. 協(xié)議解析設計
6.1 協(xié)議接口
實現(xiàn)一個協(xié)議接口和一個協(xié)議抽象類,每個通信節(jié)點所使用的協(xié)議都必須實現(xiàn)該接口,里面封裝了一些協(xié)議基本的信息和一些基本的協(xié)議解析方法。主要包含方法:
l 協(xié)議完整性校驗接口
l 指令解析接口
l 設置包頭長度
l 設置包體長度
l 設置包尾長度
6.2 指令接口
實現(xiàn)一個協(xié)議里每個指令的調(diào)用,設計目的是將指令的字符轉(zhuǎn)化為對象,可以方便地面向?qū)ο箝_發(fā)。主要包含方法:
l 指令初始化接口
l 請求參數(shù)接口
l 應答參數(shù)接口
7. 系統(tǒng)出錯處理設計
所有的日志信息和出錯信息會拋出到同一個方法中,由系統(tǒng)統(tǒng)一處理。