【问题标题】:Clojure core.async and c10kClojure core.async 和 c10k
【发布时间】:2018-04-23 20:41:36
【问题描述】:

据我所知,带有线程池的异步应用程序用于不创建 每个连接的新线程。当使用 core.async 中的go 块解决此问题时,可以通过操作系统和支持它的流行 http 库来停放套接字 IO,其他块(如 DB 查询)需要通过创建新的thread 来处理.对于典型的 Web 应用程序,99.9% 的请求是通过访问 DB 来处理的,我们最终得到 n 个连接 = n 个线程。我说的对吗?有什么解决办法吗?

【问题讨论】:

    标签: clojure blocking core.async


    【解决方案1】:

    是的,您不应该将 go 块用于阻塞操作,例如 IO。希望我们很快就会有异步 jdbc https://www.slideshare.net/ypoirier/jdbc-next-a-new-asynchronous-api-for-connecting-to-a-database

    还有https://github.com/alaisi/postgres.async

    【讨论】:

    • 通常不会有一个线程池来维护与数据库的连接吗?希望/设计是每个单独的数据库操作都足够快,以至于 10k 客户端可以通过 100 个连接进行多路复用(当然会增加一些延迟)。
    猜你喜欢
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多