coconut 应用缓存服务器开源项目

我要开发同款
匿名用户2017年06月12日
120阅读
所属分类C/C++、服务器软件、缓存服务器
授权协议LGPL

作品详情

coconut是一款应用缓存服务器,主要用于场景化的缓存服务。

coconut目前提供了两种场景模式:全局序列号发生器、全局额度管理器,可成为分布式、集群化系统架构中高性能独立功能部件。

全局序列号发生器为分布式、集群化系统提供有序增长、全局唯一、可反解的高性能序列号生成分发服务

全局额度管理器为分布式、集群化系统提供对理财额度、库存数量等高频热点对象的高性能无锁接口服务

1.1.全局序列号发生器1.1.1.序列号格式

coconut生成的序列号为16个64进制可见字符组成,具体格式如下:

区号区名说明第一区分区目录2个六十四进制字符共12个二进制位<br>第一段3个二进制位表示保留区六十四进制字符个数<br>第二段3个二进制位表示服务器编号区六十四进制字符个数<br>第三段3个二进制位表示秒戳区六十四进制字符个数<br>第四段3个二进制位表示序号区六十四进制字符个数第二区保留区1个六十四进制字符有6个二进制位可用第三区服务器编号区2个六十四进制字符可表示4096台发起器服务器第四区秒戳区6个六十四进制字符可表示2179年的秒戳第五区序号区5个六十四进制字符序号区间[1,10亿]  共16个六十四进制字符

(64进制字符集合:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_)

如序列号:aR2011o_cWG00002

反解出来包含如下信息:reserve:2server_no:1secondstamp:1492962986(2017-04-2323:56:26)serial_no:2

1.1.2.服务接口

coconut的全局序列号发生器提供了2个HTTP接口:

获取序列号<br>方法:GET<br>URL: https://(domain|ip):[port]/fetch<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送一个有序增长的全局唯一的序列号,如aR2011o_cWG00002;如果发生系统级错误,返回HTTP状态码非200<br>备注:可利用备注区区分业务类型;可利用服务器编号部署序列号发生器集群

反解序列号<br>方法:GET<br>URL: https://(domain|ip):[port]/explain?sequence=(序列号)<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送反解文本;如果发生系统级错误,返回HTTP状态码非200<br>备注:反解文本格式"reserve:(保留值)server_no:(服务器编号)secondstamp:(1970年至今秒戳)((人可阅读的日期时间格式))serial_no:(序号)"

1.2.全局额度管理器

全局额度管理器提供高性能无锁接口对额度、库存等高频热点对象做查询额度、申请额度、撤销流水、补充额度、扣减额度、清空额度等处理。

1.2.1.使用过程

命令行指定额度、导出结果流水文件名启动coconut,coconut对外提供HTTP接口,客户端可长/短连接发送指令给coconut以操作额度。期间还可以补充、扣减甚至清空额度。当额度为0时自动导出结果流水文件,可能会重复导出覆盖导出文件。

导出结果流水文件格式为每行一条流水,白字符分割为两列:申请流水号、申请额度,如果某流水被撤销则再加一列:撤销流水号。

1.2.2.服务接口

coconut的全局额度管理器提供了6个HTTP接口:

查询额度<br>方法:GET<br>URL: https://(domain|ip):[port]/query<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送"(剩余额度值)",如果发生参数错误则返回"-1";如果发生系统级错误,返回HTTP状态码非200<br>

申请额度<br>方法:GET<br>URL: https://(domain|ip):[port]/apply?amt=(额度值)<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送"(申请流水号)(剩余额度值)",如果额度已空或额度不够则返回"0",如果发生参数错误则返回"-1";如果发生系统级错误,返回HTTP状态码非200<br>

撤销流水<br>方法:GET<br>URL: https://(domain|ip):[port]/cancel?jnlsno=(申请流水号)<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送"(撤销流水号)(剩余额度值)",如果找不到原申请流水或已被撤销则返回"0",如果发生参数错误则返回"-1";如果发生系统级错误,返回HTTP状态码非200<br>

补充额度<br>方法:GET<br>URL: https://(domain|ip):[port]/increase?amt=(额度值)<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送"(剩余额度值)",如果发生参数错误则返回"-1";如果发生系统级错误,返回HTTP状态码非200<br>

扣减额度<br>方法:GET<br>URL: https://(domain|ip):[port]/decrease?amt=(额度值)<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送"(剩余额度值)",如果发生参数错误则返回"-1";如果发生系统级错误,返回HTTP状态码非200<br>

清空额度<br>方法:GET<br>URL: https://(domain|ip):[port]/empty<br>返回值:如果调用成功,返回HTTP状态码200,HTTP体中回送"(剩余额度值)",如果发生参数错误则返回"-1";如果发生系统级错误,返回HTTP状态码非200<br>

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论