proxy的配置详解
application.properties配置¶
以下为conf/application.properties文件配置详解。源码中的配置文件没有罗列出所有配置,只保留了必需的配置, 其他配置都采用了默认值。如果需要可以根据以下表格来在配置文件中新增条目。
例如:若需要把预测所用的grpc端口更改为8870,则在application.properties文件中手动添加: proxy.grpc.inter.port=8870
配置项 | 配置项含义 | 默认值 |
server.port | 监听的http端口 | 8059 |
coordinator | 本方partid,此参数比较重要 | 9999 |
inference.service.name | 转发服务名称 | serving |
print.input.data | 访问日志中是否打印输入参数 | false |
print.output.data | 访问日志中是否打印返回结果 | false |
proxy.async.coresize | 异步处理http请求线程池核心线程数 | 10 |
proxy.async.maxsize | 异步处理http请求线程池最大线程数 | 100 |
proxy.async.timeout | 处理http请求的超时时间 | 5000 |
proxy.grpc.batch.inference.timeout | 批量预测请求的超时时间 | 10000 |
proxy.grpc.inference.timeout | 单笔预测请求的超时时间 | 3000 |
proxy.grpc.inter.port | 对集群外暴露的grpc端口 | 8869 |
proxy.grpc.intra.port | 对集群内暴露的grpc端口 | 8879 |
proxy.grpc.threadpool.coresize | 处理grpc请求的线程池的核心线程数 | 50 |
proxy.grpc.threadpool.maxsize | 处理grpc请求的线程池的最大线程数 | 100 |
proxy.grpc.threadpool.queuesize | 处理grpc请求的线程池的队列大小 | 10 |
proxy.grpc.unaryCall.timeout | unaryCall请求的超时时间 | 3000 |
useZkRouter | 是否使用zk | true |
zk.url | zk集群地址 | localhost:2181,localhost:2182,localhost:2183 |
acl.enable | 是否使用zookeeper acl鉴权 | false |
acl.username | acl 用户名 | 默认空 |
acl.password | acl 密码 | 默认空 |
route_table配置¶
下面的json代码大致说明了route_table.json的填写规则,根据具体案例来配置。
启动注册中心时,只配置默认对外转发地址(default)即可 ;
在2.1.0版本开始支持HTTP接口配置,2.1.0之前的版本只支持GRPC配置。
1.GRPC
```yaml
{
"route_table": {
"default": { // 使用此处的default配置就能向对方发送请求,能满足大部分需求。
"default": [
{ // 此处用于配置serving-proxy默认对外转发地址, 切记不能配置成serving-proxy自己的ip端口,会形成回环
"ip": "192.168.1.1",
"port": 8869
}
]
},
// 以下是路由中己方部分的配置说明:
(提示:如果使用zk的话,己方的配置其实是可以省略的,因为路由信息在服务启动的时候全注册到zk了,系统会在zk上拿到想要的信息;
如果部署时候选择的是无zk方案,那么下面的配置不能缺少)
//己方的serving-proxy 在收到grpc unaryCall接口的请求后,会根据请求中的目的partyId尝试匹配。
比如请求中目的partId为10000,则会在路由表中查找是否存在10000的配置
//此处的10000表示目的partId 为10000时的路由,匹配到10000之后再根据请求中的角色信息role,
比如请求role为serving,则会继续往下面匹配serving的配置
"10000": {
"default": [ //可以给出一个默认值, 在未找到对应role的路由地址时,会使用default的配置
{
"ip": "127.0.0.1",
"port": 8879
}
],
"serving": [
// 当匹配到role为serving,则代表请求为发给serving-server的请求,这时检查是否启用了ZK为注册中心,
如果启用ZK则优先从ZK中获取目标地址,未找到时使用以下地址
{ // 此处配置己端对应serving服务地址列表,ip和port对应serving-server所启动的grpc服务地址
"ip": "127.0.0.1",
"port": 8000
}
]
}
},
"permission": {
"default_allow": true // 此处配置当前路由表规则开启/关闭
}
}
2.HTTP
在2.1.0版本开始支持guest和host之间http通信,配置举例如下:
yaml
{
"route_table": {
"default": {
"default": [
{
"url":"http://127.0.0.1:8869/unary"
}
]
},
......
},
"permission": {
"default_allow": true // 此处配置当前路由表规则开启/关闭
}
}
```