分布式之Raft
前言
当下,分布式是一大热门,常用场景比如分布式数据库等。在错综复杂的分布式网络环境中,不同节点间的数据(也被称为状态)很可能不一致,原因比如:传输时数据丢失、节点崩溃等等。分布式中所要解决的一大问题,就是节点间如何达成共识,也就是如何保证各节点数据的一致性。最容易想到的方法是,选择一个主节点,其它节点与主节点状态保持一致。但致命的问题在于,主节点崩溃了怎么办?如何选取新的主节点?如何保证新主节点的数据是正确的?这些都需要一个完整的算法机制。
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.
区块链之共识——解读《区块链共识协议综述》
论文:夏清,窦文生,郭凯文,梁赓,左春,张凤军.区块链共识协议综述.软件学报,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),前者是听读,后者是说写。
本文将从自然语言处理的历史与发展讲起,进而分析目前深度学习在自然语言处理领域的研究进展,最后讨论自然语言处理的未来发展方向。
数据结构与算法小汇总
数据结构与算法是计算机人最重要的基础之一,不可不察!因此,特将数据结构与算法知识进行简单总结,详细内容见:
https://github.com/99MyCql/DataStructures-and-Algorithms