分布式系统概念小记

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

定义

组件分布在网络计算机上,组件之间仅仅通过消息传递来通信并协调行动。
从用户角度,面对就是一个服务器,提供需求的服务。
分布式系统看起来就像一个超级计算机。

计算机五大部件

  1. 控制器
  2. 运算器
  3. 存储器
  4. 输入设备
  5. 输出设备

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

演进过程

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

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

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

控制器

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

配置管理中心

主要职责:

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

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

涉及到的知识:

  1. 网络基础知识(路由)
  2. pasoix算法(自动推荐主干节点)
  3. 负载均衡(自动负载均衡)

运算器

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

服务化

  1. 通过服务化框架中间件来调用
  2. 通过消息中间件来解耦

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

存储器

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

数据类型

  1. 结构化。数据结构定义和内部分开。比如说数据库。对应的是分布式关系型数据库系统。
  2. 非结构化。比如blob类型,文件、图像、视频等。对应的是分布式文件系统。
  3. 半结构化。数据结构定义和内部耦合在一起。比如说html。对应的是分布式表格系统和分布式键值系统(是分布式表格的特例)。

文件系统

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

POSIX

定义了应用程序访问文件系统的API标准。适应用于单机。
要求读写并发时能够保证操作的原子性,即读操作要么读到所有结果,要么什么也读不到

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

键值系统

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

应用场景

  1. 缓存半结构化的数据。比如html
  2. 缓存热点数据。

关系型数据库

比较符合人的思维习惯。

分布式事务

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

其他问题

  1. 一致性。
  2. 查询(跨库)
  3. 复制
  4. 备份

表格系统

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

输入设备和输出设备

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

其他支持

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

参考书单

  1. 《淘宝技术这十年》。里面讲的架构演化很有意思。也基本了分布式存储的概念。没有过多的实践细则,适合普及概念。最后的牛P系列根据个人喜爱查看
  2. 《大型网站系统与Java中间件实践》。对单机和分布式的讲述很喜欢。对中间件讲解也比较到位。涉及到一些中间件细则,根据情况自行选择。
  3. 《大型分布式网站架构设计与实践》。对部分原理讲解的还不错,比较细则。里面推荐了一些工具、算法可以做了解用。
  4. 《大型网站技术架构核心原理与案例分析》。涉及到比较多的思维方面及知识。适合在脑子里构架大的轮廓。
  5. 《大规模分布式存储系统原理解析与架构实践》。对存储系统讲的比较透。特别是原则和规范比较喜欢。也涉及一些常用的技术原则讲解。
posted @ 2016-02-01 08:15  庄君祥  阅读(1372)  评论(0编辑  收藏  举报