cloudwogo 电商项目常见问题及解决方法

时之世 发布于 2024-11-29 244 次阅读 预计阅读时间: 5 分钟 最后更新于 2024-11-30 1165 字 无~


1. 启动一个服务的时候多个服务被启动

image.png
这是由于导入的模块有其他模块的内容

image.png

2. 出现没有和客户端正确连接导致初始化的问题

{
    "level": "error",
    "msg": "KITEX: processing request error, remoteService=, remoteAddr=192.168.31.154:51314, error=panic: [happened in biz handler, method=CartService.AddItem, please check the panic at the server side] runtime error: invalid memory address or nil pointer dereference\nstack=goroutine 61 [running]:\nruntime/debug.Stack()\n\tD:/Go/src/runtime/debug/stack.go:26 +0x5e\ngithub.com/cloudwego/kitex/server.(*server).buildInvokeChain.(*server).invokeHandleEndpoint.func1.1()\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/server/server.go:343 +0x145\npanic({0x1d5dca0?, 0x2d856b0?})\n\tD:/Go/src/runtime/panic.go:785 +0x132\ngithub.com/cloudwego/biz-demo/gomall/app/cart/biz/service.(*AddItemService).Run(0xc001d6fa48, 0xc001c98280)\n\tD:/goprojects/app/cart/biz/service/add_item.go:24 +0x45\nmain.(*CartServiceImpl).AddItem(0x2d883b0?, {0x21af810?, 0xc001c945d0?}, 0xc001c8e030?)\n\tD:/goprojects/app/cart/handler.go:14 +0x2f\ngithub.com/cloudwego/biz-demo/gomall/rpc_gen/kitex_gen/cart/cartservice.addItemHandler({0x21af810, 0xc001c945d0}, {0x1d82c40?, 0x2e4ed20}, {0x1e06780?, 0xc001c9a020?}, {0x1e0cbe0, 0xc001c9a030})\n\tD:/goprojects/rpc_gen/kitex_gen/cart/cartservice/cartservice.go:119 +0x22c\ngithub.com/cloudwego/kitex/server.(*server).buildInvokeChain.(*server).invokeHandleEndpoint.func1({0x21af810, 0xc001c945d0}, {0x1e06780, 0xc001c9a020}, {0x1e0cbe0, 0xc001c9a030})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/server/server.go:355 +0x2b3\ngithub.com/cloudwego/kitex/server.(*server).fixStreamCtxDiverge.newCtxInjectMW.func1.1({0x21af810?, 0xc001c945d0?}, {0x1e06780?, 0xc001c9a020?}, {0x1e0cbe0?, 0xc001c9a030?})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/server/middlewares.go:56 +0x116\ngithub.com/cloudwego/kitex/pkg/remote/trans.(*svrTransHandler).OnMessage(0xc001d2e780, {0x21af810, 0xc001c945d0}, {0x2256280?, 0xc001dc0120?}, {0x2256280, 0xc001c96ab0})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans/default_server_handler.go:226 +0x8b\ngithub.com/cloudwego/kitex/pkg/remote/trans/detection.(*svrTransHandler).OnMessage(0xc001d0af00?, {0x21af810, 0xc001c945d0}, {0x2256280, 0xc001dc0120}, {0x2256280, 0xc001c96ab0})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans/detection/server_handler.go:130 +0x58\ngithub.com/cloudwego/kitex/pkg/remote.(*TransPipeline).OnMessage(0xc001d12e80, {0x21af810?, 0xc001dc6780?}, {0x2256280, 0xc001dc0120}, {0x2256280, 0xc001c96ab0})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans_pipeline.go:156 +0x117\ngithub.com/cloudwego/kitex/pkg/remote/trans.(*svrTransHandler).OnRead(0xc001d2e780, {0x21af810, 0xc001dc6780}, {0x21b4a20, 0xc001de01c0})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans/default_server_handler.go:201 +0x485\ngithub.com/cloudwego/kitex/pkg/remote/trans/detection.(*svrTransHandler).OnRead(0xc001d49020, {0x21af810, 0xc001dc6780}, {0x21b4a20, 0xc001de01c0})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans/detection/server_handler.go:95 +0xb7\ngithub.com/cloudwego/kitex/pkg/remote.(*TransPipeline).OnRead(0xc001d12e80, {0x21af810?, 0xc001dc6780?}, {0x21b4a20, 0xc001de01c0})\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans_pipeline.go:129 +0xbb\ngithub.com/cloudwego/kitex/pkg/remote/trans/gonet.(*transServer).BootstrapServer.func1()\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans/gonet/trans_server.go:101 +0x223\ncreated by github.com/cloudwego/kitex/pkg/remote/trans/gonet.(*transServer).BootstrapServer in goroutine 13\n\tC:/Users/shizhishi/go/pkg/mod/github.com/cloudwego/kitex@v0.11.3/pkg/remote/trans/gonet/trans_server.go:85 +0x88\n",
    "time": "2024-11-20T16:23:21+08:00"
}

这表明 Kitex 尝试通过 HTTP 请求将服务注册到 Consul 代理时,连接被拒绝了。

发现问题在

image.png

这里的问题主要有以下几种

1.

image.png
没有进行客户端 rpc 连接配置或在 Init 中没有调用

2.

image.png
没有在 main.go 中正确初始化 rpc.Init()

3. 解决 Kitex 服务注册 Consul 失败的问题

在使用 Kitex 构建微服务时,我们经常需要将服务注册到 Consul 以实现服务发现和健康检查。然而,有时候在启动服务时会遇到连接 Consul 失败的问题,导致服务无法正常运行。

需要检查 kitex 的端口,切记端口不能重复

image.png

此外

1. 检查 Consul 代理是否正在运行

首先,确保 Consul 代理已经在本地运行,并且监听了 127.0.0.1:8500 端口。您可以通过以下命令检查 Consul 代理的状态:

consul agent -dev

如果您使用的是非开发模式,确保 Consul 代理已经正确启动并配置。

2. 检查防火墙和网络配置

确保没有防火墙或其他网络配置阻止了对 127.0.0.1:8500 的访问。您可以尝试使用 curl 命令测试连接:

curl http://127.0.0.1:8500/v1/agent/self

如果 curl 命令返回了 Consul 代理的信息,说明连接是成功的。

3. 检查 Consul 配置

确保 Consul 代理的配置文件中没有禁止外部连接的设置。默认情况下,Consul 代理在开发模式下会监听所有接口。如果使用的是生产模式,确保配置文件中指定了正确的绑定地址和端口。

4. 检查 Consul 代理日志

查看 Consul 代理的日志,以获取更多关于连接被拒绝的详细信息。日志文件通常位于 Consul 安装目录下的 logs 文件夹中,或者您可以使用以下命令查看日志:

consul agent -dev -log-level=debug

4. 使用链路追踪监控时,出现依赖报错

可以看出 go.openteltmetry.io/otel/sdk/metric 出现问题,如果只升级 go.openteltmetry.io/otel/sdk,只会让 metric 到达版本 v1.25.0 所以需要单独更新 metric