什么是TChannel中的双向协议?

时间:2016-01-19 16:12:45

标签: protocols frame

我已经阅读了TChannel,这是一种用于一般RPC的网络成帧协议。 https://github.com/uber/tchannel/blob/master/docs/protocol.md 但我误解了一些概念。 " Tchannel是双向请求/响应协议。对等体之间的每个连接被认为是等效的,无论哪一方发起它。在同一对对等体之间具有多个连接是可能的,甚至可能是期望的。消息ID的范围限定为连接。将请求发送到一个连接并将响应发送到另一个连接是无效的。" 什么是双向协议?

1 个答案:

答案 0 :(得分:0)

开始考虑声明中的“请求/响应”部分。这意味着对于主机A发送的每个成功请求,将始终有主机B发回的响应。

这并不一定意味着同步行为(例如A块等待B的回复)。事实上,TChannel使用异步行为。许多请求可以按顺序发送,请求者期望无序响应。通过这种方式,慢速请求不会阻止更快的请求。 这怎么工作?非常简单。 A在发送请求时指定消息ID。当B响应时,它使用相同的消息ID作为响应。通过这种方式,A可以轻松地将响应与相应的请求相关联。

现在看一下声明中的“双向”部分。这意味着如果主机B想要向主机A发送请求,它可以重新使用由A最初创建的相同信道。尽管存在请求/响应逻辑,但A和B被认为是对等,并且每个连接都是无论哪个主机发起了对等体,对等体都被认为是等效的。