You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Thor的bwr脚本远程调用Roxie服务器获取节点数方法问询

在Thor的BWR脚本中远程获取Roxie服务器节点数的方法

需要在Thor的BWR脚本中远程查询指定Roxie服务器的节点数量,目前仅找到thorlib.nodes()这类获取本地集群节点数的内置函数,没有跨服务器查询的直接方法,以下是可行的实现方案:

方法1:调用Roxie的REST API接口

Roxie提供了管理类REST API,可以通过HTTP请求获取集群状态并解析节点数。示例代码如下:

IMPORT httpclient;
IMPORT json;

// 替换为实际Roxie服务器的API地址(默认端口8001)
RoxieServerIP := 'http://roxie-end-point:8001';

// 发起GET请求获取集群信息
response := httpclient.get(RoxieServerIP + '/api/cluster');

IF response.statusCode == 200 THEN
    // 解析JSON响应数据
    clusterData := json.parse(response.body);
    // 提取节点列表长度作为节点数(需根据Roxie版本调整JSON路径)
    numNodesRoxie := length(clusterData.nodes);
    OUTPUT(numNodesRoxie, NAMED('numNodesRoxie'));
ELSE
    OUTPUT('获取Roxie集群状态失败: ' + response.statusMessage, NAMED('error'));
END;

方法2:通过DCTL工具远程查询

如果Thor服务器有权限执行DCTL命令,可以调用系统命令获取Roxie集群状态并解析输出:

// 替换为实际Roxie服务器地址
RoxieServerIP := 'roxie-end-point';

// 执行DCTL命令获取集群状态
cmdOutput := system('dctl -s ' + RoxieServerIP + ' cluster status');

// 遍历输出行提取节点数
FOR line IN split(cmdOutput, '\n') DO
    IF line LIKE 'Nodes: %' THEN
        numNodesRoxie := substring(line, 7);
        OUTPUT(toInteger(numNodesRoxie), NAMED('numNodesRoxie'));
        BREAK;
    END;
END;

注意事项

  • 确保Thor服务器能访问Roxie的API端口(默认8001),或具备执行DCTL命令的权限
  • 不同版本的Roxie API返回结构可能存在差异,需根据实际返回的JSON结构调整解析路径
  • 若Roxie启用了身份认证,需在HTTP请求中添加对应的认证头(如Bearer Token)

内容的提问来源于stack exchange,提问作者flyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 02:06:27