问题标签 [go-micro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 由于网络问题,经常重启 Pod
描述:
我们有一个基于 golang 库go-micro在 Google Container Engine 上运行的服务,这些服务运行良好,除了白天随机重启。
问题:
Pod 在白天经常重启。这会影响我们的服务和核心服务,如 kube-dns 或 nginx-ingress。检查日志后,看起来像是网络问题,在此 docker daemon 和 kubelet 重新启动后,需要重新启动我们的服务。它可能每天发生 10 次或每天 2 次。这不是经常的。
细节:
版本:
操作系统:
Golang 微服务框架 go-micro
我试图检查日志以了解发生了什么以及我发现了什么:
每次尝试更新 ChromeOS 时,都会开始出现 docker 守护进程问题、网络问题等。
kube-proxy.log
更多日志:
问题: 这可以避免/减少重启次数并解决网络问题以使我们的系统更稳定吗?
go - 如何冻结具有依赖项的微版本?
我想用固定版本的micro和 go 依赖项构建一个 docker 映像。我打算这样做dep
:
所以,我的问题是它是构建一致的微型docker 镜像的最佳解决方案吗?
authentication - 微服务架构中的认证和授权
我有多种服务:
- 用户
- 邮政
- 评论
- 验证
- GraphQL 端点
假设它们像这样连接在一起:
所有服务都通过封闭网络上的 gRPC 进行通信,并且使用 jwt 令牌完成授权
方法 1:graphql 服务负责用户身份验证并确保用户有权运行指定的程序。服务之间没有用户认证,但是有TLS认证。服务不进行授权检查。
方法 2:每个单独的服务确保用户被授权运行特定的过程。一个示例可能是在您需要登录并拥有超过 15 名声望的帖子上投票。在这里,Post 服务负责检查用户是否已登录(已通过身份验证)以及是否有权投票。这将导致大量开销,因为每个过程调用都需要通过 Auth 服务检查用户身份验证和授权。
是否有更好的方法仍然保留方法 2 的安全性,但会产生像方法 1 一样的小开销?
- - -更新 - - -
方法 3:与方法 2 相同,但用户身份验证仅在使用 Auth 服务的 GraphQL 服务中完成。通过检查传递的元数据来完成授权。并且服务之间有 TLS 身份验证。
python - 无法从 nodejs/python 客户端连接到 grpc
我的 grpc 服务器在 go (go-micro) 中,它工作正常,我已经测试了 viamicro web
和 go web app (iris)。
这是本地 grpc 设置
我不断收到此错误 ( Stream removed
)
有时我会收到此错误(Trying to connect an http1.x server
)
我的节点代码
Python代码也面临同样的问题
错误.
我的 Python 代码
protocol-buffers - go-micro 和 go-grpc 的区别
我已经构建了一个“go-micro”服务。据我了解,go-micro 使用 protobuf 来定义和创建消息结构并使用 gRPC 作为网络协议(我当然可能在这里错了)。
如果以上正确,那么插件“go-grpc”的用途是什么?
谢谢!
go - go-micro kubernetes greeter 示例 - 无法访问 greeter api 服务
我正在尝试让这个 go-micro greeter 示例在 Kubernetes 上运行https://github.com/micro/examples/tree/master/greeter
我可以在 docker 本地运行它。但是,当我尝试通过 Kubernetes (http://{{external-ip}}/greeter/say/hello) 访问 greeter api 服务时,我收到错误:{"id":"go.micro.api", "code":500,"detail":"not found","status":"Internal Server Error"}
为了排除故障,我简化了场景,我只是希望能够通过 micro api 调用 go-micro api 服务。以下是我的设置:
api.go
微 api-deployment.yml
微 api-svc.yml
问候部署.yml
问候-svc.yml
go - go-micro 包装器即服务
问题是关于将 go-micro 包装器用作单独的服务 - 如果有人知道如何正确使用它,请告诉我。我的例子 - authWrapper,所以所有 api 服务都应该能够使用它,它应该通过标准服务发现来发现,对 authWrapper 进行任何更改只应该重建 1 个服务(我没有找到如何正确传递上下文的方法.Context 从 api 服务到 authWrapper 通过 rpc 调用)
调用 authWrapper 的 api 代码:
和 authWrapper:
go - 如何从源代码手动安装 Go 包
我住在中国,无法通过命令下载和安装 GO 包(如果我使用 vpn 网络):
但我可以访问repo_url并下载它的源代码。所以我的问题是我可以将源代码放在src文件夹下并运行 commamd 吗?:
如果是,这两种方式有什么不同?
docker - Docker 找不到可执行文件
我有一个用 Golang 编写的可执行文件,它在从 Linux 提示符启动时启动并运行良好。如您所见,可执行文件在启动时需要一个 XML 文件。但是当在 Docker 环境中启动时,我收到错误消息:
让我告诉你我尝试了什么。首先,这是我的 Dockerfile:
我以这种方式构建它:
然后我以这种方式启动它
当我这样做时,我会收到如上所示的错误消息。然后我尝试注释掉 ENTRYPOINT 行,然后它构建 OKAY 并启动 linux 提示符,因此我可以查询里面的内容。可执行文件在其中,数据文件也在其中。并且可执行文件也具有正确的属性(它可以在 docker-container 中执行)
然后我尝试在已启动的容器内从 linux-prompt 启动可执行文件,然后我再次收到一条消息,指出找不到文件:
为了完整起见,这里部分是容器中的目录结构:
那么,可能是什么问题。我正在尝试解决这个问题超过一天。谢谢你的支持。
docker - 服务似乎无法脱离 docker-container
我有一个 go-micro 服务,我希望它在容器中运行的 Consul 上注册。仅从命令提示符执行此操作时,它运行良好。我检查了 consul-container 的日志,发现一切正常。注册和注销:
如您所见,它抱怨无效字符。我不知道这意味着什么,但它运行良好,我可以毫无问题地从服务客户端运行我的测试。所以我们可以假设 Consul 容器运行良好。
但现在我的问题。我也想在容器中运行服务,但出现了问题。这是我的服务的 Dockerfile:
如您所见,服务需要以参数启动,这也没有问题。
当我启动这个容器时,它似乎运行良好,但是当我查看 consul-logs 时,它从未见过它。服务容器的日志告诉我原因。我以这种方式启动容器:
它得到一个非常好的容器 ID。所以看起来不错,但是查看日志,会发生这种情况:
所以我的想法是它无法突破容器。但是我该如何解决这个问题呢?
非常感谢帮助,谢谢