下学期大四,我的导师叫我做区块链方向的。我想问问大家这个区块链方向的毕业论文可以写些什么?做逆向软件保护方向的导师又说不合适,希望大佬们给点建议
分布式一致性在一个分布式系统中,如何保证集群中所有节点中的数据完全相同并且能够对某个提案(Proposal)达成一致是分布式系统正常工作的核心问题,而共识算法就是用来保证分布式系统一致性的方法。 然而由于分布式系统存在多个节点,所以系统中会出现各种故障,如:节点失效、网络延时或者宕机。最为常用的两种故障模型是 故障-停止(Fail-stop) 和 随机故障(Byzantine) ,在故障-停止模型中当进程发生故障后只是简单的停止运行。相对的,随机故障又称为拜占庭故障,意指发生故障的进程会像不忠的拜占庭将军一样,产生无法预料的响应结果。故障-停止是随机故障的一种特殊形式,因此,能够容忍随机故障的算法也能够容忍故障-停止。 CAP在 1998 年,加州伯克利大学的教授 Eric Brewer 提出了分布式系统的 CAP 理论,该理论可总结如下:
这里讨论的一致性其实都是__强一致性__,也就是所有节点接收到同样的操作时会按照完全相同的顺序执行,被一个节点提交的更新操作会立刻反映在其他通过异步或部分同步网络连接的节点上,如果想要同时满足一致性和分区容错性以及可用性。在异步的网络中,我们只能__中心化存储所有数据__,通过其他节点将请求路由给中心节点达到这两个目的。 在现实世界中其实并不存在绝对异步的网络环境,如果我们允许每一个节点拥有自己的时钟,这些时钟虽然有着完全不同的时间,但是它们的__更新频率是完全相同的__,所以我们可以通过时钟得知接收到节点消息的间隔时间。时钟的出现能够让我们知道__当前消息有多久没有得到回应,通过超时时间就能在一定程度上解决信息丢失的问题__。 由于网络一定会存在延时,所以没有办法在分布式系统中做到强一致性的同时保证可用性,不过我们可以通过降低对一致性的要求,在一致性和可用性之间做出权衡,所以在目前主流的分布式系统中都选择最终一致性。 最终一致性允许多个节点的状态不一致,但是所有能够沟通的节点都能够在有限的时间同步状态,从不一致的状态恢复到一致,这里列出的两个条件比较重要,一是__节点直接可以正常通信__,二是__状态能够在有限时间内完成同步__,只有在这两个条件成立时才能达到最终一致性。 拜占庭将军问题拜占庭将军问题是 Leslie Lamport 在 The Byzantine General |