diff --git a/05-start.sh b/05-start.sh index 8bd87e3..4fc54e9 100755 --- a/05-start.sh +++ b/05-start.sh @@ -74,7 +74,7 @@ _start_all() { step "第 1 组: openim-server(核心 IM 服务)" _start_one openim-server - info "等待 openim-server 将 RPC 注册到 Etcd... (8s)" + info "等待 openim-server 初始化 standalone 内部 RPC... (8s)" sleep 8 step "第 2 组: chat RPC 服务" diff --git a/README.md b/README.md index d69f066..1e4a746 100644 --- a/README.md +++ b/README.md @@ -403,7 +403,8 @@ TENCENT_SDK_SECRET_KEY=xxx # 查看状态 ./deploy-test/status.sh -# status.sh 会输出 Etcd 中已注册的 RPC 服务 key,用于排查 produced zero addresses +# status.sh 会输出 Etcd 中已注册的独立 RPC 服务 key; +# openim-server 内部 RPC 是 standalone 进程内注册,不要求出现在 Etcd。 # 重启单个后端服务 ./deploy-test/restart.sh chat-api diff --git a/status.sh b/status.sh index 47e6751..0729791 100755 --- a/status.sh +++ b/status.sh @@ -42,7 +42,7 @@ else if [[ -z "$ETCD_KEYS" ]]; then printf " ${YELLOW}○${NC} %-18s %s\n" "registry" "Etcd 可访问,但当前无注册 key" else - KNOWN_RPC_SERVICES=( + OPENIM_STANDALONE_RPC_SERVICES=( auth-rpc-service user-rpc-service friend-rpc-service @@ -52,22 +52,38 @@ else third-rpc-service push-rpc-service messagegateway-rpc-service + ) + INDEPENDENT_RPC_SERVICES=( chat-rpc-service admin-rpc-service bot-rpc-service ) - found_rpc=0 - for svc in "${KNOWN_RPC_SERVICES[@]}"; do + + echo -e " ${CYAN}OpenIM standalone 内部 RPC(单进程内调用,不要求 Etcd 注册):${NC}" + for svc in "${OPENIM_STANDALONE_RPC_SERVICES[@]}"; do count=$(printf '%s\n' "$ETCD_KEYS" | grep -c "$svc" || true) if [[ "$count" -gt 0 ]]; then - found_rpc=1 printf " ${GREEN}●${NC} %-28s %s key(s)\n" "$svc" "$count" else + printf " ${CYAN}◉${NC} %-28s %s\n" "$svc" "standalone 进程内" + fi + done + + echo -e " ${CYAN}独立进程 RPC(应注册到 Etcd):${NC}" + found_required_rpc=0 + missing_required_rpc=0 + for svc in "${INDEPENDENT_RPC_SERVICES[@]}"; do + count=$(printf '%s\n' "$ETCD_KEYS" | grep -c "$svc" || true) + if [[ "$count" -gt 0 ]]; then + found_required_rpc=1 + printf " ${GREEN}●${NC} %-28s %s key(s)\n" "$svc" "$count" + else + missing_required_rpc=1 printf " ${YELLOW}○${NC} %-28s %s\n" "$svc" "未注册" fi done - echo " ${CYAN}原始注册 key(过滤 rpc/service/openim/chat/admin 等关键词,最多 80 行):${NC}" + echo -e " ${CYAN}原始注册 key(过滤 rpc/service/openim/chat/admin 等关键词,最多 80 行):${NC}" filtered_keys=$(printf '%s\n' "$ETCD_KEYS" | grep -Ei 'rpc|service|openim|chat|admin|auth|user|friend|group|msg|conversation|third|push|gateway|bot' | head -80 || true) if [[ -n "$filtered_keys" ]]; then printf '%s\n' "$filtered_keys" | sed 's/^/ /' @@ -75,8 +91,10 @@ else echo " (未匹配到 RPC 相关 key)" fi - if [[ "$found_rpc" -eq 0 ]]; then - warn " 未发现已知 RPC 服务注册;chat-api/openim-api 调 RPC 时可能出现 name resolver error: produced zero addresses" + if [[ "$found_required_rpc" -eq 0 ]]; then + warn " 未发现独立进程 RPC 注册;chat-api/admin-api 调 RPC 时可能出现 name resolver error: produced zero addresses" + elif [[ "$missing_required_rpc" -eq 1 ]]; then + warn " 存在独立进程 RPC 未注册;如果对应 API 调用失败,请优先检查该 RPC 进程日志" fi fi else