Micronaut Data与R2DBC相比,传统的“每个连接一个线程”的模型Micronaut Data JDBC更具可扩展性吗?

10
根据micronaut-data reactive guide,“如果是响应式执行并且支持实现是阻塞的,Micronaut Data将使用配置的I/O线程池在不同的线程上安排查询执行。如果支持实现在驱动程序级别本地支持响应式类型,则不使用I/O线程池,而是假定驱动程序将以非阻塞方式处理查询...”
我的直接问题是:通过R2DBC访问关系数据库(例如PostGres R2DBC driver),Micronaut Data是否依赖于R2DBC驱动程序以非阻塞方式处理,并具有更高的可扩展性?
假设我的微服务基于ReactiveX公开了一个反应式端点,并且必须通过Micronaut Data JDBC访问阻塞数据源(例如,在生产版本中尚不存在Oracle R2DBC),从上面清楚地知道它“将使用配置的I/O线程池”来访问数据。我是否完全失去了反应式端点的好处?
这是我使用Micronaut和ReactiveX以及关系数据库的第一个项目,在Reactive最佳实践方面我还不是专家,但我记得在几个博客中读到过:如果你有阻塞源,请避免使用反应式堆栈。我还记得读到过混合非阻塞和阻塞设计可能会导致更差的结果,主要是因为Eventloop(例如Netty)的设计方式。由于我将使用Micronaut与ReactiveX和关系数据库一起使用,其中一些情况使用R2DBC,另一些情况使用JDBC,因此我将感激任何关于我的疑问的评论。
1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接