分布式
分布式是什么:分布式是一个相对于集中式的概念
当一个项目过于庞大时,单机无法承担,自然会将其拆分,放在不同的机器上运行,这就是分布式,将项目放在不同的机器上,就需要面临许多问题,不同任务之间的调度,容器之间的编排管理,信息的同步,分布式的文件系统等等。分布式系统,分布式数据库,分布式计算,这是真正
Computer Science
的内容
这里主要对于服务开发和数据处理做一些说明,毕竟这是互联网产业的本质。
-
服务开发方面,在于微服务的使用。微服务是一种服务拆分,解耦,实现高并发,高可用的一种方案。大型的项目也会用到分布式数据库
OceanBase
,Gauss DB
等。主要的微服务框架有SpringCloud
,Dubble
,来进行服务治理和注册。其中的组件都是值得去仔细研究源码的。 -
数据处理方面,也就是分布式计算,多用于大数据的处理。最开始起源于搜索引擎,对于几十亿网页的
Page Rank
的计算。大数据在未来几年5G真正普及后的,真正的海量数据的处理方面,是真正的价值挖掘者。大数据使用的主要是分布式 计算框架,Hadoop
生态,Spark
内存计算等等。
网格计算
- 介绍:是分布式计算的一种实现,网格计算的本质在于以有效且优化的方式来利用组织中各种异构松耦合资源,来实现复杂的工作负载管理和信息虚拟化功能。
HPC 高性能计算
MPI与并行计算
- 介绍:对于能够在单机处理,但是运行时被阻塞的任务,采用多核同时运算来提高效率
- 场景:深度学习模型训练,对于卷积操作,通过显卡进行并行计算,而后将结果存储在内存中,进行运算,显卡中有上千个
CUDA
核心,可以同时进行简单计算,这就是并行计算的优势
特定领域的计算优化
- 比如针对深度学习的
asic
,华为的昇腾AI芯片等等
云计算
- 介绍:将计算资源虚拟,池化。只是提供一个计算中心,差别只在于
Hadoop
运行在阿里云的数据中心虚拟出来的Docker
还是自己实验室的PC机上。或者是模型跑在神龙裸金属服务器上,直通着Tesla V100
的显卡,还是学校的服务器。
补充
当然,深度学习也是一个比较大型的任务,是可以通过分布式训练来进行的。但是分布式训练比较麻烦的事情是:一个模型是在不断迭代参数进行训练的,是一个因果,怎么让两个都正在跑的模型对于参数互相妥协,以及这个规则的制订。