问题标签 [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.

0 投票
1 回答
1535 浏览

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

更多日志:

问题: 这可以避免/减少重启次数并解决网络问题以使我们的系统更稳定吗?

0 投票
2 回答
306 浏览

go - 如何冻结具有依赖项的微版本?

我想用固定版本的micro和 go 依赖项构建一个 docker 映像。我打算这样做dep

所以,我的问题是它是构建一致的微型docker 镜像的最佳解决方案吗?

0 投票
1 回答
789 浏览

authentication - 微服务架构中的认证和授权

我有多种服务:

  • 用户
  • 邮政
  • 评论
  • 验证
  • GraphQL 端点

假设它们像这样连接在一起:

示例 1

所有服务都通过封闭网络上的 gRPC 进行通信,并且使用 jwt 令牌完成授权

方法 1:graphql 服务负责用户身份验证并确保用户有权运行指定的程序。服务之间没有用户认证,但是有TLS认证。服务不进行授权检查。

方法 2:每个单独的服务确保用户被授权运行特定的过程。一个示例可能是在您需要登录并拥有超过 15 名声望的帖子上投票。在这里,Post 服务负责检查用户是否已登录(已通过身份验证)以及是否有权投票。这将导致大量开销,因为每个过程调用都需要通过 Auth 服务检查用户身份验证和授权。

是否有更好的方法仍然保留方法 2 的安全性,但会产生像方法 1 一样的小开销?

- - -更新 - - -

方法 3:与方法 2 相同,但用户身份验证仅在使用 Auth 服务的 GraphQL 服务中完成。通过检查传递的元数据来完成授权。并且服务之间有 TLS 身份验证。

0 投票
1 回答
5398 浏览

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 代码

0 投票
2 回答
1898 浏览

protocol-buffers - go-micro 和 go-grpc 的区别

我已经构建了一个“go-micro”服务。据我了解,go-micro 使用 protobuf 来定义和创建消息结构并使用 gRPC 作为网络协议(我当然可能在这里错了)。

如果以上正确,那么插件“go-grpc”的用途是什么?

谢谢!

0 投票
1 回答
1514 浏览

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

0 投票
1 回答
1142 浏览

go - go-micro 包装器即服务

问题是关于将 go-micro 包装器用作单独的服务 - 如果有人知道如何正确使用它,请告诉我。我的例子 - authWrapper,所以所有 api 服务都应该能够使用它,它应该通过标准服务发现来发现,对 authWrapper 进行任何更改只应该重建 1 个服务(我没有找到如何正确传递上下文的方法.Context 从 api 服务到 authWrapper 通过 rpc 调用)

去微文档

go-micro 包装器示例

调用 authWrapper 的 api 代码:

和 authWrapper:

0 投票
2 回答
15420 浏览

go - 如何从源代码手动安装 Go 包

我住在中国,无法通过命令下载和安装 GO 包(如果我使用 vpn 网络):

但我可以访问repo_url并下载它的源代码。所以我的问题是我可以将源代码放在src文件夹下并运行 commamd 吗?:

如果是,这两种方式有什么不同?

0 投票
0 回答
592 浏览

docker - Docker 找不到可执行文件

我有一个用 Golang 编写的可执行文件,它在从 Linux 提示符启动时启动并运行良好。如您所见,可执行文件在启动时需要一个 XML 文件。但是当在 Docker 环境中启动时,我收到错误消息:

让我告诉你我尝试了什么。首先,这是我的 Dockerfile:

我以这种方式构建它:

然后我以这种方式启动它

当我这样做时,我会收到如上所示的错误消息。然后我尝试注释掉 ENTRYPOINT 行,然后它构建 OKAY 并启动 linux 提示符,因此我可以查询里面的内容。可执行文件在其中,数据文件也在其中。并且可执行文件也具有正确的属性(它可以在 docker-container 中执行)

然后我尝试在已启动的容器内从 linux-prompt 启动可执行文件,然后我再次收到一条消息,指出找不到文件:

为了完整起见,这里部分是容器中的目录结构:

那么,可能是什么问题。我正在尝试解决这个问题超过一天。谢谢你的支持。

0 投票
1 回答
122 浏览

docker - 服务似乎无法脱离 docker-container

我有一个 go-micro 服务,我希望它在容器中运行的 Consul 上注册。仅从命令提示符执行此操作时,它运行良好。我检查了 consul-container 的日志,发现一切正常。注册和注销:

如您所见,它抱怨无效字符。我不知道这意味着什么,但它运行良好,我可以毫无问题地从服务客户端运行我的测试。所以我们可以假设 Consul 容器运行良好。

但现在我的问题。我也想在容器中运行服务,但出现了问题。这是我的服务的 Dockerfile:

如您所见,服务需要以参数启动,这也没有问题。

当我启动这个容器时,它似乎运行良好,但是当我查看 consul-logs 时,它从未见过它。服务容器的日志告诉我原因。我以这种方式启动容器:

它得到一个非常好的容器 ID。所以看起来不错,但是查看日志,会发生这种情况:

所以我的想法是它无法突破容器。但是我该如何解决这个问题呢?

非常感谢帮助,谢谢