## Postgres 查询取消:安全检查
当你中断一个 Postgres 查询(通常使用 Ctrl-C),一个“CancelRequest”会被发送到服务器。这并非通过现有的、可能已加密的连接进行,而是通过一个使用特殊协议标识符的*新*连接进行。Postgres 使用进程 ID 和在初始连接握手期间交换的密钥来识别此请求。
令人惊讶的是,`psql` 以*明文*发送此 CancelRequest,即使原始查询连接已完全加密。这是一个已知问题,自 Postgres 17 起,底层 `libpq` 库中已有修复方案。然而,`psql` 尚未采用它。
这种明文传输存在安全风险:潜在的拒绝服务 (DoS) 攻击,攻击者可以重放取消请求,以及历史上,对 4 字节密钥进行暴力破解的漏洞(通过协议更新,允许使用更大的密钥已解决)。
像 Elephantshark 这样的 Postgres 网络流量监控工具突出了这些问题。虽然 Elephantshark 现在可以处理取消请求,但 `psql` 更新之前,未加密取消的根本问题仍然存在。建议使用 Postgres 18 和最新的协议版本,使用 VPN,或在修复方案实施之前避免在 `psql` 中使用 Ctrl-C。
## 美国运通支付网络:两次零停机迁移
美国运通成功地将其关键任务支付网络迁移了两次——首先迁移到新的微服务架构,然后迁移到新的 Kubernetes 基础设施,两次迁移均未中断任何实时交易。这是通过分阶段方法实现的,优先考虑零停机和功能对等。
核心策略围绕着一个集中的“全球事务路由器”(GTR),用于管理长连接和路由流量。第一次迁移包括三个阶段:引入 GTR,使用“影子流量”(将实时数据回放至新平台)验证逻辑,最后是“金丝雀路由”——逐步将实时流量百分比转移到新系统。
第二次迁移利用已建立的 GTR 进行 Kubernetes 环境之间的金丝雀路由,通过严格的测试和基础设施即代码,确保一致的性能和弹性。一个关键的推动因素是能够在出现问题时快速回滚到之前的系统。
主要经验教训包括强大流量控制的重要性、优先考虑回滚能力、投资于全面的可观察性,以及影子流量用于验证的价值。最终,耐心和严谨的方法对于在两次复杂迁移过程中保持网络的可靠性至关重要。
## 色彩调和抖动:总结
本次探索深入研究了图像抖动——为了补偿量化过程(减少颜色数量)中的颜色损失而添加有意的噪声。虽然简单的随机噪声会引入不需要的纹理,但更智能的方法旨在保留细节。
**有序抖动** 使用预定义的阈值图,比随机噪声更有效地分配扰动,并且易于并行化。**误差扩散抖动** 分析图像,将量化误差分布到相邻像素,以获得更平滑、更自然的外观,但它是串行的并且可能导致伪影。
将这些应用于全彩调色板显示误差扩散在保留颜色信息方面表现出色。然而,通过缩放扰动,可以使用**规则调色板**(均匀分布的颜色)来改进有序抖动。对于**不规则调色板**,需要更高级的方法。
像**N候选方法**(使用概率矩阵)和**N最近**和**N凸**算法等技术提供了解决方案,平衡了质量和速度。**Knoll算法**和**重心坐标**(使用Delaunay三角剖分或自然邻域插值)提供了更高的质量,但计算量大。
伽马校正和阈值矩阵的选择(Bayer、半色调、蓝噪声)也会显著影响结果。作者提供了一个C库和进一步探索的资源,强调算法复杂度、性能和视觉质量之间的权衡。