区块链不等于比特币,比特币也不等于区块链;有将它奉为圭臬,也有人将视如敝屣。可能从来没有一种技术能像区块链这样带有如此的大争议。它真的一无是处吗?或者它应用范围有限?你一定想不到区块链技术还可能用在未来的IoT,甚至是自动驾驶汽车上面吧。今天我们就来谈谈区块链技术的那些“奇思妙用”,感谢Dell EMC中国研发中心技术大咖们的倾情贡献。
作者:Dell EMC中国研发中心 吴鹏飞
“There is nothing either good or bad, but thinking makes it so.”Hamlet: Act 2 Scene 2
很少有一项技术能像区块链这般,有着如此显著的优势与缺陷:去中心化、数据保存与防篡改,这些难以置信的优点,加上一度火热的比特币,曾让不少人以为技术的乌托邦已经到来;然而,性能低下、对计算、存储及网络资源的海量消耗,又让许多人对它嗤之以鼻。
我们知道,由于CAP原理的存在,人们在设计分布式系统时不得不在多个期望的特性中做出妥协。本文试图以混合云、多云为例,探讨在设计未来IT基础设施架构时,可能面临的艰难抉择;以及如何利用区块链,扬长避短,并使其在基础设施架构中扮演重要角色。以此为基点,展望未来区块链在IoT、车联网、自动驾驶等新兴领域的应用。
现状
在传统的IT基础设施架构下,用户拥有并维护一个私有的数据中心。
如果用户对数据和服务的可靠性、可用性有较高要求,通常的解决方案是建立多个异地数据中心,互为备份。
然而,这种方案的一次性投入较高,且对运维提出了苛刻要求。
云!
云计算的兴起,给用户提供了多一种选择。
用户可以在不对现有数据和业务进行迁移的情况下,把容错和灾备的数据与服务部署在公有云上。
这种做法的好处显而易见:云资源可以按需使用,无需巨大的一次性成本投入。
然而,在此种设置下,用户数据需要在企业私有环境与公有云环境之间进行迁移。
用户对数据的安全性和完整性的担忧也随之产生。
数据校验
一种直观的解决方案是:在用户私有环境下部署数据校验服务,维护一组元数据,据此对公有云上数据进行校验,以便及时发现错误并进行恢复。
不过等一下,我们需要在现有的IT架构中引入公有云,难道不是因为用户私有环境有失效风险吗?如果这里的数据校验服务也失效了怎么办?可能发生的情况包括元数据错误、丢失,甚至机房掉电等。
云:再来一份!
没问题!我们可以在云上部署一个数据校验服务的备份!
一个困境:引入云是为了应对私有数据中心失效的问题,但又带来了对云上数据正确性和完整性的担忧;数据校验服务可以帮助用户验证数据的正确性,却又面临失效风险;虽然我们可以把数据校验服务在云上进行备份,却又再次面临元数据的正确性和完整性问题!
兜兜转转,我们又回到了原点。
不妨看看区块链
区块链具有显著的优点:
- 数据保存
- 防篡改
这不正是我们数据校验服务需要的特性么!
那我们不妨探索下,尝试把元数据放在区块链上:
- 通过共识算法,私有数据中心可以和公有云达成共识,保证区块链上的数据正确性
- 虽然共识算法只能保证新一个区块的正确,但通过哈希链,区块链上所有历史数据的正确性均可以得到保证
看起来还不错,可区块链不还有很多缺点吗?它们会成为我们的绊脚石吗?
区块链的缺点
不妨针对区块链的缺点逐一分析:
☞浪费存储空间,所有节点需要保存完整的历史记录副本。
▶私有链需要的节点个数有限,此外,元数据多重备份提高了数据安全性和可用性。
☞共识算法消耗大量计算资源。
▶ 私有链的共识算法有多种选择,以应对不同的环境。当所有节点都可信,只是有数据出错、丢失风险时,甚至可以使用Raft作为共识算法(例如,使用zookeeper)。但当我们不信任云节点时,也可以使用PBFT共识算法,或者VMWare的安全专家们提出的SBFT算法。由于私有链节点个数不多,PBFT/SBFT对资源的占用也不会很大。
▶ u SBFT: a Scalable Decentralized Trust Infrastructure for Blockchains, https://arxiv.org/abs/1804.01626
☞区块链性能较差。
▶ 我们知道,比特币性能的理论上限在 6-7 TPS(transaction per second)。
▶ 但是区块链在当前场景下只用于记录校验数据,TPS的要求非常低,zookeeper或者PBFT/SBFT作为共识算法完全可以满足要求。
结论:Cool!区块链在当前应用场景下,优点异常突出;同时,有些缺点甚至还能转换为优势!
多云
于是上述结构也可以很轻松的扩展到多云。
在多云环境下,我们甚至能隔离云节点对区块链上云数据的访问。
比如:
- 针对每一个公有云,我们都部署一个独立的区块链。这些区块链在客户私有环境下设有节点。然而,公有云A数据对应的区块链节点却只部署在公有云B上,从而实现数据隔离。如右图所示。
- 另一种技术方案是,区块链上不保存任何元数据,而只保留云数据的哈希,以作审计。真正的元数据在链下另作保存,并广播给指定的云节点:相应的,我们可以只把公有云A的云数据广播给公有云B。
展望
IoT
IoT环境下,数据和计算节点可能由相互间缺乏信任的不同组织机构控制,但大家依然有数据交换的需求;和之前的多云场景类似,区块链可以在这样的环境下起到“数据审计”的作用,从而成为黏合IoT数据孤岛的“胶水”!
车联网
- 在车联网和自动驾驶世界,无障碍的数据交互显得格外重要:你无法决定行驶在你周围的车辆是不是与你的座驾来自同一制造商,因此车辆间通信依然面临缺乏信任的问题。而区块链可以作为一个虚拟的中心服务(虽然它本质上是去中心化的)存在:所有的车辆从区块链获取核心车联网控制策略,无论这些车辆是否属于同一品牌;
- 车企可以在自身的区块链节点上配置不同的策略审批准则。任何车企均可以尝试发布新的车联网控制策略,这种策略会在全网生效,包括那些不同品牌的车辆。但新策略只有获得所有网内车企批准才会在区块链上生效,从而提供给所有联网的车辆使用;
- 不同车辆通过从自己信任的区块链节点获取(事实上相同的)车联网控制策略,从而实现车辆间顺畅的点对点交互。
结语
世上之事物本无善恶之分,思想使然(哈姆雷特2.2)。区块链作为天使与恶魔结合的典型,如果能在正确的时间、正确的位置被正确的使用,依然有爆发出巨大能量的潜力,并编织IT基础设施架构的未来。
致谢
本文写作过程中深受与Lyne Lin和Alaric Chen讨论的启发。