我想在不同的服务器上运行不同的远程过程,而不必等待服务器的答复。作为服务器完成了我想在客户端进行回复的过程。可以用grpc golang吗?
我想实现一个区块链网络,我想要求不同的对等方执行交易,但是我不想等到一个对等方提供执行输出,然后再转到另一对等方。
换句话说,我要广播过程的执行,然后在执行完成时获得所有答案。
我尝试了连接客户端和服务器的常用方法,但是它等待服务器的响应。它将增加需要在更多对等节点上执行的时间。
答案 0 :(得分:0)
您可以使用
go func(){}()
执行异步作业,您可以使用内置的同步包轻松控制异步任务 或使用渠道来控制或同步任务。
答案 1 :(得分:0)
只需在gRPC中进行客户端流式传输 客户在发送所有数据时一次又一次地发送消息
// add stream keyword when use in client side streaming
rpc HeavyLoadData(stream P2PMessages) returns (P2PMessages);
如果需要连续性,也可以使用双向
message P2PMessages{
string anything = 1;
}
rpc Messages(stream P2PMessages) returns (stream P2PMessages){};
如果您想做一些必须完成的事情,然后再发送数据,请使用锁
var lock = &sync.RWMutex{}
// it will lock until your logic completes
fun test(){
lock.RLock()
defer lock.RUnlock()
//do something your logic
}
如果有多个客户端组成一个客户端,并且希望在完成逻辑使用后发送数据,也可以使用
首先创建客户端地图
var clients = make(map[string]string)
//then use the threading in go
go func(){
// maintain here all your client when you want to send the data to whom
}()