gaobenpeng.eth

Posted on Jan 15, 2022Read on Mirror.xyz

区块连和存储的基本知识

区块链从技术上来说是一个分布式账本,但除此之外还至少有以下特征: 形成代码可以管理的资产 去信任化 交易成本低,也就是常说的摩擦系数小

通证(数字货币)属性 一个通证一般来说有三种属性: 货币属性 就是可以当钱来用,又可以细分为支付属性和储值属性 股权属性 投资一个通证,拥有相应的权利(例如投票的权利),并且可以等通证涨价后卖出获利。短期投资即是投机 商品属性 一些通证可以直接购买具体的产品服务,具备商品属性 有些人认为交易深度深、流通性好的是价值币,其它是空气币;也有人认为具备商品属性的才是价值币,其它都是空气币(包括比特币在内)。两种观点都有一定道理,属于视角的不同。

行业发展阶段 类比20年前互联网 现在的区块链与20年前的互联网非常相似,在90年代后期刮起了一股互联网热潮,从美国到中国涌现了大量的互联网项目,只有PPT讲一个故事就能融到很多钱,骗子项目和泡沫项目占了90%。在2000年互联网泡沫破灭后,再讲故事不是那么好使了,需要讲价值,用互联网创造了什么价值。用户和投资人更多是为互联网创造的价值买单,而不是为“互联网”三个字买单。换句话说,为价值买单,而不是为概念买单。最终,即使是当年被某互联网项目骗了对互联网价值极其不认同的人,今天也承认互联网改变了世界。 骗子和投机分子横行的原因 今天的区块链也类似,99%都是骗子项目或泡沫项目(因为离钱近,所以比例更高)。这种局面是社会发展的客观规律,因为当一个变革来临的时候,骗子和投机者总是最先扑上去的,他们只需要洞察人性,知道怎样的话术可以将钱从别人口袋中掏出来就行。而真正干事的人,需要琢磨研究如何用新技术形成商业闭环,等他们研究清楚的时候骗子和投机者早就割完好几圈韭菜了。 区块链未来发展方向 区块链最近的熊市消去了很多泡沫,再讲故事不是那么好使了,某种程度上回归价值了。今后也应该形成光讲概念没人听,要讲用区块链创造了什么价值才好使的局面,才是对行业健康良性的。 但是无论如何,最终区块链会改变世界,即使是现在被某区块链项目骗了对区块链价值极其不认同的人,未来也会承认区块链改变了世界。 更进一步,区块链不仅会改变世界,甚至区块链改变世界的程度将远远超过互联网。

区块链的价值 为什么说区块链改变世界的程度要远远超过互联网呢?因为互联网只是创造了一个新的商业形态,而区块链不仅创造了一个新的商业形态,还创造了一种新的经济形态、一种新的组织形态和一种新的社会形态。 新的商业形态 很多链下的业务,都可以搬到链上来而且更有效,就像当年“互联网+”的时候将很多线下业务都搬到线上一样。例如菠菜游戏可以用智能合约坐庄,公开公正透明地保证庄家不会作假,更能保证所有玩家都无法出老千,保证游戏规则的公正性。 对互联网来说,不是所有的业务都能上网,“互联网+”也不是简单地开一个网站就好,即使适合“互联网+”的行业例如电商也不一定能干掉原有的线下业务(百货大楼被干掉了,便利店仍然还在)。 同样,不是所有的业务都能上链,“区块链+”也不是简单地发一个币就好,即使适合“区块链+”的行业例如区块链存储也不一定能干掉原有的链下业务(对象存储可能会被干掉,链下的块存储仍然还会在)。 另外,除了将链下业务上链外,也可能产生区块链原生的新种类的业务,就像微信抖音都不是线下原有的业务一样。 纯数字形式的行业将是最先上链的,例如金融、菠菜、存储。因为这些行业可以全过程都用代码控制,形成闭环,容易实现去信任化、低交易成本等。 新的经济形态 交易成本是经济学中关键要素 诺贝尔经济学奖获得者科斯提出交易成本重要性 交易成本是威廉森的新制度经济学的核心概念,简单说就是交易成本决定了经济制度。他的这个理论影响很大,得到大量主流经济学家的认同,也被授予了诺贝尔经济学奖 区块链将交易成本降低的程度已经量变引起质变 一个非洲人投资一家深圳公司1万美元?还不够DD费用 一个非洲人投资一个区块链项目1万美元?OK! 可以更有效地配置资源 一种新的组织形态 通证经济体超越几百年来最盛行的组织形态——公司,成为更为有效的组织形态。 通证经济体可以实现所有者、使用者、生产者的统一,也就是说将创始人及其团队、投资人、矿工、用户、营销渠道都绑在一起,还可以更好地实现分布式治理。 为了说明这种变革,一个典型的例子是通证经济体中通证的价值可以像传统公司那样靠利润来支撑,但也可以不需要利润也能支撑,甚至连毛利都可以不需要,也能长期支持通证的价值,甚至以内在经济模型实现长期上涨。 现有公司制度,无论是传统行业还是高新技术,都是必须要有毛利。一家公司可以没有利润甚至负利润,但不能没有毛利,否则商业模式就错了。现有的模式是进出差价等于毛利,毛利减费用是净利,净利乘市盈率是市值,市值乘股权比例是个人的身家。但在通证经济体中,个人身家等于通证价格乘以个人持有的通证数量,而通证价格可以不来源于利润,可以由其它因素决定。 记得前面讲过通证具有货币属性、股权属性和商品属性吧?完全可以用通证的商品属性让通证具有价格,而且该价格还能持续上涨,从而让股权属性的通证也能一同受益。在设计良好的通证经济模型中,当该通证代表的产品服务很优质时,通证的商品属性使得通证的价格上升,从而使团队的身家上涨,团队就有更大的动力去继续完善产品技术、继续营销,带来通证价值进一步上涨,团队也通过自己的劳动成果获得了巨大的财富,是一种良性健康的发展模型。 这个发展模型与传统公司制度相比,不需要有一个邪恶的平台控制用户和供应商,从中赚取巨额利润,成为社会的蛀虫。那种“去掉中间商,我来赚差价”的互联网模式,造就了一些超级平台,形成了对社会利益的巨大威胁。 相比之下,通证经济可以将用户支付的通证完全分配给矿工,不存在截留差价的平台方,没有社会蛀虫,交易成本降低到零。 举例来说,存储公链YottaChain将存储矿工贡献的存储空间聚合成一个规模浩瀚的、全球共享的统一存储池,其数据可靠性、服务可用性、数据安全性、容灾性等核心技术指标大大优于世界上最好的中心化存储,成本还能便宜很多。由于其通证YTA的发行数量是有上限的,这样当YottaChain的系统规模因其优质低价的存储服务而迅速扩大时,每个YTA所能买到的存储空间也会随之增加,YTA的价值就相应增加。假设一开始1个YTA可以买到1GB存储空间,当系统规模扩大1个YTA可以买到10GB存储空间时,YTA就增值了10倍。这个增值是创始团队努力打拼下提供比BAT巨头更好更便宜的存储而获得的,而且还不需要赚取差价,用户支付的所有YTA全都分给了存储矿工。相反,在传统模式下,乘客付给滴滴的钱和司机收到的钱是不想等的,滴滴要赚取高达30%左右的差价的。

一种新的社会形态 由于区块链形成了代码可以管理的资产,大量财产相关管理工作可以由代码来执行,使得民事相关的法律法规可以得到严格执行,彻底解决“政令不出中南海”的问题;而且执行过程非常公正透明,可以彻底消除腐败。 在这种情况下,就有可能用几千名程序员代替几千万公务员,除了警察、军队等物理上保护社会秩序的人员外,公务员的数量可以大幅度减少(当然不可能减为零),从而减少财政负担,朱镕基总理当年痛心疾首的“吃饭财政”问题也基本得到解决(中国2018年GDP 90万亿,财政支出22万亿,占大约1/4),可以视为社会交易成本大幅度降低。 甚至区块链也是低成本进行社会实验的途径。政治领导人的很多设想,可以先在区块链上做实验。甚至可以同时在不同公链进行多种方案的实验,然后再选择效果好的实行。我们不妨设想一下,如果当年红色高棉是在区块链上推行其激进路线的实验,就不会因其实验失败而导致四分之一的人口死亡,实验失败的后果也许只是参与实验的人减少四分之一的财富而已。

信息安全 信息安全主要包含网络安全、系统安全和数据安全三大类。 网络安全 网络安全就是靠防火墙这样的产品,御敌于国门之外,所以也称为边界安全,缺点是不可能永远准确地识别出来谁是好人,谁是坏人。就像北京的进京检查站,也经常能查出坏人,但不可能所有坏人都查出来,也经常误伤了好人,更何况有些人进北京时不是坏人,进了北京之后才变成坏人的。

系统安全 系统安全是保护计算机不被坏人所控制,典型的就是360的杀毒、防木马,我们知道,这也不可能做到100%绝对安全。 数据安全 数据安全是让坏人看不到你的数据,就算拿到数据了也不能解密,不知道是什么内容。当你把数据存放在阿里云时,你可能不担心阿里云的防火墙被攻破了,也不担心阿里云的服务器被黑客控制了,但是担心自己放在阿里云上的数据被阿里巴巴偷看了。这时,潜在的坏人就是阿里云的后台管理员,有最高权限的管理者。这种情况下,所有的网络安全措施、系统安全措施统统没用,只能靠数据安全来保护。 数据安全采用的是加密加上密钥管理的方式,让没有密钥的人即使拿到你的数据也一筹莫展。过去很多加密是靠加密算法的保密,算法如果被泄露了后果很严重。后来经过很多数学家的贡献,发展成算法可以公开,只要保护住密钥就行,你就算拿到密文,知道加密算法,甚至拿到全套源代码,只要没有密钥,就永远不知道明文是什么。而且密文没有特征,各种攻击方法都失效,唯一的办法就是猜密钥。但密钥只要足够长,那哪怕是世界上最快的计算机来猜,直到地球都毁灭了(几十亿年)也不能穷尽所有密钥组合。理论上,也有可能猜几次密钥就猜出来了,但这个概率实在太小,小到一千亿年都不会出现一次(地球寿命也不过几十亿年),不仅比金三胖被流星砸中的概率低,比金三胖被流星砸中了同时你今天还中了五百万大奖(一个人误将彩票快递给你,而这张彩票刚好就中了五百万大奖)的概率还要低,所以虽然从科学意义上达不到100%绝对安全,但从工程上来说是无法破解的,从商业上来说可以放心地把身价性命都全部压上也没有问题。 网络安全和系统安全是无法保证这种绝对安全性的。在TruPrivacy技术到美国DefCon(全球最大黑客大会)进行另类黑客挑战(敞开服务器任全球最强黑客自由出入,偷走数据就拿走巨额奖金)大获成功的赛后新闻发布会上,在TruPrivacy的技术负责人讲完信息安全体系和数据安全技术之后,360的CTO谭晓生上台发言先讲了两句话:第一句是刚才讲的信息安全体系很全,即使360也没有做全上面提到的所有安全措施,第二句话是即使做全了所有安全措施,还是不能保证系统不被入侵。不仅360不能,世界上任何人任何机构都不能保证。 也就是说,在信息安全的几种技术中,数据安全是最可靠最可信赖的,可以在网络被入侵、系统被黑客控制、关键人员被收买的情况下,完全依靠密码学技术保证数据的安全性,做到商业意义或工程意义上的绝对安全。网络安全和系统安全都绝对做不到100%安全,但数据安全可以。 但长期以来数据安全是被边缘化的,公众的注意力都聚焦在网络安全领域,不仅用户采购都集中在网络安全设备,连国家主管信息安全的最高领导机构都叫中央网络安全和信息化委员会(其常设办公室就是大名鼎鼎的网信办),完全就是网络安全等同于信息安全的架势。以至于网络安全的龙头企业启明星辰收购数据安全的龙头企业书生电子的时候,书生电子的收购价只相当于启明星辰市值的1%多点,相差了几十倍。 区块链的兴起改变了这个局面。区块链也是基于密码学构建的,和数据安全的是同样的技术。一个即使在信息安全这样一个专业领域内都被边缘化的技术,一跃成为了一门显学,占到了舞台的中央位置。

密码学基础 加密 加密分为对称加密和非对称加密。对称加密就是同一把密钥,既用于加密也用于解密,一般人能想象到的密码算法都是对称加密的,例如我们看电影的时候那些间谍用的密码本就是对称密钥,既用于加密,也用于解密。非对称加密也是数学家的一大贡献,有天才数据家想出了一个办法,可以让加密密钥和解密密钥不一样,而且相互不能推导。什么意思呢,就是你即使有了加密的密钥,你也知道加密算法和解密算法,但你只能加密,不能解密,同样,即使你有了解密密钥,你也知道所有的算法和实现的代码,但你只能解密,不能加密。 也许你觉得只能解密不能加密没什么意义,其实意义大着呢。 非对称加密算法被发明出来之后,人们就可以将其中一把密钥公开,称为公钥,另一把密钥留自己手里,称为私玥。每把密钥都是既可以加密也可以解密的,只是公钥加密的密文,需要用私玥才能解开,用公钥是不能解开的;同样,用私钥加密的密文,用公钥可以解开,私玥自己也是不能解开的。也有一些应用场景不公开任何的密钥,这时再称“公钥”就不准确了,但很多时候也照样这么称呼,约定俗成习惯了,只是这时的公钥也是不公开的。还有一种习惯说法,用公钥加密是加密,私玥解密是解密,用私玥加密却常称为签名,公钥解密称为验签。 非对称加密的性能是很差的,所以没人对整个文件都用非对称加密算法进行加密,而是先用一个对称密钥进行加密,再用非对称密钥来对这个对称密钥进行加密。 那对一个文件进行加密的时候会怎么办呢?首先是生成一个随机的对称密钥,用对称密钥来对文件进行加密,然后用公钥来对对称密钥进行加密,密文后加密后的密钥可以保存起来,即使被偷了也不怕,没有你的私玥,任何人都解不开这个文件,等你要用这个文件的时候,用私玥解密,解出来对称密钥,再用对称密钥对密文进行解密,就得到明文了。这是一个典型的加密流程。 密钥管理 很多人以为密码学就是将数据加密,其实绝不是这么简单。即使只考虑数据不泄密这个单一应用需求,真正的核心其实是密钥管理。 现代密码学的应用是基于密码算法公开透明,完全依赖于密钥来保证数据安全。非密码专业的人士一般都会对此难以理解,他们以为密码算法是用于保密的,密码算法本身更应该是高度保密的。为什么要密码算法要公开、标准化呢?大致有以下几个因素: 可以集合全世界数学家(密码学家)的力量来研究出最可靠的密码算法。例如中国密码学家王小云验证了MD5/SHA1不够安全,这是一个世界级科学家穷其一生做出的巨大贡献,但也只限于密码科学中很小的一个范畴;Ron Rivest、Adi Shamir、Leonard Adleman三个科学家发明了PKI公开密钥算法,是非常伟大的贡献,以他们三个人名字命名的RSA算法也是世界上第一个PKI公开密钥算法,但是后续科学家却证明了RSA是不够安全的,如今专业密码体系都使用ECC等更为可靠的密码算法;密文去重是困扰了密码学界几十年的难题,也被中国科学家王东临完美解决了。这些都是全世界最顶级的科学家历经几代的积累得到的成果,也只有在一个公开的环境中,才能形成一个科学共同体不断积累,形成如今璀璨的密码学成果。 可以保证大家都用最可靠的密码算法。也只有将密码算法公开并标准化,才能让全球科学共同体几十年形成的成果得到广泛应用,让不安全不可靠的密码算法从市场中淘汰。 可以让密码产品批量化生产制造,降低成本,从而使密码技术能够大规模普及。 可以让密码产品进行有效的质量控制。只有标准化才能以工业流水线的方式进行密码产品的质控,从而保证密码产品的商品质量。

在密码算法公开透明的情况下,密钥管理就尤为重要了。数据安全就完全依赖于密钥的安全,这就是为什么说密钥管理是数据安全核心的原因。 密钥管理包括密钥的生成、分发、存储、托管、验证、备份、授权、更新、销毁等过程,设计一套形成安全闭环、可以抵御各种环节攻击的密钥管理系统需要非常专业的知识和能力,并经过长期的攻防历练和同行评议。 好的密钥管理系统有以下几个特征: 一文一密 每个文件的密钥都不相同,每个文件都可以单独授权和管理,不会因为授权一个文件或其密钥的泄露而连带影响其它文件。 一文一密势必带来巨大的密钥数量,一个普通人的数据量就会涉及上百万把密钥,一个典型的系统可能会有几十亿把密钥。但只要有了专业的密钥管理系统,再多的密钥都能管起来,都不成问题。 随机密钥 所有密钥都是实时随机生成的,确保之前没有任何人知道 全程管控 密钥管理系统对密钥从生成到销毁的全生命周期过程都进行严格的保护和管控,任何时候都不让密钥失控。 环环相扣,形成安全闭环 存储密钥、会话密钥、工作密钥、交换密钥、主密钥……. 有的密钥是加密数据的,有的密钥是加密密钥的,有的密钥是代表授权的。 在密钥的分发、存储、托管、验证、备份、授权、更新等过程中,密钥管理必须形成全程的安全闭环,环环相扣,保证任何人都无法破解。 Hash Hash也称为数字摘要,或者音译为哈希,是指一种类型的密码算法,可以将任意长度的数据计算后变成固定长度的结果,而且数据有变化的话结果也会变化。最简单的hash算法是将数据的每个字节都相加,溢出的不管,最后形成8位数的一个结果。可以想象,由于数据是任意长度的,映射到hash值的时候一定不是唯一映射的,一定是多个不同的数据都能对应同样的hash值。当hash取值足够长的话,是可以做到你就找不到第二个数据有同样的hash值。两个数据有同样的hash值称为hash碰撞,就相当于撞脸了。现在数学家又登场了,数学家发明了一些非常好的hash算法,可以做到你知道hash值是根本推导不出来原来的数据的,你也没法去构建一个数据,其hash值刚好就等于特定值。像我刚才举例说的挨个字节相加,不仅只有8位长度不够,而且就算长度足够长(例如128位分组相加),也很容易构建一个文档具有特定的hash值。真正的hash算法是你根本就构建不出来的。 好的hash算法可以带来的好处是,由于hash碰撞的概率可以忽略不计,因此一个hash值就代表一个文件,所以也称为数字摘要。如果有一个公开的hash值,那另外一个人如果能拿出来跟这个hash值对应的文件,那就可以肯定这个hash值就是这个文件产生的,而且即使hash值被公开了,也不会泄露任何文件信息。 签名 数字签名(有时也称为电子签名)可以起到防抵赖、防篡改的作用。防抵赖也称为不可否认性,防篡改性包含了保证数据完整性。 一个典型的签名过程是先对这个文件计算hash值,然后用私玥对hash值进行加密,加密后的结果保存起来。这个加密后的结果称为签名数据,代表你认可了这个文件,和签字盖章是一个意思,以后验证的时候,任何第三方重新算一遍这个文件的hash值,同时用你的公钥解密签名数据,比较解密后的数据是否等于这个文件的hash值,如果相等,就说明你对这个文件签过名了。 前面说过,hash碰撞的概率可以忽略,你的私玥只有你有,别人也没有,用你的私玥对这个hash值进行加密,就意味着你认可了这个hash值对应的文件。除非是这种情况,否则没有任何人能构建出这个签名数据,007也不行。数学很神奇吧? 常见误区 加密货币 vs. 密码货币 区块链用了hash,用了签名验证,但其实没用加密解密。签名验证和加密解密是两回事,从前面的例子也能看出来了。所以将CryptoCurrency翻译成“加密货币”其实是不正确的,学术上正确的翻译应该是“密码货币”。但由于“加密货币”之说已经广为人知,也就成了约定俗成了。不过看过我文章的人,建议以后还是尽量使用“密码货币”这个正确的中文译名。

Hash加密?不存在的 我看很多人将hash算法也称为加密算法,这是外行说法。Hash是数字摘要,不是加密。加密需要能解密出原始数据明文,而Hash是不能的。如果删掉数据,只保留数据的Hash,那数据就会丢失,任何人(包括该数据的所有者)都再也不能使用该数据了。在计算Hash后仍然需要保留原始数据,不对原始数据加密的话该数据仍然是明文状态。 例如区块链行业广为人知的IPFS,就是只有Hash没做加密的。IPFS将数据的Hash值放到DHT中是为了做元数据管理,并不是对数据做加密。IPFS将原始数据明文分成了很多块,但仍然没有对数据做加密,任何知道该数据Hash值的人都可以轻易通过IPFS协议获取未加密的数据明文。 也许有人会认为,只要数据的Hash值保密没人知道,数据就是安全的。这个观点显然是不正确的。这就像一个网站是没有任何访问权限控制的,任何人只要知道域名就能访问,然后将隐私涉密信息放在该网站上,赌没有人知道这个网站的域名,这时还会有人觉得该网站是安全的吗?

王小云破译美国密码? 前几天王小云院士破译美国密码的消息铺天盖地,大量的人都来找我求证。一开始我还解释,甚至向微信举报相关公众号文章造谣。后来也无奈了,给亲朋好友粘贴复制一段解释说明,其它的就实在顾不过来了。 王小云确实是很了不起,她的科研成果也绝对是世界级的重大成就。但是,但是,与破译美国密码毫不沾边。 之前介绍过,Hash只是数字摘要,并不是加密。“破解Hash算法”的科学描述是“能够制造Hash碰撞”,或者说“给定一个Hash值,可以构造出一个文件,其Hash值刚好等于事先给定的数据”,对签名验证构成威胁,但是对破译出数据明文毫不相关。 破解Hash算法的威胁在于:对于一个人签名的文件,通过制造Hash碰撞“编造”出另一个文件,也可以顺利通过验签,从而认定这个人也对这个新文件做了签名。但这个破解也没有表面上看起来那么严重。例如,如果用MD5算法对一个word文件计算Hash值用于签名,MD5倍破解后可以编造出另一个文件具有相同的MD5值,但新文件就不可能也是一个能被Word打开的文件了。所以对于一般的文档文件还是风险不大的。如果想要让编造出的文件具有特定的内容(例如篡改美军作战指令),那就更做不到了。 王小云的工作成果是十几年前就产生的,当时我跟她有过交流,她也认同以上的观点。王小云成果的最大意义是证实了学术界对这MD5/SHA1这两个Hash算法安全性的担忧。也就是说,在王小云取得这项成果之前,密码学界已经普遍认识到这两个Hash算法可能是不够安全的,一些专业的密码安全体系设计人员已经开始弃用这两个Hash算法,王小云的成果是证实了这两个算法确实如大家所担忧的那样不够安全。 当然,也不能走另外一个极端认为“破解Hash算法”没有实用价值。如果被破解的Hash算法是用于对密钥计算Hash值,由于密钥可以是任意随机数,就可以编造出新的密钥通过认证,对数字证书、密钥管理都会构成严重的安全威胁。这就是当年得知她的工作成果后我立即跟她交流讨论的原因。我们当时讨论的结论有两个: 用SHA256算法较为安全,这也是中本聪的选择 双Hash方法更为安全(要让第一个hash值碰撞后还能做到第2个hash值也同时碰撞,那就比碰撞出一个能打开的Word文件还要难),这就是YottaChain采用不同Hash算法分别计算数据的明文Hash值和密文Hash值的原因之一(另一个原因是为了防止假冒数据攻击)。

数据存储 存储是IT核心技术 众所周知,美国是IT技术执牛耳者,几乎垄断了IT业。近些年,中国在IT应用技术逐渐赶超美国,甚至在移动支付等个别领域已经反超美国。但是IT核心技术仍然被国际巨头把持,其中IT基础架构技术是最重要的IT核心技术。 IT基础架构技术为应用层提供存储能力和计算能力,包括存储、计算、网络三大件。存储技术是其中重要组成部分,甚至很多存储从业人士认为,存储比计算和网络更为重要。不管这个观点是否得到认同,存储是IT核心技术的重要组成部分,这一点是无可置疑的。 存储产业长期被国际巨头所把持 在桌面级存储时代,中国是全军覆没。当年兴起的众多硬盘厂家,全部倒闭。FAT等流行的桌面文件系统,也全都是美国厂商的。 在企业级存储时代,Dell/EMC、NetApp、IBM、HPE、HDS等美日巨头处于一流水平,把持着产业,中国的华为存储几千人的团队奋斗十几年,已经达到世界二流水平,而且处于二流水平的前列,正在向世界一流水平发起冲击,但尚有一定距离。即使在中国市场,也是到了最近两年才有一些小银行开始尝试使用华为存储,其它银行的核心存储是宁愿用日本的HDS也不用华为的。 在云存储时代,AWS、Azure和Google位于世界一流,阿里云在马云的强力推动下成功位居世界二流水平,但阿里云虽然借助各种因素成为中国市场的霸主,在全球市场依然难以突破。最近,阿里云美国市场也不得不做出调整,从面向美国主流市场调整为面向做中国生意的美国企业。 区块链存储时代虽然还在孕育中,但给中国人带来了新的机会。抓住一个产业新机会,跃居世界一流水平,成为所有中国存储人的期盼。

存储的职业道德 传说中很多武林宗师在收徒之前会要求弟子要学武艺就要先学武德。任何行业都有自己的职业道德,一个合格的前辈在带弟子学生时一定要先阐述这个行业的价值观和职业道德。那存储行业的职业道德是什么呢? 在存储行业的从业人士看来,数据是有生命的,用户将数据托付给我们,我们就要对用户数据的生命负责。存储业务不赚钱可以不做,但只要做存储就要对数据可靠性负责。 这就像航空公司必须将飞行安全置于最高优先级一样。哪怕是飞机晚点、空姐服务不好,也千万不能飞机掉下来。航空公司哪怕已经严重亏损,只要航班还在飞,该做的飞机养护就必须做,该配两个机长就一个都不能少,发现任何影响飞行安全的故障宁愿赔款也不能飞。总之,飞行安全是最高优先级。 同样,存储产品、技术、服务的最高优先级就是数据可靠性,要对用户数据的生命负责。

存储系统指标 怎样衡量一个存储系统的好坏呢?以下指标是专业人员常用的指标。 数据可靠性(Data Durability) “对用户数据的生命负责”这句话不能只停留在口头上,要落实在行动上。一个存储系统,第一重要的就是要设计一套数据可靠性保障性机制,使得存储用户的数据随时处于可靠的保障之中,这样才能保证数据不丢,而不是听天由命。换句话说,凡是没有设计数据可靠性保障机制的存储系统,都是还没入门的非专业系统。 数据可靠性一般用达到多少个9表示,用如下公式计算: Durability=1-AFR 其中AFR(Annual Failure Rates)是年故障率,AFR=1%时,数据可靠性为99%,也就是2个9;AFR=0.1%时,数据可靠性为99.9%,也就是3个9。每多1个9,可靠性增加10倍。

服务可用性(Service Availability) 服务可用性是一个专业术语,学术上的定义是“在指定时间内返回操作结果”,通俗地说就是不宕机。 服务可用性和数据可靠性是不同的指标。打个比方来说,你去ATM机取钱,结果说银行电脑故障,今天不能取钱,这就是服务可用性出现问题了。但如果在这次故障之后,你在银行账上的钱都没了,原本你有10万元,但变成零了,那就是数据可靠性出现问题了。 服务可用性一般也是用多少个9来衡量。例如,4个9(99.99%)就是每年宕机不超过1小时。

数据一致性 为了保证数据可靠性,数据都要做冗余存储。数据一致性就是冗余的数据之间是一致的还是互相冲突的。典型场景就是在多副本冗余方案中,一个文件的多个副本是相同的还是不同的。 一致性对数据可靠性是很重要的。如果不能保证数据一致性,当不同副本的数据冲突的时候,虽然其中有一个副本的数据是正确的,但因为不知道哪个是正确的,存在正确数据被淘汰、错误数据被保留的风险,数据可靠性受到威胁;如果不淘汰不一致数据,那在读取的时候就可能读到错误的数据,而且当存放正确数据的介质出现故障的时候,也无法从其它副本恢复数据(因为其它副本保存的是错误的数据)。 数据一致性又可以进一步细分为强一致性、顺序一致性、弱一致性、最终一致性、会话一致性、单调读一致性、单调写一致性等: 强一致性 也称为原子一致性、线性一致性。强一致性可以理解为在任意时刻,所有节点中的文件是相同的,任何一次读都能读到该文件的最近一次写的数据。 顺序一致性 任何一次读都能读到所读文件最近一次写的数据,系统的所有进程的顺序一致,而且是合理的。即不需要和全局时钟下的顺序一致,错的话一起错,对的话一起对。 弱一致性 未能达到强一致性的要求,但在一个较低要求下也能实现一定程度的一致性,称为弱一致性。 最终一致性 最终一致性是弱一致性的一种常见实现方式。最终一致性不保证每次写数据都能马上更新所有副本,但保证在一个特定的时间后用户最终能够读取到最新的数据。如果该文件之后不再写入新数据,在一段时间后,各节点(或各副本)间的数据会最终达到一致状态。但是如果该文件不断地写入新数据,则不同节点(副本)的数据总是在向趋同的方向变化,却可能一直都不能达到完全相同。 会话一致性 这个概念需要IT工程师才好理解。在一个存储应用访问存储系统的一个会话(session,可以视为两个系统之间交互的一个通道)中,可以保证读己之所写”一致性,即一个进程写一个文件后,它再读该文件时总是能读到最新的数据,绝不会看到旧数据。但是当该会话终止(视为该交互通道关闭)后,再读该文件就需要建立新的会话,不能保证一定会读到最新数据了。 单调读一致性 如果一个存储应用已经读到一个文件的新数据,那么同一应用后续再读都不会再读到旧数据。 单调写一致性 存储系统保证来自同一个存储应用的写操作在任何节点(或副本)都是严格按照顺序执行的。一般说来,单调写一致性总是要保证的,否则存储应用就非常难以使用了

看到这里,很多人可能会问:难道往一个文件写了数据后,马上再读能读到新数据不是理所当然的吗?这个要求确实很合理,但存储系统尤其是分布式存储是非常复杂的,做到这一点其实很不容易,或者说代价很高(很高成本或者性能很低)。因此在很多应用场景下,都尽量将一致性的要求降低到能够满足该应用需求的最低程度,从而可以用更低的成本或更高的性能来完成存储操作。一个典型的例子是修改微信好友的备注时,有时会发现操作完成后该微信好友的备注并没有修改,这就是因为修改操作发给了一个节点,但操作完成后再读该好友信息时是从另一个节点读的,这两个节点的数据在新数据刚更新的一瞬间是不一致的。这就能看出来微信对修改好友备注操作没有采取强一致性的方案,而是采取了最终一致性的方案。也就是说,微信认为最终一致性对这个场景是可以满足要求的,偶尔出现点更新滞后是可以被用户所忍受的。不需要为之付出强一致性的代价。