Go中Protobuf Name Conflict冲突问题分析与解决

问题背景 最近,在对老项目进行重构工作。在重构过程中发现需要通过 grpc 调用若干远端微服务,远端微服务都有提前定义好的 proto,在运行时(编译通过,运行则panic)出现了 name conflict 冲突问题。也就是说,在运行时报错提示存在相同名称的 message 消息体。 具体报错信息,如下所示: ➜ app > go mod tidy ➜ app > go build main.go ➜ app > ./main api start panic: proto: file "usermgt.proto" has a name conf...

常见问题 2022/08/07 10℃ 0条

docker desktop 安装 K8s 时遇到的一些问题

使用 docker desktop 在 Mac OS 上搭建 Kubernetes 环境比较简单,但是搭建过程中可能会遇到一些问题,问题解决起来就没有那么简单,特此整理相关内容以备后续之需。 笔者第一次在Mac上搭建花了一天时间 1.下载/安装 docker desktop ① 下载 docker desktop # 地址1 https://hub.docker.com/search?type=edition&offering=community&q= # 地址2 https://www.docker.com/get-started/ ② 安装成功之后,查看版本信息...

容器,常见问题,Kubernetes 2022/06/29 86℃ 0条

一次 goroutine泄露 的排查

做过程序开发的人在提起泄露这个词时,会下意识的想到: 内存 -> 内存没被释放 -> 堆内存没有被释放。 做过Golang开发的人在提起泄露时,会下意识的想到: 堆/goroutine -> 堆/goroutine没被释放。 背景 近段时间,在维护公司一个关于微软ASR音频转文本的服务时,发现内存会随着时间一直增长,如下图: 图中可以看到有3个爬坡的过程,是因为我们服务重启了3次 脑海中冒出的第一个念头就是:内存泄露了。 于是展开了一系列的排查分析,最终定位到具体的代码,特此记录下来分享给需要的人。 一些知识点 ① 内存泄露发生在堆上 进程启动之后内存布局一般分...

Golang 2022/01/12 1256℃ 0条

grpc-go请求ingress遇到的一个问题

背景&现状: 公司有两个内部微服务A、B,A->B 使用 grpc-go 客户端负载均衡策略,即:consul + round_robin。随着业务的增长,B服务的服务器资源数量一直在增加,有个问题:在一天24小时的时间里,有大概1/3的时间没有业务,就造成了服务资源的浪费。 为了减少资源浪费,决定动态的对B服务扩缩容,最终决定使用K8S管理。 这样的话,就需要在K8S管理的B服务前面增加一个网关,公司采用的是ingress。 问题: 在增加了ingress+K8S之后,A服务请求ingress进行验证时发现:请求ingress服务一直不成功,但是使用grpcurl工具测试...

Golang 2021/12/20 1043℃ 0条