应用缓存服务器 coconut

LGPL
C/C++ 查看源码»
跨平台
2017-06-12
calvinwilliams

概述

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: 2 server_no: 1 secondstamp: 1492962986(2017-04-23 23:56:26) serial_no: 2

1.1.2.服务接口

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

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

  • 反解序列号<br> 方法 : GET<br> URL : http://(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 : http://(domain|ip):[port]/query<br> 返回值 : 如果调用成功,返回HTTP状态码200,HTTP体中回送"(剩余额度值)",如果发生参数错误则返回"-1";如果发生系统级错误,返回HTTP状态码非200<br>

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

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

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

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

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

加载中

评论(0)

暂无评论

coconut 更新至 0.0.7.1,应用缓存服务器

coconut 0.0.7.1 发布了。 fasterhttp更新至1.3.0 tcpdaemon更新至1.3.0:支持CPU亲缘性 支持设置IP 优化性能:已连接会话预分配内存 coconut是一款应用缓存服务器,主要用于场景化的缓存服务...

2017/06/19 00:11

coconut 更新至 v0.0.7.0,应用缓存服务器

coconut 更新至 v0.0.7.0,更新如下: 0.0.7.0 2017-06-11 coconut 改名为应用缓存服务器 调整了一些命令行参数 新增额度管理服务模式 coconut是一款应用缓存服务器,主要用于场景化的缓存服...

2017/06/12 14:24

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

利用Lucene实现文本自动分类

lucene是著名的开源技术,主要是作为全文检索使用。但是lucene存在很多隐藏的属性,文本分类就是其中的一种。 **先上代码** ``` //创建索引 public void createIndex() throws Exception { S...

2016/11/07 22:20
47
0
各种咖啡的英文名称

各种咖啡的英文名称

2016/03/27 10:25
5
1
The price of Large C plus

In addition , the grocery stores are Big C in addition to Tesco Lotus, the other also contains TOP'S, Watson and other small and medium-sized housewares stores. The price of Lar...

2016/12/20 11:14
4
0
a great deal of delicious

Krabi Weekend Market place was formerly a non-fixed weekend nighttime market, but it really has fascinated many vacationers. It is found in the street right behind the fashion o...

2016/12/22 15:52
1
0
one of the ancient products

Krabi native tools are turtle layer, caviar, dryed fish, machine dried shrimp, that happen to be very popular. Uttarakit Road is the better place to spend money according to Kra...

2016/12/22 15:42
0
0
mailed from Bangkok

Searching in Koh Samui is rather convenient. You will discover no substantial shopping malls and enormous supermarkets, solely the shopping market and small shops. And regular n...

2016/12/20 11:07
0
0
PHP 序列化变量的 4 种方法

序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。 1. s...

2013/01/12 16:21
119
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部