草庐IT

异步通信

全部标签

asynchronous - Go lang gRPC异步操作的理解与实现

我还在为这个问题苦恼:我知道使用Golang我们可以轻松实现高性能的网络服务。我选择了gRPC协议(protocol),我最好实现异步操作,因为它比同步更强大:你能告诉我更多关于使用异步操作相对于同步操作的好处的细节吗?能否指导我如何实现Golang或Python异步服务,或者给我它的示例代码,我已经阅读了这篇文章https://grpc.io/docs/tutorials/async/helloasync-cpp.html但这些代码超出了我的知识范围非常感谢! 最佳答案 我认为对你来说做更多的研究和弄清楚你正在处理的一些概念很重要

c# - 来自 golang 和 c# 的 elixir 函数的并行或异步任务

我正在和Phoenix一起学习Elixir。我很容易地构建了一些RESTAPI服务器,但是我还需要实现一个要求。我需要能够执行并行或异步任务以从后端调用/执行某些API,并将这些结果放入JSON响应中。这就是我从Go和C#中大致实现它的方式//GolanguserCount:=make(chanint)usersList:=make(chan[]Users)gogetAggregateUserCounts(userCount)gogetGetUsersList(usersList)//dootherheavytasksfromherehttpJsonResponse(map[strin

go - 避免goroutines之间双向通信的死锁

我正在第一次体验Go,到目前为止我真的很喜欢goroutine和channels结构。我想知道是否有一种惯用的方法可以避免多个goroutine之间的双向通信出现死锁。考虑以下示例。共有三个goroutine:producer、worker和controller。生产者生产整数。实际上这可能是数据来了例如来自网络连接。worker从生产者那里接收数据,并对其进行一些操作它。然后,worker将修改后的数据发送给controller。在某些情况下,Controller会向worker发送命令。在里面例如,如果接收到的整数大于180,就会发生这种情况。当Controller试图向工作人员发

google-app-engine - 通过goroutine异步发布到google pub sub

我正在尝试通过goroutine将消息异步推送到googlepub-sub但我遇到了以下错误panic:不是AppEngine上下文我正在使用mux并有一个api处理程序n=100万funcapihandler(whttp.ResponseWriter,r*http.Request){gocreateuniquecodes(n)return"requestrunninginbackground"}funccreateuniquecodes(n){c:=make(chanstring)gocreateuniquecodes(c,n)forval:=rangec{publishtopubs

go - 基于异步回调的 API 的同步 API 包装器

我正在使用pion/webrtcGo库在我的项目中发现了这个问题,即库提供的基于回调的API(它反射(reflect)了WebRTC的JavaScriptAPI)在Go中使用起来很尴尬。例如,执行以下操作conn.OnTrack(func(...){...})conn.OnICEConnectionStateChange(func(...){...})在JavaScript中很典型,但在Go中,这有一些问题:如果并行调用回调,此API可以轻松引入数据竞争。基于回调的API传播到代码库的其他部分并使一切都接受回调。在Go中处理这种情况的常规方法是什么?我是Go的新手,我读到同步API在G

go - 如何使一个 pod 与另一个 pod 的本地主机通信

我已经在Go中实现了一个gRPC客户端服务器。我现在已经在Kubernetes中将它们设置为客户端和服务器pod,客户端在其中连接到服务器。我在我的电脑上使用vagrant(centos/7)设置了这个集群。我的问题是客户端想要访问端口8090(服务器在此端口上服务)并向服务器发送消息,但是由于它们位于不同的pod中,客户端无法访问本地主机8090,因此pod失败。我该如何解决这个问题?funcmain(){conn,err:=grpc.Dial(":8090",grpc.WithInsecure())iferr!=nil{log.Fatalf("didnotconnect:%v",e

go - 简单的服务器客户端通信不起作用

这个看似简单的例子并没有像预期的那样工作,我不好意思问这个问题,但是这里是:有一个客户端重试连接到服务器,发送消息,然后等待响应:funcclient(){varconnnet.Connvarerrerror//retryserveruntilitisupfor{conn,err=net.Dial("tcp",":8081")iferr==nil{break}log.Println(err)time.Sleep(time.Second)}//writetoserver_,err=conn.Write([]byte("request"))iferr!=nil{log.Println(er

encryption - 在 Go 中使用 RSA 进行 key 交换的 AES 加密通信

我正在尝试在基于RubySinatra的网络后端和GoogleGo应用程序之间建立安全通信。Go应用程序包含公钥并最初打开连接。然后它使用其公钥加密随机生成的AES,并将其发送到Web后端。所有即将到来的(大容量)数据都将使用AESkey加密。这是一般可用的方法吗?Go代码如下所示aesRand:=make([]byte,32)rand.Read(aesRand)AESBlock,_=aes.NewCipher(aesRand)//EncryptAESkeywithRSAdata,err:=rsa.EncryptPKCS1v15(rand.Reader,PubKey,aesRand)现

Java网络编程 - 网络编程介绍 - 网络通信三要素

文章目录网络编程网络编程介绍网络通信三要素要素一:IP地址IP地址基本介绍IP地址的操作类要素二:端口号要素三:协议TCP协议UDP协议网络编程网络编程介绍什么是网络编程?网络编程可以让程序与网络上的其他设备中的程序进行数据交互。网络编程基本模式:常见的通信模式有如下2种形式:Client-Server(CS:客户端与服务器模式)、Browser/Server(BS:浏览器与服务器模式)Client-Server(CS)模式Browser/Server(BS)模式网络通信三要素实现网络编程关键的三要素:IP地址:设备在网络中的地址,是唯一的标识。端口:应用程序在设备中唯一的标识。协议:数据在网

go - 通过 api 网关的 http 链接的 docker 容器之间的通信

我目前正在开发一个golang网络应用程序,该应用程序目前是一个由许多包组成的应用程序,并且部署在一个单独的docker容器中。我有一个redis实例和一个mysql实例作为单独的容器部署和链接。为了获取它们的地址,我从docker设置的环境变量中拉取它们。我想实现一个api网关模式,其中我有一个服务公开HTTP端口(80用于http或443用于https)称为“api”,它代理对其他服务的请求。其他服务最好不要公开任何端口,而是直接链接到它们所依赖的服务。所以,api会和除mysql和redis以外的所有服务Hook。任何需要验证用户session信息的服务都将与用户服务等相关联。我