高性能服務通訊框架Gaea的詳細實現--protocol的制定與實現

#Gaea協議java

##protocol的總體構成算法

Gaea是自定義的二進制協議框架

protocol

版本號:默認爲1;用於後續協議升級 協議總長度:整個協議的長度 序列號:SessionId 每次自加,當數值大於1024 * 1024 * 1024時從新賦值爲1;客戶端,服務端區分是哪個請求 服務編號:客戶端配置文件中serviceid;之後服務虛擬化使用,暫時沒有用到 消息體類型:Response(1),Request(2),Exception(3),Config(4),Handclasp(5),Reset(6);根據不一樣的消息類型,作相應的處理 壓縮算法:不壓縮UnCompress(0),SevenZip(1), DES(2);暫時不支持壓縮 序列化規則:JSON(1),JAVABinary(2),XML(3),GaeaBinary(4);暫時只有GaeaBinary一種序列化方式 平臺號:Dotnet(0),Java(1),C(2);支持三種語言的客戶端 消息主體工具

協議在發送的時候,在其頭尾增長了分隔符。五個風格符同時出現,且順序必定的機率及其小,所以此風格符是可用的。編碼

編碼 說明
009 tab
010 換行鍵(line feed) LF
013 回車鍵 CR
017 ctrl鍵 鍵盤控制碼
018 alt 鍵 鍵盤控制碼

##protocol的代碼實現加密

協議的實現比較簡單,這裏就從代碼結構上簡單瞭解一下server

  1. compress 壓縮算法

CompressBase.java 是壓縮的虛工廠類,其中包含兩種壓縮算法,一種是不壓縮,一種是sevenZip壓縮算法。從sevenZip的實現中能夠看出,壓縮功能並無實現接口

  1. exception 異常類

在exception包中Gaea定義了不少種Gaea框架中使用到的異常類ip

  1. sdp消息體類型

其中包括ResponseProtocol,RequestProtocol,ExceptionProtocol,HandclaspProtocol,ResetProtocol;其中並無協議定義中的Config;其中每一個消息體類型的結構,具體看代碼就能夠了get

  1. serializer序列化類型

包括GaeaSerialize和JSONSerialize兩種,從代碼中能夠看出來JSONSerialize並不支持。若是須要支持,實現其接口就行,應該比較容易擴展

  1. sfp.enumeration 枚舉類型

主要定義了一些類型,和數字進行對應。

  1. sfp.v1 協議的建立和解析

實現主要的協議建立和解析的功能; 其中SCFStruct中定義了每一個字段的長度。

  1. utility工具包

提供協議須要使用的一些工具,好比int轉byte[],char轉byte[]等等。

  1. server.contract.annotation註解的定義

對於Gaea使用到的註解的定義,主要是標記接口,實現,接口方法等。其具體的意義,可在Gaea的使用中看到

  1. secure加解密工具包

提供Base64,DES加密算法的工具包

###le284

相關文章
相關標籤/搜索