• 只有几个模式让我觉得很舒服:“如果你想构建成熟的系统,你应该一直使用它”。其中之一是发件箱模式。为什么?因为它保证了你的业务流程和沟通不会卡在中间。正如我在发件箱中解释的,收件箱模式和交付保证解释了:发件箱模式确保消息至少成功发送(例如发送到队列)一次。使用这种模式,我们不是
  • 水平扩展是在不影响数据完整性、事务安全性和查询性能的情况下跨多个服务器分布数据的艺术和科学。 只读副本只读副本通常指的是“备用”服务器,它冗余地复制主服务器上的所有数据,持续与主服务器保持同步,并允许客户端 icon
  • 在 Cloudflare,我们采取措施确保我们在基础设施的各个层面都能抵御故障。这包括 Kafka,我们将其用于关键工作流程,例如发送对时间敏感的电子邮件和警报。 我们学到了很多关于保持利用 Kafka 的应用程序健康的知识,因此它们可以始终运行。 icon
  • 虽然状态机复制是实现任何理想功能的黄金标准,但它需要对所有交易 (事件)进行完全的总排序(全序),在某些情况下,这种开销是不必要的。 事实证明,在许多自然用例中,特别是规范的简单代币支付用例,不需要全序:作为一个具体的例子,假设 Alice 正在将 icon
  • 您经常会听到 CAP 定理,它规定了设计分布式系统时的某种上限。 icon
  • TypeIDs是UUIDv7的一个现代的、类型安全的扩展。 TypeIDs被规范地编码为小写的字符串,由三部分组成: 一个类型前缀 一个下划线'_'分隔符 一个128位UUIDv7编码为base32的26个字符的字符 icon
  • 在分布式系统领域,确保跨多个节点的数据的一致性和协调性至关重要。etcd 由 CoreOS 团队开发,受到 Raft 共识算法的启发,是一个开源的分布式键值存储,为应用程序提供可靠的分布式协调。它广泛应用于云原生环境,在 Kubernetes 等容器编排系统中发挥着基础性作用。在这篇博文中, icon
  • Kafka的关键配置min.insync.replicas :用户消息生产的客户端配置,表示消息生产者认为写入成功之前确认收到记录的代理数量。 - acks==0 — 发送请求时认为写入成功 - 无需等待响应。 - ​​​​​​​acks==1 — 当领导者收到记录并 icon
  • 分布式系统中的一致性模型: 在分布式数据系统的三个属性(一致性、可用性和分区容错性)中选择两个。- Eric Brewer,CAP 定理 分布式系统具有可扩展性和容错性等优点。然而,维持分布 icon
  • Apache Kafka 不需要 fsyncs 来确保安全,因为它在其复制协议中包含恢复。它是一个真实世界的分布式系统,使用异步日志写入 + 恢复,并内置一些额外的额外安全性。异步日志写入使其能够在各种硬件和各种工作负载上提供强大的性能。 icon
  • Kafka在其 Kafka Raft Metadata 模式中使用 Raft 共识算法进行领导者选举,从而消除了对 ZooKeeper 管理集群元数据的依赖。Raft算法是一种共识协议,旨在确保分布式系统中状态机的容错复制。 在 Kafka 对 R icon
  • 系统事件可以根据它们发生的时间来排列。时钟计时并产生时间戳。传统时钟(例如时钟)使用通用参考来了解时间。该参考可以是内部硬件或使用 NTP 等协议提供时间的公共服务。然而,由于时钟漂移和/或网络时间延迟的假设,传统时钟的时间戳并不总是相互比较,因此无法使用传统时钟的时间戳可靠地排序事件。</ icon
  • 来自Marc's Blog的文章:不变性是推理算法、数据结构和分布式系统的强大工具。对于您设计或实现的任何复杂系统或算法,都值得考虑一组不变性。以这样的方式构建您的实 icon
  • 阿里巴巴组的这篇论文讨论了如何在PolarDB数据库部署中从从节点执行低延迟强一致性读取。发表在VLDB'23 上。 < icon
  • 这些建议提示都是分布式系统研究人员和从业人员几十年来的集体成果。 提示分为三类:功能、性能和容错:功能: 应用抽象 减少协调 拥抱单调性 表现: 偏爱偏序而不是全序 杠杆时间 icon
  • 在 RevenueCat,我们每天处理超过 12 亿个请求。只有在以下情况下您才能有效地做到这一点: 您可以在许多 Web 服务器之间分配负载。 您可以使用缓存来加速对热数据的访问并保护后端系统和数据存储的容量。 icon
  • 在分布式系统中,快速编码和测试对于理解Paxos等复杂概念至关重要。这个小框架来快速编写和测试各种复制机制。 可以快速实现复制算法并编写 JUnit 测试。它还提供了引入进程崩溃、网络断开、网络延迟和时钟偏差等故障的基本方法。 icon