【读书笔记-014】架构解密之分布式存储和分布式计算
2019-03-11 本文已影响0人
爱倩子的李总
分布式存储
分布式文件系统是大型分布式系统中最重要的基础设施之一。
- NFS:
NFS是发展最早应用领域众多,不断推陈出新的最重要的基础设施之一。目前已演变成为UNIX系统最强大的,使用最广泛的网络文件系统。NFS通过将某个远程server上的指定文件目录mount到本机文件系统的某个目录上,从客户角度看使用方法与本地文件没有任何区别,对最终用户及程序开发者透明。Linux允许支持众多不同的文件系统,在内核层面设计了一套vfs的虚拟文件系统,定义了所有文件系统都必须支持的一套文件相关的基础结构和基本接口,从而对NFS提供支持。 - 高性能计算领域的分布式文件系统:NFS定位于小型网络文件系统,并不适用高性能计算HPC集群规模,出现了规模更大,系统更复杂,性能追求更高的文件系统,比如Google的GPFS,Lustre等,这些分布式系统针对高性能计算的特殊场景,以高性能作为设计的目标,适合大数据文件计算。
- 企业级分布式文件系统GlusterFS:简单方便,高性能及高扩展能力,数据存储为普通的标准linux文件,不引入新格式,即分布式系统故障,不会影响到具体的物理文件; 消除了集中化的元数据服务器,具备更强的弹性扩展能力和性能。
- 创新的linux分布式系统ceph:与GlusterFS一起成为倍受关注的开源分布式存储系统。
分布式计算
Actor模型
所有对象都是actor,之间仅通过发送消息进行通信,所有操作都是异步的,不同actor可以同时处理各自的消息,使得整个系统获得大规模的并发能力。
actor模型
根actor创建子actor为了并行计算,根actor给每个子actor发送一个消息,指定任务描述,子actor完成处理后,将结果封装成应答消息返回给根actor,根actor进行最后的汇总与输出。
- 优点将所有负责逻辑委托给actor框架本身,对应用透明,只需要关注信息流即可。
- 缺点在于完全避免共享并通过消息交互,失去了精细化并发控制能力; 容易出现死锁等共性问题。actor平台实现起来较为复杂,性能取决于底层的实现机制。
- akka:一个电信级质量的actor实现,非常轻量级的事件驱动处理。
storm
与actor面向单条消息的分布式计算模型不同,storm是面向连续的消息流的一种通用的分布式计算解决框架。
mapreduce
基于LISP类函数式语言里的map和reduce操作,采用分而治之的思想建立起来的一种分布式计算框架,适用于大批量数据集的并行运算。apache beam的目标一统天下,将统一批处理和流处理的编程模型。
消息队列
- 异步通信能力,弥补了RPC的不足,但也存在程序设计与编程方面的复杂性。
- 缓存能力,消息队列的容量可以设置得很大,高峰期的消息可以被积压起来,再随后的时间内平滑处理完成,不至于让系统无法承载并导致崩溃,具有很好的抵御洪峰的作用。
分类
- 第一代:J2EE时代玄武区,ActiveMQ,基层在J2EE中强调企业级特性。
- 第二代:后Java时代的产物,RabbitMQ
- 第三代:互联网时代产物,从设计思路上采用新一代的分布式系统设计理念,一开始支持分布式,并采用zookepper实现去中心化的集群管理,以kafka为代表,具有高性能,高吞吐量率和支持消息分区及分布式消费,支持在线水平扩展等特点。
总结
整本书阅读下来获取到的干货不是很多,也许是作者侧重于技术,在内容组织方面有所欠缺,不容易把我其核心观点,给人一种很随意的感觉。