在Go lang中理解和实现gRPC异步操作

时间:2018-06-29 07:35:14

标签: asynchronous go grpc

我仍然遇到这个问题: 我知道,借助Go lang,我们可以轻松实现高性能的网络服务。我选择了gRPC协议,并且最好实现异步操作,因为它比同步功能更强大:

  • 您能告诉我更多有关使用异步操作而不是同步操作的好处的信息吗?
  • 您能指导我如何实现Go lang或Python异步服务,还是给我其示例代码,我已经阅读了这篇文章https://grpc.io/docs/tutorials/async/helloasync-cpp.html,但我无法理解这些代码

非常感谢您!

1 个答案:

答案 0 :(得分:1)

我认为对您来说,进行更多的研究和学习并弄清您正在处理的一些概念很重要。

在同步和异步服务方面,我做了一个谷歌搜索,并随机选择了definition of gRPC页,该页似乎很好地定义了这些术语:

  

如果API调用是同步的,则意味着代码执行将阻塞(或等待)API调用返回,然后再继续。

     

异步调用不会阻塞(或等待)API调用从服务器返回。执行将继续在您的程序中进行,当调用从服务器返回时,将执行“回调”功能。

您的陈述“异步操作比同步功能更强大”似乎是错误的。它们每个都有适合不同场景的不同应用程序。如果您关心的是特定情况,那将有助于缩小问题范围。

这里是gRPC Basics

  

gRPC是可以在任何环境中运行的现代开源高性能RPC框架。

此处的关键点是RPC,即“远程过程调用”。在gRPC中,即使调用是流式的,调用也是同步的:打开连接,发送/流式发送请求,发送/流式响应和关闭连接。开发“异步服务”意味着反向调用,这在gRPC本身的范围内未涉及。我想您可以使用gRPC来执行此类操作,但我认为这不正常。

否则,我建议您阅读sample code指南,同时也有https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm。如果您检查gRPC站点,它也可以在Python中使用。