问题标签 [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 投票
3 回答
164 浏览

go - 无法从 udemy 课程中找出缺少的 protoc 命令

问题:

上周左右我一直在学习 Udemy 上的 Golang 微服务课程,但遇到了一个问题。

基本上,讲师通过编写 .proto 文件向我们介绍了 Go-Micro 和 RPC。现在我对 GRPC 有了一些经验,但对 Go-Micro 没有。问题是教练没有显示实际的protoc命令和最终的标志,而只是刷过它。我认为这将是一个微不足道的命令,但运行后protoc greeter.proto go_out=.我错过了客户端片段..

预期的:

pb.go 文件看起来与讲师的相同,在 pb.go 文件中有客户端和服务器片段。

实际的:

缺少客户端片段。

命令运行:

protoc greeter.proto go_out=.

代码:

.proto 文件:

0 投票
0 回答
303 浏览

kubernetes - 为什么 go-micro Kubernetes 插件需要将 pod 注册到注册表?

我有一个关于如何在 Kubernetes 中使用 go-micro 的问题。AFAIK,Kubernetes 已经有用于服务发现的 kube-dns 和带有服务抽象的 kube-proxy 来公开 Pod。

是否可以使用 go-micro,但跳过kubernetes go-micro 插件将自己注册到 Kubernetes API 服务器?

因为我不确定为什么首先需要它。事实上,kubelet 会自动为我们做这件事(通过 livenessProbe 和 readinessProbe 检查,然后它可以确定 pod 是否健康),只需将健康的 pod 包含到service的端点。

我问这个问题是因为我们也在使用 istio-proxy。每当 Pod 启动时,我们都会遇到微服务错误,因为 istio-proxy 还没有准备好路由流量(甚至是到 kube api 的流量,因为它拦截了来自我们主容器的出口流量(它使用 go-micro Kubernetes 插件))。

2018/10/17 04:37:55 无法创建服务器!原因:补丁 https://10.32.64.1:443/api/v1/namespaces/data-cdp/pods/cdp-booking-context-svc-stable-864645684b-xd2tb : 拨打 tcp 10.32.64.1:443: connect: 连接拒绝

然后它会多次导致主容器(go-micro kube 插件应用程序)在 crashloopback 中,直到 istio-proxy 准备好。这不是一个大问题,但它让我对注册背后的动机感到困扰。

0 投票
2 回答
1110 浏览

go - Go中特定类型的调用函数

我是一个完整的围棋新手,很抱歉提前提出问题。

我正在尝试使用如此定义的接口来连接到消息代理:

我正在尝试使用Subscribe-function 订阅一个频道,这就是我现在苦苦挣扎的地方。我目前的方法是以下一种:

错误输出是cannot use func literal (type func(broker.Publication)) as type broker.Handler in argument to natsBroker.Subscribe
但是我如何确保函数类型实际上是 a broker.Handler

谢谢你的时间!

更新

万一有人感兴趣,错误返回类型丢失导致错误,所以它应该看起来类似于:

natsBroker.Subscribe("QueueName", broker.Handler(func(p broker.Publication) error { fmt.Printf(p.Topic()) return nil }), )

0 投票
0 回答
223 浏览

go - NATS 订阅后只接收消息

我正在尝试使用"github.com/nats-io/go-nats"包与云中的 NAT 服务器通信。

我是这样设置的:

之后我订阅了队列:

我的实际问题是,订阅似乎没有效果。偶然我发现订阅处理程序在我发布至少一条消息后被触发。因此,当订阅者也是发布者时,它似乎可以工作。这是发布的代码:

有谁知道这个问题来自哪里?

0 投票
1 回答
1339 浏览

go - 为什么客户端总是从 localhost 收到“传输:收到意外的内容类型”GO 编写 GRPC 服务

我刚刚从micro/go-grpc克隆了示例代码,并尝试在 localhost 中构建一个 grpc 服务器。

服务器/main.go

客户端/main.go

我的操作系统是 MacOsX,go 版本是 1.11.1

当我运行服务器端示例代码时,一切看起来都很好:

但是如果我运行客户端示例代码,总是会收到:

我试图删除--server_address和仍然一样。我试图添加mdns注册表,也没有工作。我尝试使用$ micro health go.micro.srv.greeter,它返回了相同的结果。

想知道我的设置有什么问题吗?

0 投票
1 回答
363 浏览

go - Kuberenetes 403:无法修补命名空间中的 pod

在尝试部署使用 go-micro 框架的 pod 时,我收到以下错误:

似乎 go-micro 没有必要的权限来从 pod 中修补 pod。

0 投票
0 回答
363 浏览

go - 如何在 go-micro 中设置 broker.SubscriberOptions

我正在尝试使用该go-micro框架配置 RabbitMQ 代理。我注意到 go-micro 中的代理接口有一个broker.SubscriberOptions 结构,它允许配置我正在寻找的参数(AutoAck、队列名称等)但是我无法弄清楚在启动代理时如何传递它。

这就是一个简单的兔子 go-micro 设置的样子

micro.RegisterSubscriber方法接受一个列表,server.SubscriberOption但不允许我设置broker.SubscriberOptionsrabbitmq.NewBroker允许设置broker.Options,但再一次,不是broker.SubscriberOptions

我已经挖掘了 go-micro 的代码,但无法弄清楚该broker.Subscribe方法(公开正确的结构)是如何被调用或由谁调用的。

这可能吗?是不是 API 中还没有完全充实的东西?

0 投票
1 回答
157 浏览

kubernetes - 使用 Go Micro 和 Consul 的 Telepresence 由于服务发现失败而导致错误

我正在为我的应用程序使用 go-micro,目前我正在使用 consul 进行本地开发,但是当我将我的服务部署到登台和生产环境时,我正在使用 Kubernetes。我读到了 Telepresence[1],它基本上是一个双重代理,允许您访问对 Kubernetes 服务的依赖。所以我尝试使用 Telepresence。此本地代码是使用 Telepresence 部署的,使用测试命名空间创建新部署,并允许它访问同一集群内不同命名空间中的另一个服务。但是我的服务有这种错误:

这有点奇怪,因为当我的服务不需要在 Kubernetes 集群中有任何依赖关系时,我可以使用相同的方法。作为另一个说明,我在 Google Cloud 上使用 GKE,并为每个命名空间使用 RBAC。

[1] https://www.telepresence.io/

0 投票
1 回答
457 浏览

go - 使用 Go Micro 从一个经纪人消费并生产到另一个经纪人

我正在尝试使用 Go Micro 框架编写一个微服务,该框架将从 RabbitMQ 代理消费并写入另一个。

Go Micro 有一个 RabbitMQ 插件,但似乎如果想要使用 Go Micro 抽象(例如micro.RegisterSubscriber),则必须依赖库内部的许多全局状态。我最终设置了一个消费者micro.RegisterSubscriber,然后手动创建一个单独的代理,小心不要使用任何内部全局状态(例如默认交换),然后broker.Publish在消费者函数中调用,这意味着我必须在发送消息之前手动编组消息。

这不是 Go Micro 中支持的模式吗?有没有更好的方法来做这样的事情?

我应该提一下,在这种特殊情况下选择 Go Micro 的主要原因是因为它似乎具有可靠的 RabbitMQ 抽象和重新连接支持,这在 Go 中似乎很难实现,不一定是因为在这种情况下我需要 RPC 支持.

0 投票
1 回答
272 浏览

docker - 如何为微服务应用配置 docker 的暴露端口?

请问,我学过go-micro,知道微服务客户端不需要知道微服务部署在哪个ip和端口。当服务自己运行时,端口是随机设置的,服务定位它的服务名称,如go.micro.api.user.

服务端运行如下:

客户端如:

要在 docker 中部署微服务,我不知道如何在 docker 容器中配置端口。