HTTP接口
HTTP接口
sekiro服务提供下列三组http的API,供业务使用
查看分组列表
展示当前系统有那些注册过的group
http://sekiro.iinti.cn/business/groupList
查看队列状态
对于某个group,查看当前挂载了多少个设备,在多设备负载均衡的时候,他会比较有用
http://sekiro.iinti.cn/business/clientQueue?group=test
调用转发
通过httpAPI的方式,可以直接拼接如下URL,调用请求将会被转发到SekiroClient的handler上。为方便可视化,请求参数扁平化,即sekiro保留参数和业务参数公用传输字段域
http://sekiro.iinti.cn/business/invoke?group=test&action=test¶m=testparm
GET和POST
本接口同时支持GET和POST方法,其中GET方法方便浏览器直接打开使用,方便可视化。POST方法则可以支持传递JSON、传递超长字段等常见。
json传递参数方式,还可以支持子json参数,此时在SekiroClient看到也是一个子json
method | url | content-type | body |
---|---|---|---|
GET | http://sekiro.iinti.cn/business/invoke?group=test&action=test¶m=testparm | 无 | 无 |
POST | http://sekiro.iinti.cn/business/invoke | application/json;charset=utf8 | { "group": "test", "action": "test", "param": "testparm" } |
POST | http://sekiro.iinti.cn/business/invoke | application/x-www-form-urlencoded;charset=utf8 | group=test&action=test¶m=testparm |
上述3种方法,在SekiroClient中,均会得到相同的参数内容:
{
"group": "test",
"action": "test",
"param": "testparm"
}
sekiro_token
考虑安全要求,sekiro设计了其访问授权机制。分三种场景
场景 | 鉴权 | 解读 |
---|---|---|
DEMO版本 | 否 | github demo版本,不具备授权检查机制,默认所有请求转发放行 |
商业版本,但为匿名访问方式 | 否 | 对于没有在sekiro后台创建group的,该group为匿名访问,此时默认允许直接调用,但是具备一个很低的qps额度。 sekiro管理员可以在后台关闭匿名访问开关,或者调整匿名访问qps额度 |
商业版本,但为正式访问方式 | 是 | 必须鉴权,需要传递额外字段:sekiro_token ,如:http://sekiro.iinti.cn:5612/business/invoke?group=test&action=test¶m=testparm&sekiro_token=xxxx 其中 sekiro_token 是在web后台展示的token内容 |
调用转发策略
sekiro调用转发提供了三种模式,以帮助灵活的控制转发设备。
OneByOne
默认策略,即对于客户端平均的,一个接一个的进行调度转发。
指定设备,bindClient
由调用方指定特定设备id,然后转发到特定设备,如此实现特定设备session控制。
启用方法:指定参数bind_client
,如:
http://sekiro.iinti.cn/business/invoke?group=test&action=test¶m=testparm&bind_client=clientId
一致性hash调度
一致性hash分布式服务器弹性伸缩,分布式缓存降压方面有很大作用。一致性哈希可以保证特定的请求分布在特定的节点下。 在抓取场景中,则会导致固定的请求只会被特定的设备处理。这样不会出现请求设备跳跃问题,可以减少一个风控对抗点。
启动用方法: 指定参数:consistent_key
,如:
http://sekiro.iinti.cn/business/invoke?group=test&action=test¶m=testparm&consistent_key=clientId