Tarantool广播通话

问题描述 投票:0回答:1

我有几个副本集的集群。我想在所有节点上调用一些存储函数,而无需计算bucket_id,然后映射结果。我应该怎么做?

broadcast tarantool
1个回答
0
投票

您可以使用模块cartridge.rpc函数get_candidates来获取要调用的所有具有某个角色的节点,然后使用模块cartridge.pool函数map_call来调用函数和映射结果。墨盒的1.2.0-17版本提供此功能。所以您的代码可能像这样:

local cartridge = require('cartridge')
local nodes = cartridge.rpc_get_candidates('my_role_name', { leaders_only = true, healthy_only = true })
local pool = require('cartridge.pool')
local results, err = pool.map_call('_G.my_function_name', { func_args }, { uri_list = nodes, timeout = 10 })
if (err ~= nil) then
    #your error handling#
end

所有功能响应将保存到results变量,并为每个URI映射。所有错误都将通过以下键作为映射保存到err变量作为映射:line,class_name,err,file,suberrors,str

© www.soinside.com 2019 - 2024. All rights reserved.