我有一个Tokio TCP后端应用程序,简单地说,在收到请求后,它从Redis读取一些内容,向PostgreSQL写入一些内容,通过HTTP上传一些内容,向RabbitMQ发送一些内容等等。处理每个请求需要很多时间,因此为每个请求创建一个单独的任务。由于在异步模型中不可能共享连接,因此需要一些连接池。目前,每一个请求都会建立新的连接,这是非常过分的。
我一直在Rust中寻找异步连接池实现,但是没有找到任何最新的实现。
我想听听关于如何亲自实施的建议。
我唯一想到的是:
-
Stream/Sink
具有内部连接集合的对象。不管是后进先出还是后进先出,因为连接是相同的。在应用程序启动时,会分配N个连接。
-
现在我不确定是否可以在任务之间共享这样一个池,但如果可能的话,任务将轮询流以获取连接实例(而不是建立自己的连接实例),使用它,然后放回去。
-
-
如果一个连接失败,它将被丢弃,并且池现在包含N-1个连接,因此它可能决定在下一个请求中分配一个新的连接。
-
我必须/可以/应该以某种方式在任务之间共享流/汇池吗?不管怎样,我看到一些
Shared
未来
futures
机箱。
-
在东京期货的教程中有一些令人沮丧的地方。E、 它并没有解释我如何通知最重要的任务,也就是说,我如何实现神话般的最内在的未来,它本身并不汇集任何东西,但仍然必须通知最上层的未来。
还是我的方法完全错误?我可以自己开始玩,但我很怀疑我错过了一些东西,例如一键解决方案。