【虾说区块链】入门区块链,先学分布式系统!一文说明分布式系统与区块链的关系...
欢迎收听「虾说区块链」。现在区块链这个概念在互联网上相当火热,这里简单做一个普及,不涉及项目推广投资,单纯地对区块链相关基础知识概念作一个说明讲解。本人区块链技术爱好者,结合相关区块链资料总结整理了「虾说区块链」,也是自己一个学习笔记,涉及相关内容如理解有误,也请及时指正。
1
分布式系统概念
**分布式系统(distributed system)是建立在网络之上的软件系统,彼此节点之间通过消息传递进行通信和协调的系统。**随着现在互联网业务的发展,单纯的集中式系统无法满足高并发,海量数据的处理,故出现了分布式系统来集中计算和存储资源,统一对外提供服务。
简单从物理上来看待分布式系统,一群互相独立的计算机,通过内部的通讯机制,形成一个大型的计算存储设备对外提供服务。分布式的意义在于计算机不局限于单一一个物理位置,通过网络进行互联,在逻辑上形成一个统一体,集中这些计算机的计算资源、存储资源。分布式中加入的计算机越多,理论上能够处理的并发就会越大。
2
分布式理念
一直以来,“量变引起质变”的概念被普遍认知,大量个体的涌现,随着成员之间的互相作用,必然会出现新的群体动态特性。当个体形成群集后,一些不可抗拒的特性就会显现。群集是社会发展的趋势。我们在自然界中经常能接触到很多分布式群集的事物。大雁的飞行模式、蚂蚁搬家等。互联网的出现,实现了信息共享、互联网中每个接入的个体形成群体,虽然互联网上现在大部分应用还是通过中心化的架构来提供服务,但是互联网的本质是分布式的概念。在互联网上形成分布式的服务是一种必然的趋势。
传统的应用系统,按部就班,通过顺序控制的理念来构建一个系统。系统有序执行一系列的操作,整个系统结构部署简单严谨,计算和存储资源集中在中心服务器,客户端终端负责数据的输入和输出,所有操作在中心服务器中执行,反馈至客户端。
分布式系统是一种群集的概念,它对外提供的可能是单一的服务,但内部是一个个自治的主体,自治主体之间高度链接,通过共识机制达到一致性。形成一个动态的主体。
分布式的特点:(只是指分布式的特点,而不是分布式系统的特性)
没有强制的集中节点控制。
个体自治。
网络互联。
共识机制。
分布式的优点:
弹性:分布式中节点的加入和撤离灵活,不影响整个动态的主体,在资源紧张或者资源充足时,动态调节。
冗余:节点众多,和传统的集中式相比,在出现故障时,也就类似节点的撤离,不影响整个动态主体。
无限:这个概念有点缥缈,良好的分布式的系统,理论上节点的扩展性不会受到拘束,相反节点越多,对事物的处理会有更多的可能性,形成一种资源的无限扩展,系统的无限可能性。
不可控:分布式众多的节点,形成共识,不是单单控制几个节点就能控制整个动态的主体。(一个两面性的特点)
分布式的不可避免因素:任何事物都有两面性。
浪费:和传统的集中化对比,由于冗余、动态调节,资源的利用率上会有一定程度的浪费。
复杂:个体到群集,每个个体还有自治性,形成一个动态的主体,必然会增加其复杂度。
不可控和不可预知:对比优点中的不可控,这个是一种两面性的特点,在分布式中出现故障,由于整体运行良好,故障不易发现,整个系统是一个动态的主体,随着量级的增加,必然会出现一些不可预知的现象。
3
分布式系统特点
分布式系统中各个节点之间通过网络来协调和通信,在计算机网络中节点不受物理空间的影响。在逻辑上形成一个整体。
分布式系统特点:
计算机设备在空间上随意分布,没有主-备-从的概念,节点间平等。
资源共享,分布式系统中整个资源(计算资源、存储资源)共享。
和传统的大型主机对比,分布式可用性价比更好的计算机设备。
在分布式系统到一定的量级,在处理能力上优于传统中心主机。
系统冗余性,保证系统的可靠性。
计算能力的扩展,在分布式中可根据需求加入新节点提高整体性能。
分布式系统的缺点:
上述分布式系统的特点都应该从两方面来看待。
节点众多和资源的共享,考虑信息的隐私性。
设备节点众多,考虑通信的可靠机制。
分布式处理能力的提高和系统冗余性的特点,也可能造成一定的浪费。
计算能力的扩展,众多节点的加入,不排除恶意节点的入侵。
4
分布式系统的时间问题
分布式系统中的时间问题,如果简单去想,那么通过NTP时间同步,所有节点都通过去同步时间,然后根据进程发起的物理时间来排序,先不论时间同步中同步过程中的细微毫秒级差异,多个业务发起进程,在各个进程之间有关联关系,进程随着系统计算能力有差异,并且还有检查点的判断,一旦在顺序进程中出现了前物理时间某进程改变了检查点,那么在认为是同步处理的时候就会出现检查点状态改变导致业务逻辑的改变,这种情况理解下就是你在购物网站抢购的时候,货物剩余量在你发起交易的时候还有,但是确认过程由于网络和计算的延时,发现分布式系统中一边是交易已正常请求,但是实际货物记录中已下架。引入logical clock能较好的处理这种系统记录逻辑混乱的现象。
Logical clock称为lamport timestamps,这种概念里,先把分布式系统节点间交互分成三种类型:
分布式单个节点自己内部传递的事件。
分布式节点互相之间传递的事件。
分布式节点接收除自己之外的传递进来的事件。
同时再加一个逻辑时间顺序概念。
**顺序叠加原则:**这里整个系统顺序逻辑时间时间为T(),各个节点顺序为X()
初始发起节点为0.
节点内传递,X+1
节点间传递,T+1
节点接收除自己之外的传递(T and X)+1
那么如果再定义一个节点事件顺序,对节点A.B.C排序。假定发生顺序A<B<C,在上图中,事件发生顺序为:
C-1(T=1) B-1(T=2) B2(T=3) A1(T=4) A2(T=5) B4(T=6) B5(T=7) C4(T=8) C5(T=9) A4(T=10)
B-3(T=4) C-2(T=5) C-3(T=6) A-3(T=7)
问题来了T(4.5.6.7)发生了重复,那么就用之前说的A<B<C原则
以B-4和C-3作比较:A<B<C,那么B-4就理解为发生在C-3之前。推导B-4-->C-3。B-4发生在C-3之前。这个前提是我们已知三个节点进程发生的关系顺序,在实际情况下这个也有可能是很难进行判断的。所以对于并发情况没有很好的一致性判断。
上述图中节点A.B.C也可理解为各个进程的顺序,在整个logiccal clock中有这么一个概念要明确,进程间没有因果关系,那就认为是并发,没有因果关系对于系统来说对事件的顺序前后就没有那么强烈的需求,前提是要确定确实没有因果关系,那么分布式系统中就认为是正确的。所以归纳下,分布式系统中没有因果顺序的并发时间就不关注先后顺序。
介绍到这里,会提出一个疑问,上面也提到了,那么系统中并发怎么处理,之前通过进程顺序来排序,但是这种不是真正好的为并发处理时间顺序,在这个问题上先提出Vector clock,这是在之前lamport时间戳的一种改进逻辑时钟。
在vector clock中对每一个事件上加上前一事件的序号,那么可以看到每个事件记录是一组向量。比如:(A-2 B-4 C-1),(A-2 B-5 C-4)。
在这种方式中,还要引入分布式系统中读写的概念,不单单是事件的传递,设定N为节点数量,R为成功读的节点,W为成功写的节点。
当W+R>N,那么就可以保证一致。
说明流程:(w为写入进程,a,b,c,d为节点)
客户端写入数据,提交到服务端。
服务端创建一个顺序编号,例:(w-a-1)
客户端再请求写入数据,生成编号:(w-a-2)
多次请求生成,(w-a-2)(w-b-1),(w-a-2)(w-b-1),(w-a-2)(w-d-1)
多次请求后,再次读到(w-a-2),那么认为(w-b-1)(w-c-1)(w-d-1)存在冲突,最终通过一致性解决方案生成(w-a-3)(w-b-1)(w-b-1)(w-d-1)写入。
Vector clock用来发现数据的冲突,并配合其他的方式来解决冲突,现在常用的会用最后更新原则来做处理,保持一致性。
这里大致介绍了两种分布式系统的时间顺序处理,分布式系统因为其特殊性,需要各种机制来保证一致性和高效率执行。
音频内容作者:“投河自尽的鱼”
以下是我们的社区介绍,欢迎各种合作、交流、学习:)
点击“阅读原文”进入直播室听专栏音频。
【虾说区块链】入门区块链,先学分布式系统!一文说明分布式系统与区块链的关系...相关推荐
- 区块链入门与去中心化应用实战 之一 第3章 区块链技术核心原理实现
第3章 区块链技术核心原理实现 建立项目,确定区块结构 实现区块类结构-添加交易 实现创建区块 实现工作量证明 添加节点通信功能 交易接口实现 挖矿接口实现 实现注册节点 实现共识机制
- 区块链入门与去中心化应用实战 之一 第2章 区块链技术的核心概念和原理
区块链的过去与未来 密码朋克( Cypherpunk ) 维基解密的创始人阿桑奇 BT下载的作者的布莱姆-科恩 WWW的发明者蒂姆伯纳斯-李 区块链前世今生 戴伟发明了B-money,强调点对点交易和 ...
- Python之区块链入门,揭秘比特币
本文将简单介绍区块链(BlockChain)并用Python做一简单实现. 什么是区块链 简单来说,区块链就是把加密数据(区块)按照时间顺序进行叠加(链)生成的永久.不可逆向修改的记录.具体来说,它区 ...
- BlockChain: 区块链入门课程 -- 区块链适用于移动性 分享和收费案例
BlockChain: 区块链入门课程 -- 区块链适用于移动性 分享和收费案例 分享和收费 在第四周和上周,我们将通过位于德国的充电站网络Share&Charge案例了解区块链技术在能源领域 ...
- BlockChain:区块链入门课程 -- 区块链应用于能源 POWER LEDGER案例
BlockChain:区块链入门课程-- 区块链应用于能源 POWER LEDGER案例 Power Ledger:如何启用区块链 概述能源部门的现状,将区块链作为关键推动因素之一. 3.1 欢迎来到 ...
- 01-区块链入门之 区块链介绍一-大叔思维
1.区块链技术是什么? 总的来说,区块链是一套协议,一组规范,而不是具体代码.项目. 理解了这套协议,你可以基于现有的技术,以不同的语言去实现它.我们也无法用一句简单的话去概况什么是区块链,站的角度不 ...
- 干货!区块链入门、进阶、行业专家观点!1000篇好文帮你破解区块链密码!(中篇)...
随着区块链概念理论的不断成熟以及强劲技术的不断深耕,区块链已经成为投资圈中备受关注的热点,从区块链1.0时代落地数字货币比特币.莱特币等,打开了区块链通向新弯道的高速路口,到区块链2.0时代开始通过智 ...
- 区块链需要学习哪些东西_区块链入门需要学哪些知识?
区块链入门需要学哪些知识? 区块链技术近年来发展迅速,全球范围内都掀起了区块链的热潮. 那么区块链入门需要学哪些知识? 首先学习区块链需要知道区块链与编程语言之间的关系 1.区块链是一种编程思想,使用 ...
- 区块链入门系列之梅克尔帕特里夏树
区块链入门系列文章 区块链基本概念和名词解释 P2P 共识算法 梅克尔-帕特里夏树 从零开始搭建区块链 这里写自定义目录标题 区块链入门系列文章 前言 Merkle树 MPT 总结 前言 在讲基本概念 ...
最新文章
- 使用nmonchart把.nmon文件转换成html
- Ibatis.net 属性字段中使用 IN 查询条件
- 真香!微软将为Edge浏览器带来超好用的全新侧边搜索功能:无需跳转网页
- MPLS服务合同到期了,是否该续签?
- Mysql学习总结(58)——深入理解Mysql的四种隔离级别
- 【实战】Vue 中 Props 值因异步获取导致的报错问题解析
- 一个PHP多个界面跳转,php中的多种界面跳转方式
- 轮子|Python2异常链
- WPF Ribbon 开发资料分享
- LabVIEW数字抽奖程序
- 多目标跟踪综述-Multiple Object Tracking: A Literature Review
- 在国外开通了漫游 显示无服务器,中国移动也开通国际漫游为什么在国外无服务?...
- ftps软件android,透视相机软件ftp
- UML统一建模实用教程 第六章 包图
- Android Audio 音频输出设备切换
- 制作esp32-cam拍照上传,微信小程序照片显示的监控小车
- 20222948 2022-2023-2 《网络攻防实践》第4周作业
- 基于Python实现的二手车价格预测
- 网站白名单可行性分析
- ChatBot闲聊---腾讯自然语言处理 NLP