InstanceRange 结构体#
-
struct YR::InstanceRange#
配置函数实例数量范围,用于
Range调度。Note
Range调度是一种原子资源分配策略。基于用户配置的
max字段,当前调度实例数被设置为 now =max。首先尝试调度 now 个实例,如果成功,则返回已调度的实例。如果不成功,则将 now 减少step个实例(最多减少到now - step和min中的较大值),并再次尝试调度 now 个实例。此过程将持续进行,直到调度成功、超时或所有尝试均失败(如果在降至min后调度仍失败,则视为失败)。公共成员
-
int min = DEFAULT_INSTANCE_RANGE_NUM#
允许的最小函数实例数量,默认值为 -1。
-
int max = DEFAULT_INSTANCE_RANGE_NUM#
允许的最大函数实例数量,默认值为 -1。
min和max全部配置为 -1 时,Range调度功能被禁用。当 1 <min<=max时,启用Range调度功能。其他值均被视为无效,并抛出异常。
-
int step = DEFAULT_INSTANCE_RANGE_STEP#
max向min递减的步长,默认值为 2。当启用
Range调度时,step必须大于 0,否则抛出异常。如果step大于max与min的差,则直接从max递减到min。
-
bool sameLifecycle = true#
指定为
Range调度配置的一组实例是否共享相同的生命周期,默认值为 true。
-
RangeOptions rangeOpts#
定义
Range调度的生命周期参数,包括在内核资源不足时逐步调度的总超时时间。
-
int min = DEFAULT_INSTANCE_RANGE_NUM#
-
struct YR::RangeOptions#
InstanceRange 结构体中的配置,它定义了
Range调度的生命周期参数。Warning
单个 Range 在一个组内最多可以创建 256 个实例。
并发创建最多支持 12 个 group ,每个 group 最多成组创建 256 个实例。
invoke()接口在 NamedInstance::Export() 之后调用会导致当前线程卡住。不调用
invoke()接口,直接向有状态函数实例发起函数请求并 get 结果会导致当前线程卡住。重复调用
invoke()接口会导致异常抛出。Range 内的实例不支持独立指定生命周期。
公共成员
-
int timeout = NO_TIMEOUT#
当 Eugeo 内核资源不足时,逐步调度的总超时时间,单位为秒。
-1 表示无超时限制,调度将一直持续到成功或所有尝试均失败为止。值小于 0 会抛出异常。