我正在寻找多线程彗星服务器库 - 我需要的是在线程池(4-8 个线程)上工作的异步 io(使用 epoll)。如果 Tornado 是多线程的,它将是理想的。
为什么是多线程?我需要处理和提供可能来自每个连接的用户的数据——它可以使用数据库在龙卷风实例之间同步,但即使是 nosql 也会太慢——几乎每个请求都会以数据库写入/更新结束——即使使用异步司机不是个好主意。我可以将所有内容存储在本地易失性内存中,因此它可以非常快 - 但必须在单个进程上运行以避免进程间通信。我不需要扩展——一个盒子就足够了——但它必须很快。一些数据将存储在 MongoDB 中 - 但 mongo 查询的数量将是正常请求的 5%。
重要的是 - 信号量(和其他更高级别的方法)对我来说不是火箭科学,所以我不害怕同步。
要求:
- 异步 io
- 非阻塞
- 数千个并发连接
- 快速地
- 基本 HTTP 功能(GET、POST、cookies)
- 异步处理请求的能力(做某事,带回调的异步调用(例如数据库查询),处理回调,返回数据)
- 线程池
- C++/Java/Python
- 简单轻便
也有异步 mongo 驱动程序会很好
我研究了 Boost ASIO,它似乎能够做我需要的事情——但我想专注于应用程序——而不是编写 http 请求处理。
我读过Tornado(看起来很理想,但它是单线程的),Simple(不确定它是否可以异步处理请求并在异步调用后返回数据),BOOST ASIO(非常好,但太低级)