Hasty Briefsbeta

双语

The .join() that should be a bug

13 days ago
  • #connection management
  • #database systems
  • #virtual threads
  • 存在两种经典的数据库连接模型:Redis的单线程模型能扩展连接但禁止阻塞,而Postgres的每连接进程模型允许阻塞但无法低成本扩展。
  • Kronotop将连接处理与工作处理分离:事件循环线程(类似Redis/Netty)管理数千个连接而不阻塞,而虚拟线程则用普通顺序代码处理阻塞I/O(例如FoundationDB调用、磁盘读取)。
  • 系统使用两个执行器——虚拟线程处理慢速操作,Netty事件循环处理响应,确保连接线程保持空闲,并遵循严格的回复移交规则。
  • Kronotop连接持有客户端状态、命名空间、认证和事务,这些与会话绑定并在断开连接或重置时清理,便于在客户端池中重用。
  • 虚拟线程中的.join()方法允许进行阻塞调用而无需浪费真实线程,因为运行时会挂起并恢复它们,从而消除等待成本。