您的位置:首页 > 其它

分布式系统概念小记

2016-02-01 08:15 381 查看

本文主要是记录最近看的书里涉及到的概念。梳理自己对分布式里的概念理解,构建自己对分布式系统的初步理解。


定义

组件分布在网络计算机上,组件之间仅仅通过消息传递来通信并协调行动。

从用户角度,面对就是一个服务器,提供需求的服务。

分布式系统看起来就像一个超级计算机。

计算机五大部件

控制器

运算器

存储器

输入设备

输出设备

对于单机来说,都是在一台机器上。对于分布式系统,是由一系列网络节点组成。所以下面也按这个结构来学习。

演进过程

从小到大,都是遇到了真实问题,才形式的。所以好的分布式从来不是设计出来的。一般是数据量、并发,即存储和计算的问题。

解决办法:根据职责拆分、根据要解决的真实问题去拆分。主要运用的思想是:分而治之。

手段 : 1. 垂直拆分 2. 水平拆分

控制器

通过配置中心来控制运算器的节点。

配置管理中心

主要职责:

聚合服务器的地址信息。

服务器的生命周期感知。对服务器的上下线自动感知,并且根据这个变化去更新服务器地址信息。

结构可以划分为:客户端,服务端。

涉及到的知识:

网络基础知识(路由)

pasoix算法(自动推荐主干节点)

负载均衡(自动负载均衡)

运算器

通过应用和服务在控制器下对外提供运算能力(服务)。

服务化

通过服务化框架中间件来调用

通过消息中间件来解耦

怎么划分应用和服务,需要根据实际情况来说,不可一概而论。一般说来:根据职责、根据业务情况来划分。

存储器

是分布式系统的最底层支持。

数据类型

结构化。数据结构定义和内部分开。比如说数据库。对应的是分布式关系型数据库系统。

非结构化。比如blob类型,文件、图像、视频等。对应的是分布式文件系统。

半结构化。数据结构定义和内部耦合在一起。比如说html。对应的是分布式表格系统和分布式键值系统(是分布式表格的特例)。

文件系统

主要就是针对于非结构化的数据类型存储系统。一般用于存储blob类型数据。

POSIX

定义了应用程序访问文件系统的API标准。适应用于单机。

要求读写并发时能够保证操作的原子性,即读操作要么读到所有结果,要么什么也读不到

分布式文件系统,出于性能考虑,一般不会完全遵守这个标准。根据实际情况,分布式文件系统有的有树状目录,有的没有树状目录。

键值系统

每行记录由主键和值两部分组成,支持基于主键的crud。和传统的哈希算法很像。可以简单理解为大map.

应用场景

缓存半结构化的数据。比如html

缓存热点数据。

关系型数据库

比较符合人的思维习惯。

分布式事务

CAP原则。一般是通过两阶段提交来实现分布式事务。

其他问题

一致性。

查询(跨库)

复制

备份

表格系统

这个除了对单行的curd,还支持列,排序等一些复杂的操作。

输入设备和输出设备

除了普通的输入输出设备。网络节点的传输也是输入和输出

其他支持

自动化(容错、运维、发布、负载、测试)

参考书单

《淘宝技术这十年》。里面讲的架构演化很有意思。也基本了分布式存储的概念。没有过多的实践细则,适合普及概念。最后的牛P系列根据个人喜爱查看

《大型网站系统与Java中间件实践》。对单机和分布式的讲述很喜欢。对中间件讲解也比较到位。涉及到一些中间件细则,根据情况自行选择。

《大型分布式网站架构设计与实践》。对部分原理讲解的还不错,比较细则。里面推荐了一些工具、算法可以做了解用。

《大型网站技术架构核心原理与案例分析》。涉及到比较多的思维方面及知识。适合在脑子里构架大的轮廓。

《大规模分布式存储系统原理解析与架构实践》。对存储系统讲的比较透。特别是原则和规范比较喜欢。也涉及一些常用的技术原则讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: