高性能服务通讯框架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

相关文章
相关标签/搜索