关键配置类介绍

本文介绍 RPC 的关键配置类,您可以基于这些配置类进行开发。

ProviderConfig

属性

默认值

说明

id

自动生成

ID

application

空 ApplicationConfig

设置应用对象。

interfaceId

-

设置服务接口(唯一标识元素)。

无论是普通调用还是返回调用,这里都设置实际的接口类。

uniqueId

-

设置服务标签(唯一标识元素)。

filterRef

-

过滤器配置实例。

List

filter

-

过滤器配置别名。

List,多个别名使用英文逗号(,)分隔。

registry

-

设置服务端注册中心。

List

methods

-

方法级配置,配置格式:Map<String, MethodConfig>

serialization

hessian2

设置序列化协议。

register

true

是否注册服务。

取决于实现,可能不生效。

subscribe

true

是否订阅服务。

取决于实现,可能不生效。

proxy

javassist

设置代理类型,支持 javassist 代理和 JDK 动态代理。

ref

-

服务接口实现类

server

-

服务端

List,可以一次发到多个服务端。

delay

0

设置服务延迟发布时间。

设置为 -1 代表 spring 加载完毕(通过 spring 才生效)。

weight

-

设置服务静态权重。

include

-

发布的方法列表,多个方法间以英文逗号(,)分隔。例如:

method1,method2,method3

exclude

-

不发布的方法列表,多个方法间以英文逗号(,)分隔。例如:

method1,method2,method3

dynamic

true

是否为动态注册。

配置为 false 表示不主动发布,您需要到管理端进行上线操作。

priority

-

设置服务优先级。

数值越大,优先级越高。

bootstrap

bolt

设置服务发布启动器。

executor

-

设置自定义线程池。

timeout

-

设置服务端执行超时时间。

单位:毫秒

超时后不会打断执行线程,只是打印警告。

concurrents

-

设置接口下每个方法的最大可并行执行请求数,取值如下:

  • -1:关闭并发过滤器。

  • 0:开启过滤,但不限制并发执行数量。

cacheRef

-

结果缓存实现类

mockRef

-

Mock 实现类

mock

-

是否开启 Mock。

validation

-

是否开启参数验证(基于 JSR303)。

compress

false

是否启动压缩。

cache

false

是否启用结果缓存。

parameters

-

额外属性,格式:Map<String, String>

ConsumerConfig

属性

默认值

说明

id

自动生成

ID

application

空 ApplicationConfig

设置应用对象。

interfaceId

-

设置服务接口(唯一标识元素)。

无论是普通调用还是返回调用,这里都设置实际的接口类。

uniqueId

-

设置服务标签(唯一标识元素)。

filterRef

-

设置过滤器配置实例。

List

filter

-

设置过滤器配置别名。

List,多个别名使用英文逗号(,)分隔。

registry

-

设置服务端注册中心。

List

methods

-

方法级配置,格式:Map<String, MethodConfig>

serialization

hessian2

设置序列化协议。

register

true

是否注册服务。

取决于实现,可能不生效。

subscribe

true

是否订阅服务。

取决于实现,可能不生效。

proxy

javassist

设置代理类型,支持 javassist 代理和 JDK 动态代理。

protocol

bolt

设置调用的协议,目前支持 bolt、rest、dubbo。

directUrl

设置直连地址,用于直连后 register。

generic

false

是否为泛化调用。

connectTimeout

1000

设置建立连接超时时间。

单位:毫秒

disconnectTimeout

10000

设置断开连接等待超时时间。

单位:毫秒

cluster

failover

设置集群模式。

connectionHolder

all

设置连接管理器实现。

loadBalancer

random

设置负载均衡算法。

lazy

false

是否延迟建立长连接。

第一次调用时创建。

sticky

false

是否使用粘性连接。

取值为 true 时,跳过负载均衡算法,使用上一个地址(一个连接断开后,才会选下一个地址)。

inJVM

true

是否转为 JVM 调用。

配置为 true 时,由 JVM 发现服务提供者,使用本地配置。

check

false

设置是否检查强依赖。

配置为 true 时,若无可用服务端,会导致启动失败。

heartbeat

30000

设置客户端给服务端发送的心跳间隔。

取决于实现,可能不生效。

reconnect

10000

设置客户端重建端口长连接的间隔。

取决于实现,可能不生效。

router

-

设置路由器配置别名。

List

routerRef

-

设置路由器配置实例。

List

bootstrap

bolt

设置服务引用启动器。

addressWait

-1

设置等待地址获取时间。

取决于实现,可能不生效。

timeout

3000

设置调用超时时间。

单位:毫秒

retries

0

设置失败后重试次数。

跟集群模式有关,failover 会读取此参数。

invokeType

sync

设置调用类型,取值如下:

  • sync:同步调用,Bolt 默认的调用方式。

  • oneway:异步调用,消费方发送请求后直接返回,忽略提供方的处理结果。

  • callback:异步调用,消费方提供一个回调接口,当提供方返回后,SOFA 框架会执行回调接口。

  • future:异步调用,消费方发起调用后马上返回,当需要结果时,消费方需要主动去获取数据。

onReturn

-

接口下每个方法的最大可并行执行请求数,取值如下:

  • -1:关闭并发过滤器。

  • 0:开启过滤,但不限制最大请求数。

cacheRef

-

结果缓存实现类。

mockRef

-

Mock 实现类。

cache

false

是否启用结果缓存。

mock

-

是否开启 Mock。

validation

-

是否开启参数验证(基于 JSR303)。

compress

false

是否启动压缩。

parameters

-

额外属性,格式:Map<String, String>

MethodConfig

属性

默认值

备注

name

-

设置方法名。

不能用于重载方法。

timeout

-

设置调用超时时间。

单位:毫秒

retries

-

设置失败后重试次数。

invokeType

-

设置调用类型,取值如下:

  • sync:同步调用,Bolt 默认的调用方式。

  • oneway:异步调用,消费方发送请求后直接返回,忽略提供方的处理结果。

  • callback:异步调用,消费方提供一个回调接口,当提供方返回后,SOFA 框架会执行回调接口。

  • future:异步调用,消费方发起调用后马上返回,当需要结果时,消费方需要主动去获取数据。

validation

-

是否开启参数验证(基于JSR303)。

onReturn

-

返回时调用的 SofaResponseCallback,用于实现 Callback 等。

concurrent

-

接口下每个方法的最大可并行执行请求数,取值如下:

  • -1:关闭并发过滤器。

  • 0:开启过滤,但不限制最大请求数。

validation

-

是否开启参数验证。

compress

-

是否启动压缩。

parameters

-

额外属性,格式:Map<String, String>

ServerConfig

属性

默认值

备注

protocol

bolt

调用的协议,目前支持 bolt、rest、dubbo。

host

0.0.0.0

实际监听 IP,与网卡地址对应。

port

12200

协议的端口,默认端口如下:

  • bolt:12200

  • rest:8341

  • h2c:12300

  • dubbo:20880

contextPath

-

设置上下文路径。

ioThreads

0

设置 IO 线程池数。

取决于实现,可能不生效。例如 Bolt 默认的默认线程数为 cpu 数量*2。0 表示自动计算。

threadPoolType

cached

设置业务线程池类型。

coreThreads

20

设置业务线程池核心大小。

maxThreads

200

设置业务线程池最大值。

telnet

true

是否允许 telnet。

取决于实现,可能不生效。例如 Bolt 不支持 telnet。

queueType

normal

设置业务线程池类型。

可用于实现优先级队列等。

queues

0

设置业务线程池队列。

aliveTime

60000

设置业务线程池存活时间。

单位:毫秒

preStartCore

-

是否初始化核心线程。

accepts

100000

设置最大长连接数量。

取决于实现,可能不生效。

serialization

hesisan2

设置序列化协议。

virtualHost

-

设置虚拟主机地址,注册到注册中心时优先使用该地址。

virtualPort

-

设置虚拟主机端口,注册到注册中心时优先使用该端口。

epoll

false

是否启动 epoll。

取决于实现,可能不生效。

daemon

true

是否守护端口,取值如下:

  • true:随主线程退出而退出。

  • false:需要主动退出。

adaptivePort

false

是否调整端口。

设置为 true 时,若端口被占用,则会自动将端口号 +1 进行适应。

transport

netty4

传输层实现

取决于实现,可能不生效。

autoStart

true

是否自动启动端口。

stopTimeout

20000

设置优雅关闭超时时间。

单位:毫秒

boundHost

-

绑定的地址,默认取 host 值。

parameters

-

额外属性,格式:Map<String, String>

RegistryConfig

属性

默认值

备注

protocol

zookeeper

服务协议,目前支持 zookeeper 和 local。

address

-

指定注册中心地址。

address 和 index 属性必须配置一个。

index

-

指定注册中心寻址服务的地址。

address 和 index 属性必须配置一个。

register

true

是否注册服务。

subscribe

true

是否订阅服务。

timeout

10

调用注册中心超时时间

单位:秒

connectTimeout

20

连接注册中心超时时间

单位:秒

file

$HOME

local 协议时使用的本地文件位置,默认在 $HOME 下。