Adf.NumberServer v2.0.0 manual

本文简要介绍Adf.NumberServer在windows平台下的使用。
本服务常用于生成用户标识,订单标识,会话标识等场景。

1.  协议描述

服务完全兼容 memcached 文本协议, 使用支持1.2.0 或以上版本的任意一款客户端均可访问,不区分语言,本服务仅支持 set,incr,decr,get,stats 五个命令,其它命令均不受支持。

Protocol:
https://github.com/memcached/memcached/blob/1.6.0-beta1/doc/protocol.txt

根据协议:

incr 可至int64最大值,超过最大值后将会归零后循环,
decr 可至最小值0,低于0值时会保持0值,不会出现负数。

2.  键约束

本服务支持最长KEY为 250字符, 超过该长度服务将会出现异常。
本服务不支持多字节KEY, 仅支持ASCII字符。

3.  单机模式

在数据不要求安全的情况下,本服务支持单机模式。
单机模式时需要将配置文件中所有以HA:方式开始的配置禁用或删除掉。

4.  高可用模式(High-Availability)

本服务基于 adf.service 组件, 支持master/slave/witness 的高可用方式,为提高可用性,master与slave通信为实时同步而保持数据的绝对一致性。

启用HA需配置:
HA:Path                高可用配置数据存储路径
HA:Node1             默认的master服务
HA:Node2             默认的slave服务
HA:Node3             默认的witness 服务

注意:本服务在高可用环境时, 只有master会对外提供服务,其它两个节点不会对外提供服务,因此,你的客户端需要能自动的判断节点的可用性。

5.  主备切换

本服务允许你直接停掉master主机来进行手动的主备切换,主机停止后slave将自动成为master以提供服务。
当有需要再次启动原master时,原master节点将会以slave成员启动。

注意:你不能手动的频繁来回切换,因为数据复制原因,你必需确定现slave成员的日志文件中出现 replication client: request replicate sync 日志后再进行回切, 否则有可能出现数据丢失。

6.  下载与安装

通过以下连接下载:
http://www.aooshi.org/adf/download/Adf.NumberServer-2.0.0.zip
http://www.aooshi.org/adf/doc/adf.numberserver-2.0.0-manual.pdf

工具描述:
ToolInstallService             用于将应用以服务方式安装至系统
ToolRunConsole               手动运行应用
ToolUninstallService            用于卸载已安装在系统中的应用

7.   配置说明

区分大小写

Port 服务端口,默认为: 6224
Ip 允许配置本机IP或 * , * 表示当前设备的所有网络接口。
DataPath 数据存储路径
Log:FlushInterval 日志刷新间隔, 建议值: 5s
Log:Path 日志存储路径。
HA:Node1 高可用模式的Master节点
HA:Node2 高可用模式的Slave节点
HA:Node3 高可用模式的Witness节点
HA:Keepalive 高可用模式节点检测间隔,默认: 5s
HA:ElectTimeout 高可用模式Master节点选举超时时间,默认:5s
HA:Mails 高可用模式时 节点变化通知邮件收件人

8.   模糊查询协议扩展

在原服务协议基础上,增加模糊查询命令扩展。
get * {prefix} {size}
*               获取模糊匹配,第一个*  表示模糊匹配模式
prefix        表示需要匹配的键前缀
size           表示需要返回的条数

get * * 10
上述命令将获取所有键中的任意 10 条数据

get * * 100
上述命令将获取所有键中的任意 100 条数据

get * ab 10
上述命令将获取所有键以ab开始的的任意10 条数据

get * am 10
上述命令将获取所有键以am开始的的任意10 条数据

匹配:  amaooshi,  amtom
不匹配: name,  toam

9.    使用Adf.MemcachePool 示例

配置添加:

将下列配置中的IP地址更换为自已的

<configSections>
<section name="NumberServer" type="Adf.Config.IpGroupSection,Adf"/>
</configSections>

<NumberServer>
<!-- HA:Node1 -->
<add ip="192.168.199.14" port="6224"/>
<!-- HA:Node1 -->
<add ip="192.168.199.13" port="6224"/>
</NumberServer>

添加类:

public class NumberServerClient : Adf.MemcachePool
{
public static readonly Adf.MemcachePool Instance = new Adf.MemcachePool("NumberServer");
}

使用与示例:

long userId = NumberServerClient.Instance.Increment("userid");
long userId = NumberServerClient.Instance.Increment("id.user.net.cn");
long productId = NumberServerClient.Instance.Increment("/product1/id");
long p2Id = NumberServerClient.Instance.Increment("/product2/id");
long p3Id = NumberServerClient.Instance.Increment("/product3/id");
long orderId = NumberServerClient.Instance.Increment("/order/id");
long bookId = NumberServerClient.Instance.Increment("/book/id");
long bookId = NumberServerClient.Instance.Increment("id.book.net.cn");


 

 

 

此条目发表在adf分类目录,贴了标签。将固定链接加入收藏夹。