将请求分派到Tokio中的非线程安全单例对象

时间:2018-07-05 21:20:36

标签: rust rust-tokio

我想围绕第三方库中的对象创建包装器,然后通过Tokio将源自TCP套接字的请求分派给该对象。在Tokio中是否有惯用的方式来处理此问题?


从概念上讲,界面如下:

impl MyObject {
    fn handle_requestA(&self, r: RequestA) -> ResponseA,
    fn handle_requestB(&self, r: RequestB) -> ResponseB,
    // ...
}

需要注意的几件事:

  1. 该对象不是线程安全的,因此需要将请求序列化
  2. 请求处理程序可能会花费很长时间,因此在与Tokio的其余事件循环相同的线程上运行它们可能不是一个好主意

我可以启动一个常规的OS线程并通过一个队列来馈送它,但是在那种情况下,我需要将不同类型的请求多路复用到它上(然后将响应多路分解回套接字)。我可以重复使用一些现有的管道吗?

一个目标是要有MyObject个池,并在它们之间进行负载均衡请求。

0 个答案:

没有答案