2025-03-16 Hacker News Top Stories #
- Milk Kanban 的概念及其应用强调通过视觉信号传达信息,简化工作流程。
- 受欢迎的 GitHub Action 工具“tj-actions/changed-files”被入侵,可能导致用户秘密信息泄露。
- 纽约时报关闭了其 Tor 服务,可能与技术和安全问题有关。
- 有一种方法可以从 Akira 勒索软件加密的文件中恢复数据,而无需支付赎金。
- 美国学校接送车辆排队文化被认为是一个国家性的尴尬,需要改变。
- 动态双曲正切技术可以作为神经网络中归一化层的替代品,提高模型性能。
- TJ-Actions/Changed-Files GitHub Action 被攻陷,可能导致 CI/CD 秘钥泄露。
- 字距调整的复杂性在字体设计中是一个挑战,需要考虑背景图案和字体的结合。
- 亚马逊的 Echo 设备将从 3 月 28 日起发送所有语音请求到亚马逊,引发了对用户隐私的担忧。
- Postgres 数据库可以通过合理的设计和优化扩展以满足大规模应用的需求。
Milk Kanban #
https://brodzinski.com/2025/03/milk-kanban.html
本文讨论了 Kanban 的概念及其在实际应用中的简化。作者指出,人们常常将 Kanban 与特定的实践联系在一起,例如使用白板和便利贴来管理工作流程。然而,Kanban 的本质是通过视觉信号来传达信息,例如需要完成的工作或需要关注的任务。
作者以办公室经理 Kasia 为例,介绍了一个简单的 Kanban 系统。Kasia 使用一个索引卡片来标记最后一盒牛奶,当需要补货时,索引卡片会被发送给 Kasia。这是一个视觉信号,表明需要补货牛奶。这种系统简单易懂,且不需要复杂的工作流程管理。
作者强调,Kanban 的关键是使用视觉信号来传达信息,而不是依赖于特定的实践或工具。这种方法可以帮助简化工作流程,减少不必要的复杂性。作者还指出,过度工程化的工作流程管理系统可能会导致效率低下和不必要的复杂性。
在评论中,读者们对 Kanban 的概念和应用进行了讨论。有些读者赞赏文章的简洁和易懂,而其他读者则对 Kanban 的定义和应用提出质疑。其中一位读者指出,Kanban 的概念源自日本的制造业,最初用于管理库存和生产流程。读者还指出,Kanban 的应用在软件开发和其他行业中可能需要根据具体情况进行调整和改进。
总的来说,本文讨论了 Kanban 的概念及其在实际应用中的简化,强调了视觉信号在传达信息和简化工作流程中的重要性。同时,读者们的评论也为 Kanban 的概念和应用提供了更多的见解和讨论。
HN 热度 291 points | 评论 120 comments | 作者:ladronevincet | 9 hours ago #
https://news.ycombinator.com/item?id=43373157
- Milk Kanban 的概念源自制造业中的补货系统,通过可视化信号来触发补货。
- 软件开发中的 Kanban 方法强调可视化工作流程和限制工作进度。
- 不同领域对 Kanban 的理解不同,制造业注重补货信号,而软件开发则注重可视化工作流程和限制工作进度。
- Kanban 的原理在各个领域都可以应用,包括日常生活中的物品管理。
- 有些产品设计中会加入可视化信号来提示用户需要补货或更换。
- Kanban 的概念可以应用于个人生活中的时间管理和任务组织。
Popular GitHub Action tj-actions/changed-files is compromised #
https://semgrep.dev/blog/2025/popular-github-action-tj-actionschanged-files-is-compromised/
近期,一款受欢迎的 GitHub Action 工具 “tj-actions/changed-files” 遭到攻击,黑客在其代码中植入了恶意代码,试图窃取用户的秘密信息,这一事件对成千上万的持续集成(CI)管道造成了影响。
该恶意代码的出现意味着攻击者能够访问并提取敏感信息,这对开发者和企业的安全构成了严重威胁。这一事件引发了广泛关注,许多用户开始重新审视和检查他们的 CI 流程和使用的工具,确保不受潜在的安全风险影响。
为了保护用户隐私,网站提供了隐私偏好设置,允许用户管理不同类型的 cookies。用户可以选择不允许某些类型的 cookies,以提高他们的隐私保护水平。然而,阻止某些 cookies 可能会影响用户的浏览体验和网站的服务功能。
在这个事件中,用户和开发者需要高度警惕,及时更新和检查自己的工具和库,以防止类似的安全问题发生。对于使用 “tj-actions/changed-files” 的项目,建议立即停止使用该工具并寻找替代方案,以确保系统安全。
HN 热度 269 points | 评论 3 comments | 作者:moyer | 1 day ago #
https://news.ycombinator.com/item?id=43368870
- 很多人不再安装具有多个传递依赖的 npm 包。
- 开始避免安装 VSCode 或 Chrome 扩展。
- 第三方库经常被劫持,或者开发者可能会注入恶意代码。
- 强调设置受保护的分支和标签以防止意外更改。
- 在 CI/CD 中分开生产和开发环境,避免在同一系统上使用敏感令牌。
- 讨论了网络访问控制,建议消除不必要的互联网访问权限。
- 有些用户在虚拟机中进行开发以提高安全性。
- 讨论使用沙箱技术(如 FreeBSD 的 Capsicum、Linux 的 Landlock)来限制进程权限。
- 标签可以被签名并验证,但即便如此,也可能被恶意提交欺骗。
- 许多人认为 Git 标签是不可变的,实际上它们不是。
- Qubes 和其他虚拟化技术虽然安全,但在可用性方面存在挑战。
- 有人提出希望系统能够默认启用沙箱功能,以提高安全性。
- 讨论在软件包级别实施更细粒度的权限控制。
- 提到 Docker 和 systemd 的沙箱功能,建议结合使用以增强安全性。
- 大多数项目依赖的安全措施显得不足,许多组织在提高安全性方面拖延。
New York Times shut down Tor Onion service #
《纽约时报》于 2017 年开始实验性地将其网站 nytimes.com 作为 Tor Onion 服务提供访问。这一举措旨在帮助那些因技术原因被阻止访问该网站的读者,或因担心网络监控和隐私问题而选择使用 Tor 网络的用户。Tor 是一种通过特殊软件(如 Tor 浏览器)提供安全访问的工具,能够有效避免监控和封锁,确保读者与网站之间的安全连接。
在运营 Onion 服务的过程中,《纽约时报》积累了丰富的经验,并深化了对如何接触可能被阻止访问其报道的受众的理解。尽管这一实验取得了一定的成果,但《纽约时报》决定立即关闭其 Tor 网站,转而将学到的经验应用于改进其主页面和主要产品。
用户仍然可以通过其他多种方式访问《纽约时报》的报道,包括主网页、新闻简报、播客、YouTube 账号和社交媒体渠道。此外,对于那些可能被阻止访问主网站的用户,他们可以通过 WhatsApp 或 Telegram 继续阅读《纽约时报》的报道。
在技术上,《纽约时报》的 Onion 服务是利用开源的企业 Onion 工具包(EOTK)构建的,这种工具自动化了许多配置和管理工作。虽然该服务处于实验阶段,某些功能(如登录和评论)被禁用,但《纽约时报》计划随着服务的发展逐步完善这些功能,并希望最终能够实现与主网站相当的功能。
《纽约时报》表示,他们欢迎用户的建设性反馈和错误报告,并向帮助他们配置 EOTK 的 Alec Muffett 表示感谢。
HN 热度 239 points | 评论 154 comments | 作者:vaygr | 1 day ago #
https://news.ycombinator.com/item?id=43368183
- 订阅费使得 Tor 服务的使用价值降低。
- 不确定是否可以通过 Tor 购买订阅,可能存在欺诈风险。
- WhatsApp 和 Telegram 无法替代 Tor 访问,容易被政府封锁。
- 使用这些应用程序会暴露用户的阅读习惯,增加被监控的风险。
- Runa Sandvik 的被解雇被视为对公司的重大损失。
- 许多人对《纽约时报》的转变感到失望,认为它更倾向于迎合权力而非独立报道。
- 使用匿名来源的报道可能缺乏可信度,容易被操控。
- 政府或机构的匿名信息源可能用于传播特定议程,而非公正报道。
- 对《纽约时报》及其他主流媒体的报道持怀疑态度,认为存在亲政府的偏见。
- 认为媒体在某些问题上的报道不够全面和公正,存在选择性报道的问题。
- 提供了一种使用 Tor 创建隐藏服务的技术方案,显示出技术可用性和访问的灵活性。
- 表示即使面临限制,技术上仍然可以找到解决方案。
- 一些用户分享了在图书馆阅读《纽约时报》的经历,认为纸质版仍然可以获取。
- 其他人强调了在不同国家和地区获取信息的困难,尤其是在审查严格的环境中。
Decrypting encrypted files from Akira ransomware using a bunch of GPUs #
本文介绍了一种从 Akira 勒索软件(Linux/ESXI 变体 2024)加密文件中恢复数据的方法。作者分享了他帮助一家公司从 Akira 勒索软件中恢复数据的经历,而无需支付赎金。文章提供了完整的源代码,位于 github.com/yohanes/akira-bruteforce。
Akira 勒索软件有多个变体,作者遇到的变体从 2023 年末到现在都处于活跃状态。早期版本(2023 年中期之前)存在一个漏洞,允许 Avast 创建一个解密工具,但在该漏洞被公开后,攻击者更新了他们的加密算法。作者预计攻击者会在他公开此方法后再次更新加密算法。
文章提供了 Akira 恶意软件样本的哈希值,可以在 github.com/rivitna/Malware/blob/main/Akira/Akira_samples.txt 找到。作者的客户遇到的样本是 bcae978c17bcddc0bf6419ae978e3471197801c36f73cff2fc88cecbe3d88d1a,属于 Linux V3 版本。
作者最初分析了勒索软件,发现它使用当前时间(以纳秒为单位)作为种子,并且文件修改时间具有纳秒级精度。然而,VMware VMFS 文件系统只记录文件修改时间的秒级精度,而且并非所有 ESXi 主机的日志文件都具有毫秒级精度。
文章深入探讨了 Akira 勒索软件的逆向工程,发现其代码使用 C++ 编写,虽然难以阅读,但并未混淆。作者找到了加密算法的实现,包括使用 Nettle 库和 yarrow256 随机数生成器。加密算法使用四个时间戳,每个时间戳都具有纳秒级精度,并使用 SHA-256 进行 1500 次迭代。
作者提出了一个暴力破解的方法,生成两个时间戳(t3 和 t4),将它们转换为种子,生成随机字节,并使用这些字节作为 KCipher2 密钥和 IV。然后,作者将已知的明文加密并将结果与加密文件中的已知密文进行比较。
文章还讨论了暴力破解的可行性,包括确定暴力破解的速度、找到已知的明文以及估计种子初始化时间。作者估计,在他的小型 PC CPU 上,处理速度约为每秒 100,000 个时间戳到随机字节的计算,利用所有核心。作者还提到,暴力破解的最简单方法是尝试所有可能的时间戳对,但这将需要大量的计算资源。因此,作者需要优化这个过程。
HN 热度 239 points | 评论 50 comments | 作者:costco | 1 day ago #
https://news.ycombinator.com/item?id=43365083
- 公开披露漏洞会导致黑客修复漏洞,使得其他受害者无法恢复文件
- 使用 GPU 破解加密文件是一种有效的方法,但可能存在一定的局限性
- 大多数勒索软件都使用了安全的加密算法,只有当黑客犯错时,才有可能破解
- 应用程序沙盒化可以帮助防止勒索软件攻击,但需要用户指定访问权限
- 备份和快照技术可以帮助减少勒索软件攻击的影响
- 使用系统级随机数生成器可能会被杀毒软件检测到,从而导致黑客无法使用
- 自己实现加密算法可能会增加安全风险,但也可能使得安全研究人员更难以检测
- copy-on-write 快照文件系统可以帮助防止勒索软件攻击
- 用户需要注意文件访问权限和备份,以防止勒索软件攻击
- 开发者需要注意代码安全和备份,以防止勒索软件攻击
The School Car Pickup Line Is a National Embarrassment #
https://collegetowns.substack.com/p/the-school-car-pickup-line-is-a-national
这篇文章讨论了美国学校接送车辆排队文化的现象,作者 Ryan M Allen 指出,这种现象不仅令人尴尬,而且是个复杂的问题。文章分析了美国学生上学方式的变化,尤其是私家车使用率的上升和步行、骑自行车的比例的下降。
文章中提到,过去在 1969 年,约有 40% 的学生选择步行或骑自行车上学,但到 2022 年,这一比例已降至不足 11%。而私家车的使用率则从 1969 年的 16% 激增至 56%。导致这一变化的原因之一是学校的分布更为广泛,家庭与学校的距离增加,使得步行或骑自行车变得不切实际。文章还提到,整合和预算削减使得校车服务减少,进一步迫使家长选择开车接送孩子。
作者批评了美国社会对孩子独立性的过度担忧,指出这种文化导致了所谓的 “直升机父母” 现象。尽管在日本和其他国家,孩子们能够独立上下学,但美国的父母常常因为对陌生人的恐惧而限制孩子的自由。
文章进一步探讨了交通安全的问题,指出美国街道的设计使得步行和骑行变得危险,实际上最大的威胁来自于汽车本身,而非潜在的绑架者。为了改变这一现状,作者呼吁社区共同努力,改善城市基础设施,增加自行车道和步行道,提高儿童的独立性。
此外,作者提到电动自行车的崛起为孩子们提供了更多的出行选择,但也带来了安全隐患。他建议社区应当建立更好的交通网络,促进骑行和步行的安全性。最后,文章强调要解决学校接送车辆排队的问题,需要重新设计城市和社区,减慢车速并提升行人和骑行者的安全基础设施,以便为家长节省时间,给孩子更多的独立空间。
HN 热度 236 points | 评论 359 comments | 作者:trevin | 1 day ago #
https://news.ycombinator.com/item?id=43364761
- 学校接送车队的现状是一个国家性的尴尬,需要改变。
- 美国的文化需要改变,才能让孩子们安全地独自出行。
- 日本的“Old Enough”电视系列片展示了 2-4 岁的孩子可以独自完成任务,这是值得学习的。
- 美国的“Karen”文化是问题的一部分,需要解决。
- 法律可以帮助解决这个问题,例如“自由范围”法律。
- 有些人过度担心孩子的安全,导致不必要的干预。
- 社会需要鼓励孩子们独立和自主。
- 过度保护可能会对孩子们的成长和发展产生负面影响。
- 需要找到平衡点,让孩子们既安全又有独立的空间。
- 美国的强制报告制度可能会导致不必要的调查和资源浪费。
Transformers Without Normalization #
https://jiachenzhu.github.io/DyT/
这篇文章介绍了一种新的技术,称为动态双曲正切(Dynamic Tanh,简称 DyT),它可以作为神经网络中常用的归一化层的替代品。传统的神经网络中,归一化层被认为是必不可少的,但这篇文章的作者通过实验表明,使用 DyT 技术可以在不使用归一化层的情况下实现相同甚至更好的性能。
文章首先介绍了 DyT 的定义,即一个元素级的操作,使用双曲正切函数对输入进行变换。然后,作者分析了在 Transformer 模型中使用 DyT 的效果,发现它可以匹配甚至超过使用归一化层的模型的性能。这种效果在多种不同的任务中都得到了验证,包括图像识别、语言模型、语音识别等。
作者还对 DyT 的实现进行了详细的介绍,提供了 PyTorch 代码示例,展示了如何将 DyT 集成到神经网络中。同时,作者还讨论了 DyT 的优点,包括其简单性和易于实现。
实验结果表明,使用 DyT 的 Transformer 模型在多种任务中都取得了不错的性能,包括图像识别、语言模型、语音识别等。作者还比较了使用 DyT 和使用归一化层的模型的性能,发现 DyT 在大多数情况下都可以匹配甚至超过归一化层的性能。
总的来说,这篇文章提出了一个新的技术,称为动态双曲正切(DyT),它可以作为神经网络中常用的归一化层的替代品。实验结果表明,使用 DyT 的 Transformer 模型可以在不使用归一化层的情况下实现相同甚至更好的性能,这对神经网络的设计和优化具有重要的意义。
HN 热度 229 points | 评论 29 comments | 作者:hellollm | 22 hours ago #
https://news.ycombinator.com/item?id=43369633
- 新的 Transformer 模型可以在不使用归一化的情况下匹配或超过传统模型的性能
- 去除归一化层可以减少计算成本和延迟,尤其是在低精度格式下
- 模型的收敛速度可能会受到影响,需要进行超参数调优
- 初始化和残差连接可以帮助解决梯度消失的问题
- 新模型的提出可能会带来更快和更便宜的训练过程
- 去除归一化层可能会影响模型的稳定性和性能
- 模型的性能提升可能并不明显,可能只是一个小的改进
- 新模型可能需要更复杂的初始化和优化方法来达到最佳性能
- 模型的性能可能会受到数据集和训练环境的影响
Tj-actions/changed-files GitHub Action Compromised – used by over 23K repos #
StepSecurity 公司发现了一个严重的安全漏洞,涉及到一个名为 tj-actions/changed-files 的 GitHub Action。这个 Action 已经被篡改,会在 GitHub Actions 的构建日志中打印出 CI/CD 秘钥。如果工作流日志是公开的,那么任何人都可以读取这些日志并获取暴露的秘钥。目前没有证据表明泄露的秘钥被传输到任何远程网络目的地。
StepSecurity 的 Harden-Runner 解决方案通过异常检测发现了这个问题,当一个意外的端点出现在工作流的网络流量中时。这个异常是由 Harden-Runner 的行为监控能力捕获的。该公司已经发布了一个免费的安全替代 Action,名为 step-security/changed-files,建议所有使用 tj-actions/changed-files 的用户立即停止使用并替换为安全的版本。
攻击者修改了 Action 的代码,并回溯性地更新了多个版本标签以引用恶意提交。受影响的 Action 执行一个恶意的 Python 脚本,该脚本从 Runner Worker 进程中转储 CI/CD 秘钥。几乎所有现有的 Action 发布标签都已更新为引用相同的恶意提交哈希。该公司已经确定了引入漏洞利用代码的恶意提交,并提供了 base64 解码后的代码。
为了重现这个漏洞,用户可以运行一个包含受影响的 Action 的工作流,并使用 Harden-Runner 监控工作流的网络流量。Harden-Runner 的洞察页面将显示恶意行为,包括下载和执行恶意 Python 脚本以尝试从 GitHub Actions Runner 进程内存中转储敏感数据。
为了恢复这个漏洞,用户应该立即停止使用任何版本的 tj-actions/changed-files Action,并用 StepSecurity 提供的安全替代 Action 替换。同时,用户应该检查自己的公开仓库是否存在泄露的秘钥,并采取必要的措施保护自己的 CI/CD 环境。
HN 热度 218 points | 评论 254 comments | 作者:varunsharma07 | 1 day ago #
https://news.ycombinator.com/item?id=43367987
- 第三方依赖和扩展的安全性令人担忧,许多人开始限制安装第三方包和扩展。
- Git 标签并非不可变,许多人对此存在误解,需要更好地保护代码仓库的安全。
- 自动沙箱化可以提高安全性,类似移动操作系统和网页浏览器的沙箱机制。
- 代码审查和安全检查可以帮助发现潜在的安全风险,保护代码仓库和用户数据。
- 依赖包的安全性需要更多关注,需要更好的机制来确保依赖包的安全和可靠性。
- 沙箱化技术如 Capsicum 和 Landlock 可以帮助提高系统的安全性和稳定性。
Kerning, the Hard Way #
https://home.octetfont.com/blog/kerning-hard.html
这篇文章讨论了字体设计中的字距调整(kerning)问题,特别是在设计具有垂直条纹背景的字体时。作者正在设计一款名为“Arugula”的字体,受到了 Schaeffer Versalien 字体的启发。然而,作者发现传统的字距调整方法(GPOS 查找)在这种字体中不适用,因为它会导致字形重叠和剪切。
为了解决这个问题,作者使用了字形替换(GSUB 查找)来调整字距。这种方法涉及将字形分割成两个部分,然后用一个新的字形(称为“连接器”)替换中间的部分。作者通过一个例子来说明这个过程,使用字母“L”和“T”来演示如何使用 GSUB 查找来调整字距。
作者还讨论了这种方法的局限性和挑战,例如需要为每个字形创建额外的字形来存储连接器,以及需要小心地选择字形的名称以避免在 PDF 中出现问题。尽管如此,作者认为这种方法是有效的,并且已经成功地将其应用于自己的字体设计中。
此外,作者提到了字体设计中的其他挑战,例如处理重音和其他附加符号,以及如何平衡字体的美观和功能性。作者还提到,这款字体仍然处于开发中,未来将会添加更多的字形和功能。总的来说,这篇文章提供了一个对字体设计中字距调整问题的深入探讨,并展示了作者在解决这个问题方面的创造性方法。
HN 热度 218 points | 评论 66 comments | 作者:todsacerdoti | 1 day ago #
https://news.ycombinator.com/item?id=43366479
- 这篇帖子关于字体设计的讨论,特别是关于字距调整(kerning)的复杂性和挑战。
- 有人认为将背景图案和字体设计结合在一起是没有必要的,会增加设计的复杂性。
- 字体设计需要考虑到不同平台和设备的渲染差异,才能确保设计的效果。
- 有人提到使用 SVG 或图片技术来实现高级字体设计和背景图案的结合。
- 字距调整的好坏取决于个人视觉感受和设计经验,很难有一个统一的标准。
- 有人回忆起过去的手工排版和设计工作,觉得现在的设计工具和技术已经非常先进和便捷。
- 字体设计的细节,例如字距调整和字形设计,需要非常细致的关注和调整。
Everything you say to your Echo will be sent to Amazon starting on March 28 #
https://arstechnica.com/gadgets/2025/03/everything-you-say-to-your-echo-will-be-sent-to-amazon-starting-on-march-28/ Amazon 即将推出一项新的功能,名为 Alexa+,这是一种基于人工智能的语音助手。然而,这项功能的推出也引发了人们对用户隐私的担忧。根据 Amazon 的计划,所有 Echo 设备上的语音请求将被发送到 Amazon 的云服务器进行处理,而不是在设备本地处理。这意味着 Amazon 将能够访问用户的所有语音请求记录。
Amazon 表示,这项功能的变化是为了支持 Alexa+ 的更先进的功能,例如语音识别和自然语言理解。然而,这项功能的变化也引发了人们对隐私的担忧。一些用户可能不愿意让 Amazon 访问他们的语音请求记录,尤其是在过去 Amazon 曾经出现过语音请求记录的泄露事件。
Amazon 曾经被发现将语音请求记录存储在服务器上,甚至允许员工访问这些记录。这些事件引发了人们对 Amazon 处理用户数据的方式的担忧。现在,Amazon 正在强制用户选择是否允许公司访问他们的语音请求记录。如果用户选择不允许 Amazon 访问他们的语音请求记录,他们将无法使用一些 Alexa+ 的功能,例如语音识别。
这项功能的变化引发了人们对 Amazon 优先考虑利润而不是用户隐私的担忧。Amazon 表示,Alexa+ 是公司保持 Alexa 服务盈利的最后希望。然而,这项功能的变化也引发了人们对 Amazon 处理用户数据的方式的担忧。用户需要权衡是否允许 Amazon 访问他们的语音请求记录,还是选择不使用一些 Alexa+ 的功能。
Amazon 表示,用户的语音请求记录将被加密并存储在安全的服务器上。然而,这项功能的变化仍然引发了人们对隐私的担忧。用户需要仔细考虑是否允许 Amazon 访问他们的语音请求记录,并了解这项功能的变化可能带来的风险。
HN 热度 216 points | 评论 96 comments | 作者:MBCook | 1 day ago #
https://news.ycombinator.com/item?id=43367536
- 智能音箱可能会随时录制和存储用户的语音数据,引发了对隐私的担忧
- 部分人士认为,智能手机也可能存在同样的问题,但由于其历史上没有太多的隐私丑闻,因此被更多人接受
- 有人认为苹果公司在保护用户隐私方面做得更好,但仍然存在数据收集的问题
- 使用去谷歌化的安卓系统可以更好地保护用户隐私
- 部分人士担心,如果智能音箱录制的语音数据被用于法律诉讼或其他目的,可能会对用户造成不利影响
- 有人指出,医疗机构可能会将患者的隐私信息出售给第三方公司,引发了对医疗隐私的担忧
Making Postgres scale #
https://pgdog.dev/blog/you-can-make-postgres-scale
这篇文章讨论了如何扩展 Postgres 数据库的容量。作者认为,尽管有人认为 Postgres 不能扩展,但是通过合理的设计和优化,Postgres 可以很好地扩展以满足大规模应用的需求。
作者首先提到了扩展 Postgres 的挑战,特别是当数据库的写入量超过了单个实例的容量时。为了解决这个问题,作者的团队决定将写入量分散到多个数据库实例中,这个过程称为分片。他们选择了一个哈希函数来确定每个数据记录应该存储在哪个实例中,并使用 Postgres 的逻辑复制功能来保持数据的一致性。
在实施分片的过程中,作者的团队遇到了许多挑战,包括如何处理跨实例的查询、如何保持数据的一致性以及如何处理故障转移等。他们使用了各种技术,包括使用特定的触发器来验证数据、使用 Ruby 和 Python 来实现分片逻辑以及使用 Pgbouncer 来管理数据库连接。
经过大量的工作,作者的团队成功地实现了 Postgres 的分片,并将写入量扩展到了原来的 6 倍。他们还开发了一个名为 PgDog 的开源工具来自动化分片过程,使得其他开发者也可以轻松地扩展 Postgres 的容量。
作者认为,Postgres 的扩展性是可以实现的,只要通过合理的设计和优化。他们的经验表明,通过分片和其他优化技术,Postgres 可以很好地支持大规模应用的需求。同时,作者也强调了开发者社区的重要性,通过分享经验和开发开源工具,可以帮助更多的人解决类似的问题。
HN 热度 211 points | 评论 163 comments | 作者:levkk | 1 day ago #
https://news.ycombinator.com/item?id=43364668
- PostgreSQL 可以很好地扩展,处理大量数据和高并发请求,并不需要特殊的配置和优化。
- 扩展的含义可能不同,包括处理高负载、弹性扩容等,但 PostgreSQL 在处理高负载方面表现良好。
- 使用自定义块大小、ZFS 和合理的 VACUUM 计划可以提高 PostgreSQL 的性能。
- 垂直扩展可以满足大多数数据库的需求,避免增加复杂性和降低性能。
- 合理使用 JSONB 和数据冗余可以减少连接操作,提高查询效率。
- 现代硬件条件下,数据库的性能瓶颈不再是主要问题,其他软件的性能改进相对较少。
- 自建数据库可以更好地控制成本和性能,避免云服务的限制和费用。