0%

0. 前言

2000年前后,随着互联网的飞速发展,单机的存储和计算能力早已达到瓶颈,急需通过增加机器数量来提高整体性能。但是,1+1并不大于2,机器数量的增加带来了许多新的问题:网络延迟、机器宕机、数据不一致等等。正是为了解决这些问题,Google在2003-2006年间先后发表了3篇论文《GFS》、《MapReduce》、《Bigtable》,分别解决了大规模数据的存储(非结构化)、计算、索引(结构化数据/数据库),这三篇也被称为Google三驾马车,鉴定了分布式大数据时代的基础。后来的开源项目Hadoop中,HDFS参考了《GFS》,MapReduce参考了《MapReduce》,HBase参考了《Bigtable》。

GFS首先被提出,它在大规模分散的机器上,实现了类似Linux文件系统的分布式存储系统。单台机器读写数据的性能有限,对于数亿GB的海量,肯定不能存放在单台机器上,而应将数据分割存储到多台机器上。同时,还需考虑机器宕机、磁盘损坏的问题,对同一份数据应做多个备份。如此又会出现许多新问题:如何在多台机器中找到用户想要的数据?如何保证系统在部分机器失效的情况下仍能正常运行?如何保证多个备份数据的一致?如何保证较高的读写性能?这些问题都将GFS中得到解决。

阅读全文 »

0. 前言

如果说比特币是区块链1.0,那以太坊就是区块链2.0。比特币的出现,让大规模、去中心化的电子货币交易成为可能。而以太坊的出现,让任何人都能构建去中心化的合约与应用。根据白皮书的标题,我们也可以清晰地知道:比特币的核心是点对点电子货币,而以太坊的核心是智能合约与去中心化应用。

阅读全文 »

前言

当下,分布式是一大热门,常用场景比如分布式数据库等。在错综复杂的分布式网络环境中,不同节点间的数据(也被称为状态)很可能不一致,原因比如:传输时数据丢失、节点崩溃等等。分布式中所要解决的一大问题,就是节点间如何达成共识,也就是如何保证各节点数据的一致性。最容易想到的方法是,选择一个主节点,其它节点与主节点状态保持一致。但致命的问题在于,主节点崩溃了怎么办?如何选取新的主节点?如何保证新主节点的数据是正确的?这些都需要一个完整的算法机制。

Raft是当下最流行的崩溃容错共识(CFT)/分布式一致性算法之一,被广泛应用于分布式数据库中,比如k8s中的etcd。本文主要是对Raft论文中关键内容的摘取翻译,并附加自己的理解。

Raft论文:Ongaro D, Ousterhout J. In search of an understandable consensus algorithm[C]//2014 {USENIX} Annual Technical Conference ({USENIX}{ATC} 14). 2014: 305-319.

阅读全文 »

论文:Dean J, Ghemawat S. MapReduce: Simplified data processing on large clusters[J]. 2004.

前言

MIT6.824分布式课程第一课的课前阅读要求。

MapReduce是谷歌提出的面向大规模数据的分布式并行计算模式,给大数据并行计算带来了革命性影响,MapReduce也是著名的Hadoop中相当重要的一部分。

阅读全文 »

论文:夏清,窦文生,郭凯文,梁赓,左春,张凤军.区块链共识协议综述.软件学报,2021,32(2):277−299. http://www.jos.org.cn/1000-9825/6150.htm

前言

共识是指:群体中各个独立的参与者,就某件事情达成一致。比如:公司的董事会根据某个决策,进行讨论、投票、最终达成一致的过程,就是一种共识。根据是否存在恶意参与者 ,共识可分为崩溃容错(crash fault tolerant,简称CFT)拜占庭容错(Byzantine fault tolerant,简称BFT) 两大类。崩溃容错是指:在不存在恶意节点的情况下,即使某个节点崩溃,系统也能正常运行并达成共识,它常用于中心化的分布式数据库中。而拜占庭容错,名字来源于著名的拜占庭将军问题,指存在恶意者的情况下,整体还能否达成正确的共识,比如:将军们的军事议会中混进了叛徒,决策是否会被影响。

共识作为区块链的核心技术,一直是区块链的重中之重。毫不夸张地说,比特币成功的关键是它独到的共识机制。而正是比特币的共识机制,使得大规模、分布式、拜占庭容错共识成为了可能。因此,了解区块链相关共识协议是研究区块链不可或缺的一步(当然也为了完成读书报告任务)。

本文主要以解读《区块链共识协议综述》为主,大多内容提炼自原文。论文虽是中文,但愚以为质量可观,感兴趣可阅读原文。

阅读全文 »

1. 引言

自然语言是指人类日常使用的语言,比如:中文、英语、日语等。自然语言灵活多变,是人类社会的重要组成部分,但它却不能被计算机很好地理解。为了实现用自然语言在人与计算机之间进行沟通,自然语言处理诞生了。自然语言处理(Natural Language Processing, NLP)是一个融合了语言学、计算机科学、数学等学科的领域,它不仅研究语言学,更研究如何让计算机处理这些语言。它主要分为两大方向:自然语言理解(Natural language Understanding, NLU)和自然语言生成(Natural language Generation, NLG),前者是听读,后者是说写。

本文将从自然语言处理的历史与发展讲起,进而分析目前深度学习在自然语言处理领域的研究进展,最后讨论自然语言处理的未来发展方向。

阅读全文 »