gpt4 book ai didi

Kotlin 协程 : wrap cassandra synchronous usage vs translate asynchronous usage

转载 作者:行者123 更新时间:2023-12-02 13:24:10 28 4
gpt4 key购买 nike

这个问题可能也适用于其他库,但是使用 Cassandra 作为一个具体的例子来确保我问的是一个可以回答的问题:

使用 Kotlin,我可以使用 Cassandra 的异步方法,然后用 ListenableFuture 包装它们集成, 我可以使用 Cassandra 的同步方法,并使用挂起方法和启动/异步来包装它们的使用。

我猜测更好的技术是使用库现有的异步方法,假设这样更容易避免死锁并且速度更快,但我在推测并且是协程的新手。

对于更有经验的协同程序的人来说,这是一个明显的答案,还是有“它取决于”的特定领域?

最佳答案

这取决于您正在使用的库的内部细节以及您的性能/可扩展性目标:

  • 如果您的库是内部异步的,那么始终建议通过其 native 异步 API 使用它。免责声明:我不知道 Cassandra 的内部结构如何(同步或异步)。
  • 如果您的库是内部同步/阻塞的(大多数遗留库都是),那么它取决于:
  • 如果您的应用程序是 IO 绑定(bind)的(读取/写入大量字节到/从
    网络/磁盘)并且您正在优化它的吞吐量(最大化
    在大批量负载上处理的字节数),然后,作为一个规则
    拇指,你会更好地使用同步/阻塞API。
  • 如果您的应用程序受内存限制,并且您希望将其扩展到更多
    并发连接/请求,然后,根据经验,您将
    更好地使用异步 API。
  • 关于Kotlin 协程 : wrap cassandra synchronous usage vs translate asynchronous usage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46693039/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com