有朋友问,分布式存储比如hdfs,ceph,minio,tidb,glusterfs;分布式计算比如Hadoop,spark,flink;它们在实际工作中咋样?具体开发工作是啥?哪个更有发展前景?
其实,计算与存储是相辅相承的关系。
千万不要听那帮二杆子们在各种PR稿中说的:存储与计算分离。
这个概念最早是EMC提出的(今天叫Dell EMC了,2015年的这笔760亿美金的收购是科技发展史上最大的收购 --- 折合RMB~5000亿)。事实上,存储从来与计算都是分离的 --- 以冯诺依曼架构为例,CPU与(持久化)存储的距离是非常遥远的,如下图所示:
从逻辑(与实际的硬件配置匹配)上,自上而下,存储可以分为7层:
- CPU
- DRAM
- Persistent Memory
- Performance SSD or NVMe-SSD
- SSD (Capacity SSD)
- HDD
- Network Storage (所有的NAS,还是任何其它类型的分布式存储全在这个category里面)
当然,很多人不理解CPU与DRAM为什么也会在存储架构中,呵呵。
有啥难以理解的,现代的CPU,尤其是企业级PC服务器,大多还有2-3级缓存呢,
学过汇编的同学一定知道,你怎么调用的各种寄存器(registers),所有的数据,最终不还是要流经CPU的,也会先流入Layer 1-to-3 Cache...
同样的道理,为了让系统的整体吞吐率更高,更加高并发,更快,延迟更低,用上图这种”多级存储加速“ (Multiple Layer Storage Acceleration) 来让数据更快的从下层的存储流入、流经CPU是任何高性能系统所要核心关注的问题。
记住,从CPU自上而下到网络存储层,是至少1,000,000(壹佰万!)倍的性能差异。
为什么我们常说很多大数据系统根本不是高性能系统,早就应该在各个行业中被淘汰了?首推Hadoop,甚至Spark都不是什么真正的高性能系统,还有很多所谓的也打着高性能标签的系统,例如那些性能平平的列数据库们 --- 仔细想想,对数字敏感一点,一个简单的原子级的操作,如果是毫秒级,它已经让在纳秒级工作的CPU白白空转了1,000,000次了!
因此,市场那些导出宣称毫秒级操作的系统,在实际的商业应用环境中,一定很慢很慢!因为,那些真实的需求、操作,包括一些批处理,动辄都需要数以万次甚至百万次的原子级操作组合而成,简单的数学:毫秒级 100万次 = 1000-100万秒!1毫秒100万次= 1000秒= 0.3小时,而1000毫秒*100万次 = 100万秒= 12天 = ~半个月。
大家知道为何很多银行的系统动辄需要T+1, T+2甚至T+7了吧?就是因为底层的那些号称”毫秒级“的数仓太慢!
千万不要低估”指数级“性能提升的意义!
真正高性能的系统,一定很少,必定是在微秒级工作的!那么上面的T+1会变成实时化,T+7会变成近实时(秒级)。
搞过高性能存储系统的专业人士会很清楚的一点:存储靠近计算(Storage Close to Compute)才是根本 --- 如何靠近计算呢?上面已经回答了:多级存储加速。
现在我来回答下工作的问题:
真正到了底层,无论是存储还是计算都有很多细节与挑战,例如
- 计算:对于数据结构、算法时延、算法复杂度、分布式系统架构、计算机体系架构要有清晰、明确的认知 --- 并且写高并发计算程序的复杂度也很高。
- 存储:对于文件系统或者存储硬件的特性要有深刻的理解,plus上面计算的所有诉求也一样要了解。
简单而言,搞存储的人一定少于搞计算的,但是到了极致,都已经是万中无一的。毕竟绝大多数人根本不会触碰到底层的东西,更别说能把事情的来龙去脉都梳理的明明白白的了。
另,需要澄清的一点 -- 现在大家都喜欢把分布式导出修饰任何系统或名词。但是准确的说,这就跟说某项目开源一样,很多开源都是伪开源,根本没有开源全部代码,到了底层都是一堆.so(动态链接库),然而99.9%的人不求甚解,跟着瞎起哄。开源很多时候与其说是什么GP家国情怀,不如说是Marketing/PR甚至是彻头彻尾的骗局。
分布式系统如果不是高性能的,根本没有任何意义。如何高性能分布式呢?就是不要用40台或者400台机器,平均每台机器只跑1-2个线程来吹NB说他这个分布式特别厉害 --- 你有种让每台机器可以跑满40线程来?400*40 = 16000线程,这个是底层硬件的并发计算能力,然而,现在的这些数仓或者大数据框架们,也就能用到不到1000个线程,这是对计算资源的90%+的浪费!可耻!
研究高密度并发(High Density Parallel Computing)是非常有价值的一件事情 --- 能充分释放底层的高并发的算力,无论是在CPU还是GPU,还是什么TPU/NPU、XPU之上,都可以。
先精钻,再泛化,不失为一条可行之路。
最后,不能免俗的,同时也向大家分享下:嬴图(Ultipa)的微秒级、高密度并发图计算与存储架构的一些核心点:
Hope ya-all will enjoy this.