服务维度配置

本文介绍在 SOFABoot 环境下完整的 SOFARPC 服务发布与引用说明。

发布服务

<bean id="helloSyncServiceImpl" class="com.alipay.sofa.rpc.samples.invoke.HelloSyncServiceImpl"/>
<sofa:service ref="helloSyncServiceImpl" interface="com.alipay.sofa.rpc.samples.invoke.HelloSyncService" unique-id="">
<sofa:binding.bolt>
<sofa:global-attrs registry="" serialize-type="" filter="" timeout="3000" thread-pool-ref=" "
warm-up-time="60000"
warm-up-weight="10" weight="100"/>
</sofa:binding.bolt>
<sofa:binding.rest>
</sofa:binding.rest>
</sofa:service>

属性说明

属性

默认值

说明

id

Bean 名

ID

class

-

ref

-

服务接口实现类

interface

-

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

unique-id

-

服务标签(唯一标识元素)

filter

-

过滤器配置别名

registry

DSR

服务端注册中心。多个注册中心需使用逗号分隔。

支持的注册中心请参见 注册中心路由

timeout

3000

服务端执行超时时间

单位:毫秒。

serialize-type

hessian2

序列化协议,取值为:hessian2、protobuf。

thread-pool-ref

-

自定义业务线程池,需要指向一个 com.alipay.sofa.rpc.core.context.UserThreadPool 对象。

weight

100

服务静态权重。数值越大,权重越高。

warm-up-weight

10

服务提供者的预热权重,当客户端刚建立连接时,在指定的预热时间内会使用此权重。

warm-up-time

0

服务提供者的预热时间,当客户端刚建立连接时,在该时间内会使用预热权重。

单位:毫秒。

引用服务

<sofa:reference jvm-first="false" id="helloSyncServiceReference"
interface="com.alipay.sofa.rpc.samples.invoke.HelloSyncService" unique-id="">
<sofa:binding.bolt>
<sofa:global-attrs type="sync" timeout="3000" callback-ref="" callback-class="" address-wait-time="1000"
connect.num="1" check="false" connect.timeout="1000" filter="" generic-interface=""
idle.timeout="1000"
idle.timeout.read="1000" lazy="false" loadBalancer="" registry="" retries="1"
serialize-type=""/>
<sofa:route target-url="xxx:12200"/>
<sofa:method name="hello" callback-class="" callback-ref="" timeout="3000" type="sync"/>
</sofa:binding.bolt>
</sofa:reference>

属性说明

属性

默认值

说明

id

自动生成

ID

jvm-first

true

是否优先使用本地 JVM 配置,取值:true、false。

interface

-

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

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

unique-id

-

服务标签(唯一标识元素)

type

sync

调用方式。取值为:sync、oneway、callback、future。

filter

-

过滤器配置别名

registry

DSR

服务端注册中心。多个注册中心需使用逗号分隔。

支持的注册中心请参见 注册中心路由

method

-

方法级配置,method 配置的属性优先级高于 global-attrs 中的配置。没有配置时,默认跟随全局配置。

serialize-type

hessian2

序列化协议,取值为:hessian2、protobuf。

target-url

-

使用直连调用时配置的直连地址。

配置 target-url 后,软负载阶段将会失效。详情请参见 直连调用

generic-interface

-

泛化接口

connect.timeout

1000

消费方连接超时时间

单位:毫秒。

connect.num

-1

消费方连接数

-1 表示不设置(默认为每个目标地址建立一个连接)。

idle.timeout

-1

消费方最大空闲时间

-1 表示使用底层默认值(底层默认值为 0,表示永远不会读 idle)。该配置也是心跳的时间间隔,当请求 idle 时间超过配置时间后,发送心跳到服务方。

idle.timeout.read

-1

消费方最大读空闲时间

-1 表示使用底层默认值(底层默认值为 30)。如果 idle.timeout > 0,在 idle.timeout + idle.timeout.read 时间内,如果没有请求发生,将自动断开连接。

loadBalancer

random

负载均衡算法

lazy

false

是否延迟建立长连接,取值:true、false。

address-wait-time

0

reference 生成时,等待配置中心将地址推送到消费方的时间。

单位:毫秒。

最大值为 30000 毫秒,超过这个值时会被调整为 30000 毫秒。

timeout

3000

调用超时时间

retries

0

当出现非业务异常时,框架层面自动重试的次数。需要服务提供者自己保证方法的幂等性。

callback-class

-

callback 回调类,详情请参见 Bolt 协议的调用方式

callback 时才可用。

callback-ref

-

callback 回调类,详情请参见 Bolt 协议的调用方式

callback 时才可用。

配置的优先级

SOFARPC 里面的某些配置,例如调用超时 timeout 属性可以在服务提供方设置,也可以在服务调用方设置。这些配置的优先级从高到低排列如下:

  1. 线程调用级别设置。

  2. 服务调用方。

    • 方法级别设置。

    • Reference 级别设置。

  3. 服务提供方。

    • 方法级别设置。

    • Service 级别设置。