Golang中国

我写一个服务端,包括两部分,tcp和http,tcp是异步响应的,http是同步响应的。
用户请求http,http请求tcp,tcp异步给了响应以后,http再返回给用户。
问题是:
用什么方案让用户的http请求等等异步响应回来?不同的消息怎么区分?加唯一的消息ID?

3 回复
wangjxxxhi
#1 wangjxxxhi • 2017-05-15 16:15

使用信号量

631768417
#2 631768417 • 2017-05-22 08:54

这个不叫转化。。可以勇chan管道,tcp接受到请求后,通过写管道来通知给http

zsounder
#3 zsounder • 2017-05-22 13:38

理论上说,http和tcp不是一个层的协议,不要放在一起说,http基于tcp的。

你的这种构造方式,会毫无疑义的增大系统延迟,如果是为了服务独立,做成微服务的模式,服务间可以直接采用rpc方式来做。

如果坚持使用a服务->socket请求b服务的方式,a和b之间最好是长连提高效率,b服务可以按照管用的服务端策略,处理请求,异步把数据推出去,a中无论是用chan还是起一个协程去从端口read一直到有数据,都可以。

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。