日光之下, 并无新事 " -《旧约 传道书》
你信不信早就有分布式存储了? 至少 40 年前左右就有了吧. 不说概念, 咱们说 30 年前的, 虚拟内存!
虚拟内存 - 物理内存
虚拟内存连续的一片空间, 在实际的物理内存地址空间是连续的吗? 显然没有!
?? 一开始是段, 后来是页或者段页, 其实物理内存一直都是分布式的. 依靠操作系统的页表来完成虚拟地址到物理地址的映射关系.
文件系统 - 磁盘
不要把分布式理解为不同计算机之间的协作, 谁规定计算机内就不能分布了.
?? 其实, vfs 是另一种分布式存储机制, 在 vfs 的命名空间里, 一个连续的文件, 其数据在磁盘上的布局并非一定连续, 它们可能散落在同一磁盘上不同的角落里, 谁知道呢?
HDFS,Why different?
现在有了个 GFS,Hadoop HDFS, 大家伙就觉得好高端, 但还是难以逃过套路, 你要做的仅仅是熟悉一套新的 API 罢了!
??HDFS 第一部需要去和 NameNode 交涉, 其实目的就是获得实际文件的元数据, 这不和读写本地磁盘前差不多的操作吗? 第一步从 NameNode 拉取元数据的操作其实就跟查页表没有任何两样.
??So,HDFS,no different.
硬件限制了软件
这是我乐于接受的事实. 人们常说软件是先驱, 但是没有硬件, 软件就是屎.
?? 就像终端时代一样, 那时的硬件显然只能服务于当年, 即便其架构就是云计算模式, 也不会是云计算! 也许你会说当时没有 http, 没有 web, 但是即便有了之后呢?
?? 我以前常说, Infiniband 其实就是希望把主机内主板上的各类总线扯到主机以外, 目前看来, 是以太网完成了使命 (本来以太网在短距离通信中有 USB 何火线两个对手, 后来 USB 干死火线, 就和以太网独立分家了, 不过预测最终 USB 还是要归于 802.3 族系), 虽然这并不是它的初衷... 为什么知道 21 世纪过去了 10 多年, 这件事才成为现实, 我们不妨看一下时间表:
技术 | 带宽 | 年代 |
---|---|---|
ISA | 16Mb/s | xx |
PCI | 132MB/s/264MB/s | 1992 |
PCIe | 512 MB/s/8GB/s | 2001,2005,2009 |
以太网 10 | 10Mbps | xx |
以太网 100 | 100Mbps | 1995 |
以太网 1000 | 1Gbps | xx |
以太网 10000 | 10Gbps | xx |
… |
我把几个关键的时间写了出来, 看到了吧, 以太网进入百兆那是 1995 年, 此后才开始快速发展, 进而几乎马上就取代了很多内部总线...
?? 如果一开始的时候 20 世纪 80 年代左右, 以太网带宽就有 10Gbps, 那么你觉得文件系统或者内存系统应该怎么设计? 再来一次肯定不可能, 但我肯定, 绝对不会是现在这个样子!
分布式处理
你的 CPU 早就在分布式处理了. 早在 20 年前左右, Intel 的 CPU 就开始超标量模式运行了, 流水线就更别说了. 然而那个时候, 瓶颈就是前端总线频率和带宽. 现在这个限制正在逐步打开, 在更高级的应用层, 真的就可以高射炮打蚊子.
?? 无论如何, 当你在使用任何形式的流水线的时候, 你要记住, 一旦流水线被填满, 你的生成模式就纵横交换了. 对于计件流水而言, 出产一个产品所用到的时间是商品环节中最慢的那个时间, 虽然慢, 但也仅仅是一个时间.
嗯, 现在你可以用 Storm 进行分布式计算了, 你可以用 Hadoop HDFS 进行分布式存储了. 很幸运, 现在这样的事情有人买单了, 因为现在的以太网带宽已经和主板上的总线带宽匹敌了...
?? 很多人总觉得 java 做出来的东西性能低, 敢问你们自己测过吗? 虽然说可能 java 在性能方面真的不行, 但这些喷 java 的人其实可能真的无意喷 java 本身, 事实上他们没几个懂 java 虚拟机的, 他们无非听老师说了句 java 性能不好之类的吧.
?? 真的是这样, 日光之下, 并无新事.
来源: http://www.bubuko.com/infodetail-2957448.html