kube-ovn libovsdb 使用 rpc blocking 模式

69 阅读1分钟

kube-ovn libovsdb 使用 rpc blocking 模式

// SetBlocking 将客户端设置为阻塞模式。

//在阻塞模式下,接收到的请求被同步处理。

//如果你的方法可能需要很长时间,其他后续请求可能会超时

image.png

image.png

用例分析

  1. 面向同一个 endpoint,同一个 RPC 连接: 如果发送多个请求,rpc 请求时会编序,读取回复也会基于该顺序,如果前面的请求回复一直没有,后面的即使回复了,也必须等待,rpc client 也无法读取到回复。
  2. 面向不同一个 endpoint,多个个 RPC 连接,彼此之间应该不受影响。

1. 面向同一个 endpoint,同一个 RPC 连接

在 SetBlocking 的基础之上,libovsdb 的 RPCClient,还有一个锁,这个锁之前锁住了 SendEcho,应该将其移出,不然因为这个锁,导致无法执行 SendEcho(无法触发 timeout),也就无法发现 RPCClient 其他任务其实已经卡住了