跳转至

区块链

高频 R/W 场景下的性能设计方案

对于这个问题我们需要回归到计算机读写的核心上,计算机的读写速度是有限的,所以需要把数据缓存起来,来提高读写速度。为什么要使用缓存呢?从硬件角度我们知道计算机是有多级缓存架构的,每一级存储设备的读写速度是指数级下降的,越靠近终端存储设备(机械硬盘、固态硬盘)其读写速度越慢,越靠近 CPU 的存储设备其读写速度越快。

缓存是一个有着更快的查询速度的存储技术,这里的更快是指比起从初始的数据源查询(比如数据库,以下都称作数据库)而言。我们经常会把频繁请求的或是耗时计算的数据缓存起来,在程序收到请求这些数据的时候可以直接从缓存中查询数据返回给客户端来提高系统的吞吐量,现在我们来看看有哪些缓存模式可以考虑。

比特币的创新设计

比特币在创新上提出了很多亮点,值得我们去学习。主要考虑了避免作恶、负反馈调节和共识机制三个方面。

避免作恶

避免作恶基于经济博弈原理。在一个开放的网络中,无法通过技术手段来保证每个人都是合作的。但是可以通过经济博弈来让合作者受益,让非合作者遭受损失和风险。

分布式系统的核心问题

分布式系统是计算机科学中十分重要的一个研究领域。随着现代计算机集群规模的不断增长,所处理的数据量越来越大,同时对于性能、可靠性的要求越来越高,分布式系统相关技术已经变得越来越重要,起到的作用也越来越关键。

分布式系统中如何保证共识是个经典的技术问题,无论在学术上还是工程上都存在很高的研究价值。令人遗憾地是,理想的(各项指标均最优)解决方案并不存在。在现实各种约束条件下,往往需要通过牺牲掉某些需求,来设计出满足特定场景的协议。

实际上,工程领域中不少问题都不存在一劳永逸的通用解法;而实用的解决思路是,合理地在实际需求和条件限制之间进行灵活的取舍。


更新于 2025-03-18 15:26

PBFT(Practical Byzantine Fault Tolerance)共识算法

PBFT是 Practical Byzantine Fault Tolerance 的缩写,意为实用拜占庭容错算法。该算法是 Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在 1999 年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。该论文发表在1999年的操作系统设计与实现国际会议上(OSDI99)。没错,这个 Loskov 就是提出著名的里氏替换原则(LSP)的人,2008年图灵奖得主。

拜占庭问题解析

拜占庭问题(Byzantine Generals Problem)是分布式系统领域的一个经典问题,旨在解决 在存在不可靠或恶意节点 的情况下,如何让分布式系统中的各个参与者(节点)就某一决策达成一致行动。以下是系统性解析:

一、问题起源与核心场景

  1. 军事隐喻

    莱斯利·兰伯特(Leslie Lamport)在1982年提出该问题时,以拜占庭帝国(东罗马帝国)的将军围攻敌城为背景:

    • 目标:所有忠诚将军需在同一时间发起总攻或撤退。
    • 挑战:部分将军可能是叛徒,会向不同阵营发送矛盾指令(如“进攻”或“撤退”)。
    • 关键约束
      • 每个将军只能通过信使传递口头命令。
      • 信使可能被叛徒截获或篡改。
      • 最终所有忠诚将军必须采取相同行动,否则战斗失败。