[venus-messager] add spec config for actor type / 增加消息类型级别的策略配置 #5558
Closed
1 of 11 tasks
Labels
C-enhancement
Category: feature enhancement
C-need-testing
Category: Venus testing related
C-ux-change
Category: ux change that need attentions (CLI, config, database, folder structure)
P2
Medium - we should get to this soon
V-venus-messager
venus-messager component
Milestone
链服务模块 / Chain Service Components
订单服务模块 / Deal Service Components
算力服务模块 / Storage Power Service Components
描述 / Description
目前设置各种费用设置分成三个级别, 消息级别, 地址级别,全局。
但是对于需要针对消息类型设置的策略一直没有支持, 一直的实践是通过不同的地址发送不同类型消息,通过这种方式来间接实现这个功能
目前遇到的一个问题是需要对PC2/C2消息进行basefee控制, 当其高于设置的阈值时停止PC2/C2型号消息的发送。 按原来的办法则需要对所有发送PC2/C2形地址的消息进行设置。这种设置方式及其复杂,设置,增加,移除设计操作十分麻烦。因此这里想增加一种方式来更容易的针对消息类型进行费用控制。
另外还带来的优势是,在大规模集群环境下,可以仅通过messager就完成所有集群的消息费用配置, 简化cluster组件的配置。在紧急情况下,适用于为所有集群附加相同的配置。
具体实现
数据库增加新的类型配置表
优先级是 消息级别 > 地址级别 > 消息类型级别 > 全局
选择消息的时候附加进入消息类型级别配置,逻辑和以前相似, 按优先级从低到高,发现配置即使用该级别的配置。
接口
messager 提供接口编辑消息类型级别的全局配置, 因为影响是全局的,所以接口权限应当是admin。
messager 提供接口读取消息类型级别的全局配置, 用户需要知道当前messager的配置情况,权限应当是read类型。
兼容性
网络升级时候,读取数据库中消息类型级别设置并写入新版本的CodeCid记录,为了保证升级完代码和实际升级之间这段时间功能的功能完备,这段时间,这段时间的编辑和配置需要双写/双更。
风险
增加消息类型级别之后,每条消息都需要进行到节点上进行GetActor操作,获取to address的CodeCid,可能会增加大量的接口访问,因此这里需要添加一个缓存, 同样为了保证升级时候的兼容性, 缓存的key应当设计为To_Addrees+网络版本,这样能保证升级前后都可以正常使用。
The text was updated successfully, but these errors were encountered: