分布式数据库中的版本控制:协调的终结者

2025-02-08

本文探讨了在构建高可用、低延迟、可扩展的分布式数据库系统时,版本控制相对于协调机制的优势。通过一个具体的例子,作者阐述了如何利用版本控制避免锁机制带来的并发性问题和可扩展性瓶颈。版本控制通过为数据创建多个版本,允许并发事务在不互相阻塞的情况下访问数据,从而提升系统性能和吞吐量。文章还深入探讨了版本选择和版本管理机制,并解释了如何在Aurora DSQL中利用物理时钟来避免协调,最终实现了高性能和高可用性的分布式数据库系统。

阅读更多
开发

形式化方法:优秀的工程实践?

2025-01-10

亚马逊AWS工程师Marc Brooker在TLA+大会上的主题演讲中力挺形式化方法。他认为,对于大型分布式系统或关键低级系统,形式化方法并非成本高昂的累赘,而是节省时间和金钱的利器。通过减少返工和降低变更成本,形式化设计能显著提高软件开发效率。并非所有软件都适用,例如UI或价格逻辑等对用户需求变化敏感的领域,敏捷开发更合适。但对于需求明确的大型系统,形式化方法能有效降低bug率,提升性能。Brooker推荐了多种工具,包括TLA+、P、Alloy等规范语言,以及模型检测器、验证型编程语言等,并强调形式化方法不仅能保证正确性,还能帮助探索优化方案,避免在正确性和性能之间艰难权衡。

阅读更多
开发

让我们把CAP定理放到古董柜里

2024-07-25

本文认为,对于构建云风格分布式系统和云上应用程序的工程师来说,CAP 定理几乎无关紧要。在云架构中,可以使用负载均衡器和路由机制将客户端引导到应用程序的健康副本,从而在大多数网络分区情况下提供强一致性和高可用性。CAP 定理更适用于在间歇性连接环境中设计和构建系统的工程师,例如物联网、环境监测和移动应用程序。

阅读更多
未分类 CAP 定理

滑雪板会变钝吗?

2024-07-08

文章作者通过观察滑雪板边缘的微观形貌,发现滑雪板在使用后,边缘会因为与冰雪摩擦而出现磨损,变得圆滑甚至出现缺口,从而影响滑雪体验。作者认为,定期打磨滑雪板边缘可以去除磨损痕迹,保持滑雪板的锋利,提升滑雪的安全性及乐趣。

阅读更多

形式化方法:只是优秀的工程实践?

2024-06-24

软件工程领域中,形式化方法常常被认为成本高昂且难以实施。但作者认为,对于大型、分布式或关键的底层系统,形式化方法能够通过减少设计迭代和返工,以及尽早发现接口问题,从而提高软件开发速度和效率,最终节省时间和金钱。文章还讨论了敏捷开发和形式化方法之间的关系,指出这两种方法适用于不同类型的软件开发。最后,作者列举了一些常用的形式化方法工具,并强调了形式化方法在设计阶段的价值,认为它可以帮助开发者更快地构建更优化的系统。

阅读更多
未分类 形式化方法

使用线程让程序变慢

2024-06-07

文章讲述了作者通过多线程优化程序,却导致程序运行速度变慢的经历。作者通过分析发现,程序中使用了共享的随机数生成器,导致线程间频繁进行上下文切换和锁竞争,从而降低了程序性能。最终,作者通过使用线程安全的随机数生成器解决了问题,并强调了在多线程编程中需要注意避免共享状态和锁竞争。

阅读更多
未分类 上下文切换

不仅仅是规模

2024-06-05

这篇博客文章反驳了“你不需要分布式系统”的观点,认为现代计算机虽然强大,但分布式系统不仅仅是关于规模,还有可用性、持久性、利用率、延迟、隔离和变更管理等方面的优势。作者认为,简单性是系统的属性,而不仅仅是组件的属性,分布式系统可以通过利用冗余和隔离来实现更高的可用性和更简单的变更管理。此外,作者还强调了组织规模的重要性,以及避免过度协调的必要性,并将API视为减少人为协调的有效工具。

阅读更多
未分类

TCP_NODELAY:现代分布式系统必备

2024-05-10

本文探讨了TCP_NODELAY在现代分布式系统中的重要性。作者指出,Nagle算法的初衷是为了解决上世纪80年代网络带宽有限的问题,但对于当今高性能的服务器和数据中心网络来说,Nagle算法带来的延迟弊大于利。作者建议在构建对延迟敏感的分布式系统时,始终启用TCP_NODELAY,并认为这应该是默认设置。

阅读更多
未分类 TCP