高性能服务通信框架Gaea的详细实现--protocol的制定与实现

#Gaea协议

##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);支持三种语言的客户端 消息主体

协议在发送的时候,在其头尾增加了分隔符。五个风格符同时出现,且顺序一定的概率及其小,因此此风格符是可用的。

编码说明
009tab
010换行键(line feed) LF
013回车键 CR
017ctrl键 键盘控制码
018alt 键 键盘控制码

##protocol的代码实现

协议的实现比较简单,这里就从代码结构上简单了解一下

  1. compress 压缩算法

CompressBase.java 是压缩的虚工厂类,其中包含两种压缩算法,一种是不压缩,一种是sevenZip压缩算法。从sevenZip的实现中可以看出,压缩功能并没有实现

  1. exception 异常类

在exception包中Gaea定义了很多种Gaea框架中使用到的异常类

  1. sdp消息体类型

其中包括ResponseProtocol,RequestProtocol,ExceptionProtocol,HandclaspProtocol,ResetProtocol;其中并没有协议定义中的Config;其中每个消息体类型的结构,具体看代码就可以了

  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

转载于:https://my.oschina.net/le284/blog/265278

Gaeaphp 是一个基于 flightphp 的 PHP 框架基础环境要求php 5.4 安装WebServer,具体配置方法参见Flight按照要求Php-Memcached扩展,具体配置方法参见pecl结构设计项目目录结构|-app/|    |-configs/    配置文件夹|    |-bootstrap.php   引导文件|-src/      代码目录|    |-libs/       类库方法库|    |  |-classes/|    |  |-functions/|    |-modules/    模块文件夹|    |  |-xxxmodules/|    |  |  |-controller/|    |  |  |-libs/|    |  |  |-model/|    |-templates/|    |  |-default/|-temp/     临时目录|    |-caches/|    |-compiled/|    |-logs/url访问框架采用mvc设计模式开发,采用单一入口方式部署和访问。 访问示例http://yourdomain.com/module/controller/action/param1/param2其中将会访问/src/module/controller.php下的action方法引导文件/app/bootstrap.php引导文件完成了命名空间的注册,扩展模版引擎,以及路由的注册。其中常量定义:ROOT_PATH 系统根目录APP_PATH app目录TEMP_PATH 临时目录SSRC_PATH     系统代码目录WEB_PATH      系统WEB资源目录系统配置所有的配置文件均已数组形式返回。具体配置文件项在/app/configs下|-db.php    数据库(Mysql)配置文件|-memcache.php       缓存(Memcache)配置文件|-route.php     路由配置文件|-smarty.php    模版引擎配置文件|-system.php    系统配置文件系统配置结构为一维数组,各项参数见注释return  array(     'theme'     =>      'default',   //主题     'debug'     =>      true,       //是否调试信息     'log_level' =>      'DEBUG',    //日志打印级别EMERGENCY|ALERT|CRITICAL|ERROR|WARNING|NOTICE|INFO|DEBUG     'cache_expire'  =>  3600,       //缓存时间,单位秒     'prefix'  =>  'sobey_',   //存储键值前缀,包含db和cache );数据库配置结构为二维数组,默认使用default,可参考default结构配置多个数据库配置如testreturn  array(     'default'   =>  array(             'database_type'=>'mysql',             'database_name'=>'ecshop',             'server'=>'127.0.0.1',             'username'=>'root',             'password'=>'123456',             //其他可选参数参见php手册             //http://www.php.net/manual/en/pdo.setattribute.php             'port'=>3306     ),     //test配置非系统默认     'test'      =>  array(         //.........     ), );Memcached配置结构为二维数组,默认使用default,可参考default结构配置多个数据库配置如testreturn array(     'servers'=>array(         //array('域名','端口','权重')      array('127.0.0.1','11211'),     ),     //options为Memcached::setOptions参数     'options'=>array(         //Memcached::OPT_HASH => Memcached::HASH_MURMUR,         //Memcached::OPT_PREFIX_KEY => "widgets"     ), );smarty配置结构为二维数组,默认使用default,可参考default结构配置多个数据库配置如testreturn array(     'servers'=>array(         //array('域名','端口','权重')      array('127.0.0.1','11211'),     ),     'options'=>array(         //Memcached::OPT_HASH => Memcached::HASH_MURMUR,         //Memcached::OPT_PREFIX_KEY => "widgets"     ), );模块modules一个模块的基本结构为,请遵循以下的规则:|-src/      代码目录|    |-modules/    模块文件夹|    |  |-xxxmodules/         模块根目录|    |  |  |-api/    接口文件目录|    |  |  |-controller/     控制器文件夹 |    |  |  |-libs/       工具类库|    |  |  |-model/     模型类库项目开发技巧Core文件Core::config($file,[$key,[$dafault = false,[$reload = false]]])   获取配置文件Core::load_func($func,[$path= '']) 加载函数Core::log($module,$level,$message,[$context = array()]) 日志记录Core::db([$key='default',[$option=array()]]) 获取db实例Core::memcached([$key='default',[$servers=array(),[$options=array()]]]) 获取memcached实例项目函数库一些项目的全局函数位于/src/libs/functions/global.php,该文件会被自动加载。 自己可新建模块的函数库并使用Core::load_func()引入使用模版模版文件位于: /src/teplate/{风格}/sso(模块)下,为smarty语法文件 标签:Gaeaphp  Web框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值