cloudwogo 电商项目常见问题及解决方法 | 豆包MarsCode AI 刷题

174 阅读5分钟

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

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

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

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