分布式存储和分布式计算两个哪个更适合作为工作深入方向发展?

有朋友问,分布式存储比如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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/864405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

财务RPA与数字化转型——财务RPA如何促进企业的数字化转型

在数字化时代,企业面临着推动创新、提高效率的巨大挑战。RPA财务机器人作为智慧财务不可或缺的新动能,不仅能够优化财务流程,还能够在整个企业中引领数字化变革。本文金智维将深入探讨财务RPA如何成为企业数字化转型的战略利器,为…

【哈哈大一上学的全忘了,重开!!】STM32从零入门物联网开发

本笔记资料来源 :STM32物联网入门30步=单片机物联网入门教程 WIFI连接阿里云物联网CubeMXHAL库蓝牙ESP8266杜洋主讲_哔哩哔哩_bilibili IOT:Internet of things 学习目标: 1.掌握洋桃IoT开发板的各功能以及驱动与基本应用 2.掌…

docker 部署jitsi meet

1. 部署环境: 1.1 vm 虚拟机 安装的 centos 7 1.2 centos7安装docker 和 docker-compose 2.docker命令 官网部署文档地址:(文档地址有可能失效) Self-Hosting Guide - Docker | Jitsi Meet 2.1Download and extract the late…

1-3.文本数据建模流程范例

文章最前: 我是Octopus,这个名字来源于我的中文名–章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的…

基于隐马尔可夫模型的股票预测【HMM】

基于机器学习方法的股票预测系列文章目录 一、基于强化学习DQN的股票预测【股票交易】 二、基于CNN的股票预测方法【卷积神经网络】 三、基于隐马尔可夫模型的股票预测【HMM】 文章目录 基于机器学习方法的股票预测系列文章目录一、HMM模型简介(1)前向后…

全球首款搭载Google Gemini和GPT-4o的智能眼镜发布

智能眼镜仍然是一个尚未完全成熟的未来概念,但生成式人工智能的到来显著提升了这些设备的能力。Meta 的 Ray-Ban 智能眼镜被许多人视为当今最好的选择之一,而现在 Solos AirGo Vision 正在为其带来竞争,这款眼镜还集成了 Google Gemini 支持。…

生命在于学习——Python人工智能原理(3.1.1)

Python部分结束了,开始概率论部分 一、概率基本知识 1.1 事件与概率 1.1.1 事件的运算与关系 (一)基本概念 定义1 随机试验 如果一个试验满足如下条件: 在试验前不能断定其将发生什么结果,但可明确指出或说明试验…

浅聊JavaScript中的栈(stack)

前言 这篇文章结合leetcode题目讲解一下栈这种结构 第20题:20. 有效的括号 - 力扣(LeetCode) 第LCR-147题LCR 147. 最小栈 - 力扣(LeetCode) 栈(stack) 在讲解题目之前,我们先来…

HTTPS是什么?原理是什么?用公钥加密为什么不能用公钥解密?

HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,它通过在HTTP协议之上加入SSL/TLS协议来实现数据加密传输,确保数据在客户端和服务器之间的传输过程中不会被窃取或篡改。 HTTPS 的工作原理 客户端发起HTTPS请求&…

primetime中cell和net的OCV

文章目录 前言一、Cell OCV1. POCV coefficient file2. POCV Slew-Load Table in Liberty Variation Format(LVF lib) 二、Net OCV三、如何check OCV是否已加上?总结 前言 在生产中,外界环境的各种变化,比如PVT&#…

C语言之线程的学习

线程属于某一个进程 共同点:都能并发 线程共享变量,进程不共享。 多线程任务中,其中某一个线程调用了exit了,其他线程会跟着一起退出 如果是特定的线程就调用pthread_exit 失败返回的是错误号 下面也是

代码随想录-Day44

322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数…

科普文:一文搞懂jvm原理(三)执行引擎

概叙 科普文:一文搞懂jvm(一)jvm概叙-CSDN博客 科普文:一文搞懂jvm原理(二)类加载器-CSDN博客 前面我们介绍了jvm,jvm主要包括两个子系统和两个组件: Class loader(类装载器) 子系统,Execution engine(执行引擎) 子系…

16_C语言编程基础

目录 C语言入门 程序段和代码段 C语言入门实例 英文分号(;) 注释 标识符 保留字 C中的空格 C数据类型 基本类型 sizeof获取存储字节 void类型 变量 C数组 C枚举 C中的左值(lvalue)和右值(rvalue) C常量 变量存储类型 C常用关键字(保留字) 宏定义#define co…

生成式AI:未来商业的变革者

在2023年,生成式人工智能(GenAI)的浪潮席卷了全球,成为科技领域最炙手可热的话题之一。它不仅改变了我们与机器的互动方式,更在商业创新和生产力提升方面发挥了巨大的作用。本文将深入探讨2024年生成式AI的应用模式、趋…

docker初始化运行mysql容器时自动导入数据库存储过程问题

问题:用navicat导出的数据库脚本,在docker初始化运行mysql容器时,导入到存储过程时出错。 ERROR 1064 (42000) at line 2452: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for t…

面经-数据库

1.MySQL 1.1什么是MySQL? MySQL 是⼀种关系型数据库,在 Java 企业级开发中⾮常常⽤,因为 MySQL 是开源免费的,并 且⽅便扩展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL ,因此它的稳定性是有保障的。 MySQL 是开放源代码的&…

微信小程序-插槽slot

一.插槽slot 在页面使用自定义组件的时候&#xff0c;如果在自定义组件里面写子组件&#xff0c;子组件的内容无法显示。 <custom01> <text slotslot-top>你好&#xff0c;上方组件</text> 你好&#xff0c;组件 <text slotslot-bottom>你好&#xf…

三层限流:为高并发系统保驾护航

文章目录 前言第一层限流&#xff1a;Nginx 层面的 IP 限流第二层限流&#xff1a;Gateway 对用户层级的限流第三层限流&#xff1a;微服务限流分布式限流和单机限流的优缺点&#xff1a;1、RateLimiter的使用2、Hystrix的使用3、Redislua脚本4、使用Sentinel 关于为何同时使用…