分布式共识一致性教程

     

19种分布式系统设计模式 - Nishant

2094 2 6K
涉及与分布式系统相关的常见设计问题的关键模式:1. 布隆过滤器布隆过滤器是一种节省空间的概率数据结构,用于测试元素是否是集合的成员。它用于我们只需要知道元素是否属于它应该所在的地方(缓存)。在BigT.

缓存高一致性:Meta的缓存失效解决方案

1851 1

缓存有助于减少延迟、扩展读取繁重的工作负载并节省成本。它们实际上无处不在。缓存在您的手机和浏览器中运行。例如,CDN 和 DNS 本质上是地理复制缓存。多亏了许多在幕后工作的缓存,您现在可以阅读这篇博.

waraft: Erlang的Raft实现

825

WARaft是WhatsApp使用Erlang编写的一个Raft库。它提供了一个Erlang实现,在复制的状态机之间获得共识。共识是容错分布式系统的一个基本问题。WARaft已被用作WhatsApp消.

从架构师思维看分布式事务两种技术方案 - banq

1811 1
程序员从无到有构建代码,应该注重组合思维,做出来的东西需要能够相互组合在一起;而架构师是从上而下的视角,因为不参与具体细节构建,但为了落地,应该具有多维度多维度视角,从程序员到架构师思维转变很重要。下.

分布式数据库的复制原理 - Quastor

965 3K

如果您对后端工程感兴趣,那么设计数据密集型应用程序 (DDIA) 是必读的。数据工程世界充满了流行语和炒作,但Martin Kleppman在分解所有核心技术方面做得非常出色。这是 DDIA 关于复制.

比UUID更快:如何生成分布式唯一时间戳标识符 - vanillajava

1801 1 3K

本文介绍了一个直接支持分布式标识符生成的实现。1. 分布式系统中的并发标识符生成每个主机都有一个预定义的唯一主机标识符或hostId 。TimeProvider[url=https://github..

tikv/raft-rs:在 Rust 中实现的 Raft 分布式共识算法源码

1573 1

在构建分布式系统时,一个主要目标通常是构建容错。也就是说,如果网络中的一个特定节点出现故障,或者存在网络分区,则整个集群不会发生故障。参与分布式共识协议的节点集群必须就价值达成一致,一旦达成该决定,该.

bastion-rs/bastion:类似Akka的高可用分布式容错Rust运行时

1204 1

Bastion 是一个高可用、容错的运行时系统,具有动态的、面向调度的、轻量级的进程模型。它通过轻量级进程实现提供类似参与者模型的并发性,并有效地利用所有系统资源来保证最多一次的消息传递。特点: 基于.

ChiselStore:Rust编写的Raft分布式SQLite数据库

2000

ChiselStore 是一个可嵌入的分布式Rust SQLite,SQLite 是一个快速而紧凑的关系数据库管理系统,但它仅限于单节点配置。ChiselStore 扩展 SQLite 在具有Raft.

什么是加密货币DAO?

1661
加密货币DAO是去中心化自治组织(Decentralized Autonomous Organization简写),也称为去中心化自治公司,这类似一种有限责任公司,只不过无需CEO,是由程序代码自动执.

shosti/wraft: 使用Rust和WebRTC在浏览器中实现分布式Raft

2358 1 3K
是一个基于 WebRTC 的 Raft 实现,用 Rust 编写,用于 WebAssembly。这里有几个演示应用程序,代码在 GitHub 上是开源的。这是一个有趣且具有挑战性的项目,所以我想我会写.

Peritext:用于富文本协作的新型CRDT

1643 6K

Google Docs 等协作编辑器允许人们实时处理富文本文档,当用户希望立即查看彼此的更改时,这很方便。然而,有时人们更喜欢更异步的协作方式,在这种方式下,他们可以暂时处理文档的私人副本,然后再分享.

配置Apache Kafka生产者参数以获得高可用性和弹性 - Nabraj

1114 4K
Apache kafka以其弹性、容错性和高吞吐量而闻名。但它的表现并不总是满足所有人的期望。在某些情况下,我们可以通过缩小或扩大代理规模来改进它。而在大多数情况下,我们必须玩配置游戏。在卡夫卡的生态.

分布式共识灵活Paxos英文参考资料目录

701 8K

灵活Paxos是比Paxos更宽松灵活的算法,它是一个简单的观察,不需要要求 Paxos 中的所有群体都参与,要求领导选举阶段(阶段 1)使用的仲裁与之前复制阶段(阶段 2)使用的仲裁能重叠就足够了。.

建模重要性:使用建模工具发现Paxos实现中的一个错误 - brooker

796

在过去的几周里,我一直在学习优秀的P 编程语言,一种用于建模和指定分布式系统的语言。我在 P 中做的第一件事就是实现 Paxos——一种我很熟悉的算法,有很多微妙的失败模式,而且很容易出错。为了测试 .

分布式共识协议Paxos本质是一次写入寄存器? - maheshba

1194 1 4K

在系统中,我们通过抽象来处理复杂性。对于任何系统,都存在三个关键问题: 它实现了什么抽象? 这种抽象的设计空间是什么? 为什么这个抽象有用? 在这篇文章中,我们将回答 Paxos 的前两个问题。本文档.

NFT可能创建了元宇宙的谢林点?

1194

谢林点是指基于理性前提下,人们没有事先沟通,而能达成的一种默契,注意,这是基于理性前提,不是基于心理暗示,大家都如果因为数字8吉祥而选择8,这属于基于心理暗示,理性前提是基于理智判断情况下,我知道你是.

如何在微服务分布式架构中删除数据? - bennorthrop

2050 1 3K

尽管微服务具有各种好处,但似乎也有许多新的复杂性和并发症。我最近经常遇到的一种情况(并没有找到很多很好的资源)是删除数据。考虑一个简单的例子:有三种服务:Product 服务,管理与所提供的产品,Or.

优步是如何使用Apache Flink和Kafka实现实时Exactly-Once广告事件处理?

1294 3K

优步最近推出了一项新功能:UberEats 上的广告。这种新能力带来了 Uber 需要解决的新挑战,例如广告拍卖、竞标、归因、报告等系统。本文重点介绍我们如何利用开源技术构建 Uber 的第一个“近实.

比较服务间通信的技术 - ardalis

1488 1 5K

在分布式软件应用程序中,不同的服务或进程或应用程序经常需要相互通信。微服务和容器以及云原生应用程序的现代架构趋势都增加了应用程序将越来越多地部署为相关服务的集合而不是单个单体的可能性。这些应用程序可以.

跨微服务的 ACID 事务

974

大规模分布式系统上的分布式事务被认为本质上是邪恶的,需要按照CAP 定理,为了避免走弯路,请参考:分布式事务可能是个伪概念以及Shopify如何使用Saga等模式实现电子商务:Shopify如何使用R.

如何在多区域运行Zookeeper?- Ankur

1315 5K

Zookeeper将自己定义为“用于维护配置信息的集中式服务”等。为了对数据建模,它使用具有路径作为标识符并保存值的znode。在 Flipkart,我们使用 zookeeper 作为为多个应用程序提.

Uber如何重新架构其作业平台?

1133 1 7K

优步的使命是帮助我们的消费者在全球数千个城市轻松前往任何地方并获得任何东西。在其核心,我们捕捉消费者的意图并通过将其与一组正确的提供者进行匹配来实现它。 作业履行(Fulfillment )是“向客户.

Facebook开源分布式系统的NTP时间校准器

875

这是一种可以将任何PC服务器变成时间设备的 PCIe 卡,Facebook 工程师已经构建并开源了一个 Open Compute Time Appliance,这是现代计时基础设施的重要组成部分。Fa.

Redis Cluster:为高性能付出了不安全的代价 - emil

902 6K

本文旨在解释为什么 Redis 不适合用作 NoSQL 数据库,其中持久化数据的持久性和一致性是必不可少的。很难想到比 Redis 更广为人知的数据存储。在 Stack Overflow 上,它连续三.

分布式一致性CRDTs的几个框架库推荐 - josephg

2037

CRDT (无冲突复制数据类型)是一种花哨的编程工具,可以让多个用户同时编辑相同的数据。它们让您可以毫无延迟地在本地工作。(您甚至不必在线)。当您与其他用户和设备同步时,一切都会神奇地同步并最终保持一.

Redis用于分布式缓存全局硬刷新的心得

1066 2K

我们依赖缓存,因为应用程序需要大量读取。但是会有修改写发生,如果您在世界各地运行缓存,它们最终可能会偏离其真实数据来源。糟糕的缓存数据真的会激怒人们。它可以完全破坏应用程序,这就是为什么需要一个“硬刷.

分布式系统中几种“一致性”概念的简单解释 - pathelland

1370 1

一致性一词似乎至少有三种流行用法 : 数据库一致性。 这是完整交易与一些未声明的未声明规则的执行的混合。因为事务内的更新集必须由与数据库上层部分勾结的应用程序限定,所以应用程序和上层数据库可以强制执行.

变更数据捕获CDC的八个实际案例 - Dunith

1757 1 4K

如何应用变更数据捕获CDC将数据从生产数据库可靠地迁移到其他系统?OLTP 数据库中积累的操作数据通常需要取出来执行事务处理以外的有用任务。这包括将数据移出数据仓库、更新缓存、仪表板等。更改数据捕获 .

KMQ:基于Apache Kafka的可靠性消息队列

1981
当从Apache Kafka接收消息时,只能确认所有消息的处理达到给定的偏移量。由于这种机制,如果出现任何问题并且我们的处理组件出现故障,重新启动后它将从最后提交的偏移量开始处理。但是,在某些情况下,.