文章
本文深入探讨了将进程内、单用户嵌入式数据库 DuckDB 转换为可扩展的云原生数据仓库的复杂性。DuckDB 的核心优势在于其速度、简单性和本地优先分析,但矛盾的是,由于其缺乏网络、外部元数据管理和多用户支持,这些优势在尝试将其迁移至云端时成为了巨大的障碍。文章介绍了 MotherDuck 作为一种解决方案,旨在提供无服务器云功能,同时不牺牲 DuckDB 的易用性。MotherDuck 的架构涉及一种混合模型,其中本地 DuckDB 实例通过客户端和服务器扩展与云托管 DuckDB 实例交互。它通过为每个用户会话生成一个专用的 Kubernetes 进程(称为 Duckling)来解决多租户和隔离问题,从而确保持久存储和集中式身份验证。讨论强调了在求助于完全分布式系统之前,最大化单节点性能的决策,这反映了一种务实的扩展方法。
Shannon Mason 在该播客中讨论了如何通过理解认知负荷对神经的影响来优化团队生产力。她反对追求 100% 的利用率,认为这会导致倦怠、糟糕的决策以及前额叶皮层因需要恢复而导致的认知功能下降。一个关键的区别在于“弹性时间”(用于创新、学习和处理意外工作的有意识的时间段)和“闲置时间”(由系统瓶颈造成的浪费性等待)之间。Mason 强调了情境切换对业务产生的可衡量影响,并为个人提供了时间分块和静音通知等策略,同时为领导者提供了通过如专注日等实践,创建避免过度利用的团队文化。讨论还涉及通过在数据表明一项举措不起作用时进行调整来避免沉没成本谬误,并将此定义为学习而不是失败。总体信息是营造一个重视清晰思考和明智决策,而非盲目忙碌的氛围。
资深独立贡献者 Tina Wright 提出了 IC 领导者面临的两个核心存在性挑战:如何在不延长工作时间的情况下实现更大的影响力,以及如何确定个人贡献的实际价值。为了实现影响力,她提出了三种技巧:战略性授权(匹配机会、指导、给予自主权、接受“足够好”);跨团队的工作分配(定义任务、里程碑、跟踪、协调、广泛沟通);以及消除组织中的无用功(集体效率、重点技术战略、避免形式主义)。为了验证个人影响力,她提倡一种科学的方法:制定可证伪的假设,运行小的、可重复的实验,用可衡量的代理指标来衡量输出信号,并通过将技能分解为独立的组成部分和可操作的步骤来缩短反馈循环。本文为旨在提高其影响力和信心的资深 IC 提供了实用、可操作的建议。
本文介绍了截至 2025 年 9 月 15 日的 Java 生态系统中重要进展的每周综述。主要亮点包括 JDK 25 和 GraalVM for JDK 25 的正式发布,以及针对 JDK 26 的 JEP(JEP 522 和 JEP 500)的更新。它涵盖了 Oracle 决定将 GraalVM 从 Java 发布计划中分离出来的决定,表明了 GraalVM 向非 Java 语言的战略转变。此外,该综述详细介绍了各种流行的 Java 框架和工具(如 Quarkus、Apache TomEE、LangChain4j、JBang 和 Gradle)的版本发布和更新,包括它们的新功能、错误修复和依赖升级。本文还涉及 Jakarta EE 12 规范的讨论进展和 BellSoft 的 Liberica JDK 25 的发布,提供了近期进展的广泛概述。
本文总结了 2025 年云原生峰会的见解,重点介绍了组织如何利用开放实践库进行架构和 AI 应用。Andrea Magnorsky 介绍了“字节级架构”,这是一种使用定期举办的结构化工作坊,在团队内部构建持续的、包容的架构理解的方法,将隐性知识转化为显性知识,并培养一个活跃的架构知识库。作为补充,Ahilan Ponnusamy 和 Andreas Grabner 提出了“企业 AI 应用的技术运营模式”。该框架也借鉴了开放实践库,强调利益相关者对齐、平台工程和增量交付,以指导 AI 项目。它通过提倡平台工程作为 AI 项目的单一访问点和事实来源,解决了诸如“影子 AI”和人才稀缺等挑战。这两种方法都强调了人工协作、反思和学习在驾驭复杂技术变革中的关键作用,与当前强调刻意练习和结构化采纳策略的行业趋势相一致。
Momento 是一个无服务器数据平台,最初使用 Kotlin 构建其缓存服务,旨在缩短产品发布周期。然而,他们很快遇到了与垃圾回收、Netty 问题以及 Graviton (ARM 架构) 上的次优性能相关的性能瓶颈。尽管各种 Kotlin 优化仅产生了增量收益,但对复杂数据类型和流式 API 的新产品需求促使他们重新评估。在 Rust 的内存安全、无 GC 以及内部倡导的推动下,Momento 决定逐步将其路由服务迁移到 Rust。这个决定伴随着已知的风险,包括大量的开发人员时间、运行双系统的必要性,以及较年轻的 Rust 生态系统固有的不稳定性 ( `hyper` 的重大变更和 `tonic` 中影响生产的缺陷均体现了这一点 )。迁移后,Rust 提供了最初的性能提升,实现了 32K TPS,而 Kotlin 为 20K TPS。然而,在更高的负载下,出现了新的性能问题,表现为突然的尾延迟峰值。通过深入的调试,利用 Tokio 指标和火焰图,将根本原因确定为 `h2` crate ( HTTP/2 实现 ) 中长期存在的互斥锁竞争问题,而 gRPC 在持久连接上的多路复用加剧了这个问题。文章总结说,虽然 Rust 功能强大,但它并非能够一蹴而就,强调生产环境中的性能优化需要细致的测量、深入的技术理解,以及对底层库复杂性的谨慎处理。
本文宣布了 Temporal 和 OpenAI Agents SDK 之间的公开预览集成,为 AI 代理工作流引入持久的执行能力。此次合作解决了 AI 代理开发中的一个关键挑战:它们的无状态性,这通常会导致完全重启并在失败时浪费资源。通过将 OpenAI 代理包装在 Temporal 工作流中,开发人员可以利用 Temporal 的内置重试逻辑、状态持久性和崩溃恢复。每个代理交互,包括大型语言模型 (LLM) 调用、工具执行和外部 API 请求,都被捕获为确定性工作流的一部分。这种方法允许系统在崩溃、超时或网络故障后自动重放并恢复代理的精确状态,从而大幅提高可靠性和运营效率。该集成采用 Temporal 活动进行外部交互,通过将确定性工作流逻辑与非确定性执行分离,确保容错和精确的状态跟踪。持久状态和可视化工作流历史记录提高了可观察性。这有助于将实验性 AI 工作负载与企业级执行保证联系起来。虽然一位 Reddit 用户对隐式库控制提出了深思熟虑的担忧,但该版本的目的是使 AI 代理可用于生产,简化编排并确保持久性。该预览版可通过 Temporal 的 Python SDK 访问,以及部署演示和文档。
Datadog 推出了 Monocle,一个用 Rust 构建的实时时序存储引擎,旨在整合并优化其指标存储基础设施。文章详细介绍了 Datadog 之前存储后端的演变,其中包括基于 Cassandra、Redis、MDBM、基于 Go 的 B+ 树和 RocksDB 的解决方案,每种方案在可扩展性、并发性和运维负担方面都提出了独特的挑战。Monocle 通过采用统一的每核分片、每分片工作器模型 (shard-per-core, worker-per-shard model) 来解决这些问题,其中每个工作器管理自己的日志结构合并树(LSM 树)实例。这种设计利用 Rust 的内存安全性和效率,消除了写入路径上的锁,显著减少了争用。该引擎集成了数据接入、存储和查询处理,利用内存表进行数据存储,基数树缓冲区用于数据聚合,统一缓存用于降低延迟。性能基准测试显示,与之前的系统相比,数据接入吞吐量提高了 60 倍,查询延迟降低了 5 倍,成本降低了一半。Monocle 的模块化 Rust 组件也被重新用于其他 Datadog 系统,从而增强了可维护性和一致性。
本文宣布微软公开发布 Azure 逻辑应用(标准版)的一项新功能,使其能够作为模型上下文协议 (MCP) 服务器运行。MCP 被强调为一个开放标准,旨在促进大型语言模型 (LLMs)、AI 代理以及数据库、API 和业务工作流等外部系统之间安全、可发现和结构化的交互。这项创新使开发人员能够重新配置现有的标准逻辑应用,使其可以充当远程 MCP 服务器,从而有效地将已建立的工作流转换为 AI 代理可访问的工具。微软首席项目经理 Kent Weare 强调了该功能的诸多优势,包括降低开发开销、增强可重用性以及简化跨各种企业系统的集成。该功能旨在使 AI 代理能够动态地组合和利用这些工具,从而为复杂的企业场景培养可扩展性和适应性。其中,“远程”指的是 MCP 服务器可以独立于 AI 代理的界面运行。例如,可以将本地 Visual Studio Code 客户端连接到 Azure 托管的逻辑应用 MCP 服务器。
最新的 Android Gradle 插件 (AGP) 引入了一种优化的资源精简机制,该机制将代码优化与资源精简相结合。这种新方法利用 Android 的 R8 优化器同时处理代码和资源引用,从而能够精确地识别和删除仅由未使用代码引用的资源。这显著改进了以前的版本,在以前的版本中,由于 AAPT2 的无条件保留规则,R8 往往无法充分发挥优化效果。Google 表示,对于在各种设备形态中共享资源和代码的应用,这可以带来高达 50% 的应用体积缩减,同时也有利于较小的应用程序。该功能目前在 AGP 8.12.0 中作为可选项提供,并将成为即将推出的 AGP 9 中的默认设置。减少应用体积具有多重好处,包括更快的下载速度、更快的安装速度、更低的内存消耗、更快的启动时间、更高的渲染速度以及 ANRs 的减少。