草庐IT

RPC和GRPC

全部标签

Go:rpc 请求返回空

好的,我有一个rpc服务器包和一个rpc客户端包。我想请求服务器返回所有域。在server.go中,我导入server.DomainServer并通过http提供它。在client.go中,我导入client.DomainClient并向监听服务器发送一个rpc调用。响应为空[]。预期的响应是["dom1.de","dom2.de"]为什么响应是空的?我该如何调试?我是否必须共享GetAllDomainsRequest和GetAllDomainsRequest结构,以便它们具有相同的类型,例如在一个名为common的包中?更新:运行wireshark来捕获响应,响应是[]strings

Go:rpc 请求返回空

好的,我有一个rpc服务器包和一个rpc客户端包。我想请求服务器返回所有域。在server.go中,我导入server.DomainServer并通过http提供它。在client.go中,我导入client.DomainClient并向监听服务器发送一个rpc调用。响应为空[]。预期的响应是["dom1.de","dom2.de"]为什么响应是空的?我该如何调试?我是否必须共享GetAllDomainsRequest和GetAllDomainsRequest结构,以便它们具有相同的类型,例如在一个名为common的包中?更新:运行wireshark来捕获响应,响应是[]strings

performance - go rpc、http 或 websockets,这是将许多小块数据从一个服务器重复传输到另一个服务器的最快方式

背景我正在尝试在go中创建一个内存+cpu分析器,并希望快速传输信息,也许每秒,从正在分析的程序/服务到服务器,该服务器将通过保存数据来完成所有繁重的工作到数据库和/或通过http将其提供给站点;这将减少正在分析的程序的负载以进行更准确的测量。传输的将是小块数据。我知道已经有一些库了,但就像我说的,正在试验中。传输内容类型我还没有决定具体的传输类型,但看起来像用于HTTP或Websockets的JSON以及用于RPC的结构(如果我已经正确完成了我的研究)总结我可能会尝试每一个,只是为了亲眼看看,但我对使用RPC和Websockets的经验很少,并且想要一些可能更快或更适合我正在尝试做的

performance - go rpc、http 或 websockets,这是将许多小块数据从一个服务器重复传输到另一个服务器的最快方式

背景我正在尝试在go中创建一个内存+cpu分析器,并希望快速传输信息,也许每秒,从正在分析的程序/服务到服务器,该服务器将通过保存数据来完成所有繁重的工作到数据库和/或通过http将其提供给站点;这将减少正在分析的程序的负载以进行更准确的测量。传输的将是小块数据。我知道已经有一些库了,但就像我说的,正在试验中。传输内容类型我还没有决定具体的传输类型,但看起来像用于HTTP或Websockets的JSON以及用于RPC的结构(如果我已经正确完成了我的研究)总结我可能会尝试每一个,只是为了亲眼看看,但我对使用RPC和Websockets的经验很少,并且想要一些可能更快或更适合我正在尝试做的

go - 如何从 RPC 调用返回空字符串?

我有一个RPC系统,其中用于结果的接口(interface)如下:typeValReplystruct{Valstring}有时,我的RPC会将reply.Val设置为""(空字符串)。在这些情况下,reply.Val中的先前值不会被覆盖,留下不正确的结果供客户端使用。如何让我的RPC调用返回一个空字符串?我用谷歌搜索了这个问题,但我找不到任何关于在RPCAPI中不返回空字符串的内容。 最佳答案 ""(空字符串)通常被库(数据库、rpc、json)解释为默认值而被忽略。为了更好地控制nil和"",将rpc签名更改为:typeValR

go - 如何从 RPC 调用返回空字符串?

我有一个RPC系统,其中用于结果的接口(interface)如下:typeValReplystruct{Valstring}有时,我的RPC会将reply.Val设置为""(空字符串)。在这些情况下,reply.Val中的先前值不会被覆盖,留下不正确的结果供客户端使用。如何让我的RPC调用返回一个空字符串?我用谷歌搜索了这个问题,但我找不到任何关于在RPCAPI中不返回空字符串的内容。 最佳答案 ""(空字符串)通常被库(数据库、rpc、json)解释为默认值而被忽略。为了更好地控制nil和"",将rpc签名更改为:typeValR

go - 未能在 grpc 上完成安全握手?

我已经多次更改服务器和客户端上的端口号,但服务器总是获取不正确的端口号。当我执行客户端时,服务器将记录如下:2017/05/0715:06:07grpc:Server.Serve无法完成来自“127.0.0.1:32763”的安全握手:远程错误:tls:证书错误在客户端,我得到了这个:2017/05/0715:06:07无法调用本地主机:8070:连接错误:desc=“传输:x509:证书对任何名称均无效,但希望匹配本地主机:8070”;请重试。rpc错误:code=Internaldesc=connectionerror:desc="transport:x509:certificat

go - 未能在 grpc 上完成安全握手?

我已经多次更改服务器和客户端上的端口号,但服务器总是获取不正确的端口号。当我执行客户端时,服务器将记录如下:2017/05/0715:06:07grpc:Server.Serve无法完成来自“127.0.0.1:32763”的安全握手:远程错误:tls:证书错误在客户端,我得到了这个:2017/05/0715:06:07无法调用本地主机:8070:连接错误:desc=“传输:x509:证书对任何名称均无效,但希望匹配本地主机:8070”;请重试。rpc错误:code=Internaldesc=connectionerror:desc="transport:x509:certificat

【nacos】com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception

项目场景:springboot+nacos微服务架构,我们使用的是nacosnacos配置,先添加依赖com.alibaba.bootnacos-config-spring-boot-starter${latest.version}com.alibaba.bootnacos-discovery-spring-boot-starter${latest.version}配置nacosspring:config:activate:on-profile:devcloud:nacos:config:server-addr:192.168.0.188:8848namespace:summy-dev问题描述

Go gRPC status.Error() 在运行并发请求时导致无效的内存地址

我有一个bcrypt.CompareHashAndPassword()函数,如果错误不是nil,则返回一个status.Error()给客户端。如果我不运行并发请求,它会起作用。如果我只是将错误返回给客户端,而不是从bcrypt中返回status.Error(),则一切都适用于并发请求。我运行它来测试竞争条件,但没有任何结果。我不确定问题是出在"google.golang.org/grpc/status"库还是"golang.org/x/crypto/bcrypt"。我查看了状态库,没有读/写map或任何会导致此问题的想法。任何帮助表示赞赏。我的代码:packagemainimport