
据编程新闻网站 InfoQ 报道,Meta 和 AWS 曾使用 Rust,Netflix 则使用 Go。但 Apple 最近使用了另一种语言,并“将其全球密码监控服务从 Java 迁移到 Swift,吞吐量提升了 40%,内存占用也显著降低”。据该文章称,这释放了近 50% 之前分配给 Kubernetes 的容量,甚至“缩短了启动时间,并简化了并发”。在最近的一篇文章中,Apple 工程师详细介绍了重写如何帮助该服务扩展到每天处理数十亿个请求,同时提升响应速度和可维护性……“Swift 让我们能够编写更小、更简洁、更具表现力的代码库(代码行数减少了近 85%),这些代码库具有高度的可读性,同时优先考虑安全性和效率。”Apple 的密码监控服务是密码应用生态系统的一部分,负责安全地检查用户保存的凭据是否出现在已知的数据泄露事件中,而不会向 Apple 泄露任何私人信息。它每天处理数十亿个请求,并使用隐私保护协议执行加密比较。这种工作负载需要高计算吞吐量、严格的延迟界限以及跨区域的弹性扩展……Apple 之前的 Java 实现难以满足服务日益增长的性能和可扩展性需求。垃圾收集导致负载下出现不可预测的暂停时间,从而降低了延迟一致性。启动开销(来自 JVM 初始化、类加载和即时编译)降低了系统实时扩展的能力。此外,该服务的内存占用(通常每个实例达到数十 GB)降低了基础设施效率并增加了运营成本。Swift 最初是作为 Apple 平台的客户端语言开发的,后来扩展到服务器端用例……Swift 的确定性内存管理基于引用计数而不是垃圾收集 (GC),消除了 GC 暂停引起的延迟峰值。事实证明,这种一致性对于大规模低延迟系统至关重要。经过调整后,苹果报告称 99.9 百分位延迟已降至亚毫秒级,内存占用也大幅下降:Swift 实例消耗了数百兆字节,而 Java 则消耗了数十 GB。InfoQ 的文章总结道:“虽然这并不表明 Java 和类似语言正在衰落,但越来越多的证据表明,在性能要求最高的领域,一些人发现通用运行时已无法满足需求。”
在 Slashdot 上阅读更多内容。