“...在反应式执行的情况下,如果后备实现是阻塞的,Micronaut Data 将使用配置的 I/O 线程池在不同的线程上安排查询执行。
如果后备实现本身支持驱动程序级别的反应类型,则不使用 I/O 线程池,而是假定驱动程序将以非阻塞方式处理查询......"
我的直截了当的问题:访问关系数据库(例如 PostGres R2DBC 驱动程序)抛出 R2DBC Micronaut Data 是否会依赖 R2DBC 驱动程序以非阻塞方式处理并且更具可扩展性?
假设我的微服务暴露了一个基于 ReactiveX 的 Reactive 端点并且必须访问阻塞数据源 throw Micronaut Data JDBC(例如,在生产版本中还没有 Oracle R2DBC),从上面很明显它“将使用配置 I /O 线程池”访问数据时。我是否完全失去了反应性端点的好处?
这是我使用 Micronaut 的第一个项目,我很少有使用反应式方法的项目。我远不是反应式最佳实践方面的专家,但我记得我读过几篇博客:如果你有阻塞源,请避免使用反应式堆栈。我还记得读过,将非阻塞与阻塞设计混合可能会产生更糟糕的结果,这主要是因为 Eventloop(例如 Netty)的设计方式。由于我将 Micronaut 与 ReactiveX 和关系数据库一起使用,某些情况下与 R2DBC 一起使用,而其他情况下与 JDBC 一起使用,对于我的疑问,我将不胜感激。