Qiao-yq opened a new issue, #1076:
URL: https://github.com/apache/dubbo-go-samples/issues/1076

   
   
   ## 问题概述
   
   在使用 dubbo-go-samples 中的 Polaris 限流示例时,发现以下问题:
   
   1. **服务注册异常**:当同时注册两个服务(Test 和 Test2)时,只有 Test2 服务被成功导出
   
   2. **限流配置矛盾**:Test2 服务配置了限流器但没有触发限流
   
   3. **测试期望冲突**:测试用例的期望与实际服务配置存在矛盾
   
   ## 环境信息
   
   - **操作系统**:Ubuntu 22.04
   
   - **Dubbo-go 版本**:v3.3.2-20260419
   
   - **Polaris 版本**:polaris-standalone-release_v1.17.8.linux.amd64
   
   - **测试路径**:`filter/polaris/limit/`
   
   ## 详细问题描述
   
   ### 1. 服务注册异常
   
   **现象**:
   
   - 当服务端同时注册 Test 和 Test2 服务时,日志只显示 Test2 服务的导出信息
   - Test 服务虽然注册成功,但没有导出日志,导致客户端调用返回 404
   - 注释掉client的test服务的panic后,test2全部成功
   
   ### 2. 限流配置矛盾
   
   **现象**:
   
   - Test2 服务配置了限流器,但 10 个请求全部成功
   
   **测试结果**:
   
   ```
   Test2服务测试结果:
   successCount=10, failCount=0
   # 配置了限流器,但全部成功
   ```
   
   ### 3. 工作正常的场景
   
   **场景1:只注册Test服务**
   
   - 移除 Test2 服务的注册代码
   - Test 服务正常导出
   - 测试结果:test服务1成功9失败(符合预期),test2全部失败
   
   **场景2:只注册Test2服务**
   
   - 移除 Test 服务的注册代码
   
   - Test2 服务正常导出
   
   - 测试结果:test2服务10成功0失败(但没有测试限流功能),test服务全部失败
   
   ## 问题分析
   
   ### 潜在原因
   
   1. **服务冲突**:两个服务使用同一个实现类可能导致注册冲突
   
   2. **端口冲突**:两个服务在同一个端口上可能存在冲突
   
   3. **Polaris注册问题**:Test 服务的限流器配置可能导致注册失败
   
   4. **测试用例设计问题**:Test2 服务应该测试"无限流"场景,但代码中配置了限流器
   
   ## 复现步骤
   
   1. 进入示例目录:
   
      ```
      cd filter/polaris/limit/
      ```
   
   2. 修改服务端代码,同时注册两个服务(如上述代码)
   
   3. 启动服务端:
   
      ```
      go run go-server/cmd/main.go
      ```
   
   4. 观察日志,只有 Test2 服务被导出
   
   5. 启动客户端(注释掉test的panic):
   
      ```
      go run go-client/cmd/main.go
      ```
   
   6. 客户端输出:
   
      - Test 服务:全部 404 错误
   
      - Test2 服务:全部成功
   
   ## 建议的修复方案
   
   ### 方案1:修复服务注册问题
   
   - 检查为什么同时注册两个服务时只有 Test2 被导出
   
   - 确保两个服务都能正确注册和导出
   
   ### 方案2:修正测试用例配置
   
   - Test2 服务不应该配置限流器,以正确测试无限流场景
   
   ### 方案3:改进错误处理
   
   - 当服务注册失败时,应该有更明确的错误提示
   
   - 目前日志中只看到注册成功,但没有导出日志
   
   ## 相关代码位置
   
   1. **服务端代码**:`filter/polaris/limit/go-server/cmd/main.go`
   
   2. **客户端代码**:`filter/polaris/limit/go-client/cmd/main.go`
   
   3. **Polaris 配置**:可能需要检查项目中的 Polaris 配置文件
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to