当前位置: 首页 > news >正文

分布式算法精髓

574f662ad4b9edc299dcffae7b0ac6e7.gif

随着比特币和区块链在社会上的影响力越来越广泛,分布式系统和分布式算法引起很多人的关注。区块链本质上是一个分布式网络,区块链共识算法是分布式算法中一个特殊的类。掌握必要的分布式算法对理解目前广泛使用的互联网/物联网的诸多处理算法非常有帮助。

什么是分布式算法?在过去的几十年里,我们在分布式系统和网络领域经历了前所未有的增长。目前分布式计算涵盖了当今计算机和通信领域中发生的许多活动。事实上,分布式计算具有相当多样化的应用领域。互联网是分布式系统,无线通信、云计算或并行计算、多核系统、移动网络也是如此。此外,蚁群、大脑甚至人类社会都可以被建模为分布式系统。

这些应用的共同点是,系统中的许多处理器或实体(通常称为节点)在任何时刻都是活跃的。节点有一定的自由度:有自己的硬件和软件。然而,这些节点可以共享共同的资源和信息,为了解决涉及几个甚至所有节点的问题,协调是必要的。

尽管有这些共性,但人脑与多核处理器当然有很大的不同。由于这种差异,人们在分布式计算领域研究了许多不同的模型和参数。在一些系统中,节点是同步运行的,在另一些系统中,节点是异步运行的。有简单的同构系统,也有异构系统,异构系统中包含不同类型的节点,它们可能具有不同的能力、目标等,需要进行交互。有不同的通信技术:节点可以通过交换消息进行通信,也可以通过共享内存进行通信。偶尔通信基础设施是为某一应用量身定做的,有时人们不得不使用给定的基础设施。分布式系统中的节点经常共同解决一个全局性的任务,偶尔节点是自主的代理,有自己的议程,并竞争共同的资源。

有时可以认为节点工作正常,有时节点可能发生故障。与单节点系统相比,分布式系统在发生故障的情况下仍可能正常工作,因为其他节点可以接管故障节点的工作。故障有不同的种类:节点可能只是崩溃,也可能表现出一种任意的、错误的行为,甚至可能达到无法与恶意(也就是拜占庭)行为区分的程度。也有可能节点确实遵循了规则,然而它们调整参数以获得系统的最大收益,换句话说,节点的行为是自私的。

显然,可以研究的模型有很多(甚至还有更多的模型组合)。我们现在不对它们进行详细讨论,只是在使用它们时进行定义。学完《分布式算法精髓》这本书,读者应该知道最重要的概念,并且应该有一个大致的印象。

bf795a84977a07746721a73986834c3e.png30b39de06cf4730a4d444c9895456e60.png

扫码查看 ↑

内容概览

本书介绍分布式计算的基本原理,突出常见的主题和技术。特别是,我们研究了分布式系统设计的一些基本问题:

●通信:通信不是免费的,通信成本往往决定了本地处理或存储的成本。有时我们甚至认为除了通信之外的一切都免费。

●协调:如何协调一个分布式系统,让它有效地执行一些任务?有多少开销是不可避免的?

●容错性:分布式系统的一个主要优点是即使在出现故障的情况下系统作为一个整体也能生存下来。

●本地性:网络在不断发展。幸运的是,完成一个任务并不总是需要全局信息,通常情况下,如果节点能与邻居通信就足够了。本地性解决方案是否可行,是本书的核心话题之一。

●并行性:如果提高计算能力,比如增加可以分担工作量的节点数量,那么完成一个任务的速度有多快?对于一个给定的问题,并行性有多大可能?

●打破对称性:有时需要选择一些节点来协调计算或通信。这是由一种叫作打破对称性的技术来实现的。

●同步:如何在异步环境中实现同步算法?

●不确定性:如果用一个词来恰当地描述本书,那大概就是“不确定性”。由于整个系统是分布式的,一个节点不可能知道其他节点在这个确切的时刻在做什么,尽管缺乏全局知识,但还是需要节点完成手头的任务。

最后,还有一些领域我们不会在本书中涉及,主要是因为这些主题非常重要,有单独的书来讲述它们。这类主题的例子是分布式编程或安全/密码学。

综上所述,在本书中,我们探讨基本的算法思想和下界技术,这两方面可以说是分布式计算和网络算法的“珠玑”。

作者简介

罗杰·沃滕霍弗(Roger Wattenhofer)  博士,苏黎世联邦理工学院信息技术和电气工程系教授。之前曾任职于微软研究院、布朗大学和麦考瑞大学。他的研究兴趣是算法和系统,涉及分布式系统、定位系统、容错分布式系统、高效网络算法和比特币等。他已发表学术论文300多篇,曾获得包括“分布式计算创新奖”在内的众多奖项。除本书外,他还著有Blockchain Science: Distributed Ledger Technology(2017)一书。

目录

上拉下滑查看 ↓

译者序

前言

第1章 顶点着色1

 1.1 问题和模型1

 1.2 着色树3

 1.3 本章注释8

 1.4 参考文献9

第2章 树算法13

 2.1 广播13

 2.2 融合广播15

 2.3 广度优先搜索树的构建15

 2.4 最小生成树的构建17

 2.5 本章注释20

 2.6 参考文献20

第3章 领导人选举23

 3.1 匿名领导人选举23

 3.2 异步环24

 3.3 下界27

 3.4 同步环29

 3.5 本章注释30

 3.6 参考文献31

第4章 分布式排序33

 4.1 数组和网格33

 4.2 排序网络36

 4.3 计数网络40

 4.4 本章注释44

 4.5 参考文献45

第5章 共享内存47

 5.1 模型47

 5.2 互斥48

 5.3 存储和收集51

 5.4 分离器53

 5.5 二叉分离树54

 5.6 分离器矩阵56

 5.7 本章注释57

 5.8 参考文献57

第6章 共享对象59

 6.1 集中式解决方案59

 6.2 Arrow算法60

 6.3 Ivy算法65

 6.4 本章注释69

 6.5 参考文献69

第7章 极大独立集73

 7.1 MIS73

 7.2 原始的快速MIS75

 7.3 快速MIS v278

 7.4 应用83

 7.5 本章注释84

 7.6 参考文献85

第8章 本地下界87

 8.1 模型87

 8.2 本地性87

 8.3 邻域图90

 8.4 本章注释94

 8.5 参考文献95

第9章 全局问题97

 9.1 直径和APSP97

 9.2 下界图100

 9.3 通信复杂度102

 9.4 分布式复杂度理论108

 9.5 本章注释109

 9.6 参考文献110

第10章 同步113

 10.1 基础知识113

 10.2 本地同步器α114

 10.3 全局同步器β115

 10.4 混合同步器γ116

 10.5 网络分区118

 10.6 时钟同步120

 10.7 本章注释123

 10.8 参考文献124

第11章 稳定性127

 11.1 自稳定性127

 11.2 高级稳定化132

 11.3 本章注释135

 11.4 参考文献136

第12章 社交网络137

 12.1 小世界网络137

 12.2 传播研究145

 12.3 本章注释146

 12.4 参考文献146

第13章 无线协议149

 13.1 基础知识149

 13.2 非统一的初始化150

 13.3 使用碰撞检测的统一初始化151

 13.4 无碰撞检测的统一初始化153

 13.5 领导人选举154

 13.6 使用碰撞检测的快速领导人选举155

 13.7 下界159

 13.8 统一异步唤醒160

 13.9 有用的公式161

 13.10 本章注释162

 13.11 参考文献162

第14章 标记方案165

 14.1 邻接关系165

 14.2 有根树167

 14.3 道路网络169

 14.4 本章注释171

 14.5 参考文献172

第15章 练习175

66dffcb0d74452ac72dfcdb862b2d83d.gif

d299f0aa52d15f4222261dffc5aba967.png

扫码关注【华章计算机】视频号

每天来听华章哥讲书

c39a08415367192a2d9966fbd00b9d48.gif

更多精彩回顾

资讯 |《Java核心技术》基于Java 17全面升级!

干货 |再见了Java8,Java17:我要取代你

资讯 | Java核心技术大会2022 · 重磅发布

书单 |今天,Java27岁了!

新书 | 红蓝攻防:构建实战化网络安全防御体系

书讯 |6月书讯(上)| 浅夏读新书,与世间万物一起成长

书讯 |6月书讯(下)| 人机物三元融合,开启新世界大门

每周赠书 | 【第108期】技术大牛都在看的10本书,找到了

bf2df4ef5ac58a064096300fcd3017ac.gif

075d51f2aba6981f1d7ef3f3356fc621.gif

点击阅读全文购买

相关文章:

  • 详解大数据、数据存储和边缘计算技术在元宇宙中的应用
  • 【Java核心技术大会 PPT分享】李三红:面向云原生现代化Java实践与演进
  • 【Java核心技术大会 PPT分享】李智慧:Java异步编程框架实践与性能优化
  • 7月书讯 | 12本新书如期而至!
  • 【第109期】4种 Redis 集群方案介绍+优缺点对比
  • 【Java核心技术大会 PPT分享】余洲:基于Smart Connect的跨地域数据复制
  • 这几年爆火的智能物联网(AIoT),到底前景如何?
  • 【Java核心技术大会 PPT分享】张家驹:云原生时代的Java — Quarkus及其最新进展...
  • 云计算发展的 4 个阶段,终于有人讲明白了
  • 【Java核心技术大会 PPT分享】陈阳:深入理解 Java 虚拟机编译原理
  • 学习 CSAPP 对工作有帮助吗?一切从底层逻辑开始!
  • 【Java核心技术大会 PPT分享】林子熠:GraalVM的静态编译和静态分析技术
  • 2022大数据十大关键词,重磅发布!
  • 第110期:成为架构师的路上,必看的经典好书
  • 用户运营方法论:解析不同时期的拉新策略
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【5+】跨webview多页面 触发事件(二)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • angular组件开发
  • chrome扩展demo1-小时钟
  • GitUp, 你不可错过的秀外慧中的git工具
  • Golang-长连接-状态推送
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Mocha测试初探
  • Python利用正则抓取网页内容保存到本地
  • Python学习之路16-使用API
  • 观察者模式实现非直接耦合
  • 机器学习 vs. 深度学习
  • 坑!为什么View.startAnimation不起作用?
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 1.Ext JS 建立web开发工程
  • elasticsearch-head插件安装
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​【已解决】npm install​卡主不动的情况
  • #Linux(Source Insight安装及工程建立)
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (SpringBoot)第二章:Spring创建和使用
  • (九)信息融合方式简介
  • (蓝桥杯每日一题)love
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • ./configure,make,make install的作用
  • .aanva
  • .cfg\.dat\.mak(持续补充)
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net web项目 调用webService
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET4.0并行计算技术基础(1)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • :如何用SQL脚本保存存储过程返回的结果集
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @ModelAttribute使用详解