分布式系统

批注 2020-06-30 114651

中间件连接了分布式系统的各个节点

网络硬件

分布式系统运行在网络之上

网络服务和协议

前端技术

分布式中间件

分布式存储服务

分布式文件系统

业界的一些分布式文件系统

设计

上传下载模式与远程访问模式

需要有一种唯一的目录文件命名方式,如 /server/path/file.txt

NoSQL数据库

NoSQL 方案带来的优势,本质上是牺牲 ACID 中的某个或者某几个特性, NoSQL 只是 SQL 的一个有力补充

NewSQL

关系型数据库与NoSQL的融合

分布式任务调度

  1. 单体调度:一个集群中只有一个节点运行调度进程,该节点对集群中的其他节点具有访问权限,可以对其他节点的资源信息、节点状态等进行统一管理,同时根据用户下发的任务对资源的需求,在调度器中进行任务与资源匹配,然后根据匹配结果将任务指派给合适的节点

  2. 两层调度:第一层调度器是一个经简化的中央调度器,通常放在分布式集群管理系统中,而第二层调度则是由各个应用程序框架完成。两层调度器的职责分别是:第一层调度器负责管理资源并向框架分配资源,第二层调度器接收分布式集群管理系统中第一层调度器分配的资源,然后根据任务和接收到的资源进行匹配

stateDiagram-v2  MPIScheduler --> MesosMaster: 注册下发任务  HadoopScheduler --> MesosMaster: 注册下发任务  MesosMaster --> MPIScheduler: 上报空闲资源  MesosMaster --> HadoopScheduler: 上报空闲资源  MesosMaster --> MesosSlave1: 下发任务  MesosSlave1 --> MesosMaster: 上报空闲资源  MesosMaster --> MesosSlave2: 下发任务  MesosSlave2 --> MesosMaster: 上报空闲资源
  1. 共享状态调度:沿袭了单体调度器的模式,通过将单体调度器分解为多个调度器,每个调度器都有全局的资源状态信息,从而实现最优的任务调度,提供了更好的可扩展性
flowchart TD    subgraph Scheduler1[Scheduler]        CellState1[Cell State]    end    subgraph Scheduler2[Scheduler]        CellState2[Cell State]    end    subgraph StateStorage[State Storage]        CellStateStorage[Cell State]    end    subgraph Nodes[Nodes]        Node1[Node 1]        Node2[Node 2]        NodeN[Node N]    end    Scheduler1 --> |Tasks| StateStorage    Scheduler2 --> |Tasks| StateStorage    Nodes --> |Node States| StateStorage    StateStorage --> |Tasks| Nodes

构建思想

思考

共性描述
分层设计大都有存储层、服务层、用户界面层和一些离线的数据分析系统
独立的集群管理系统容器化、池化、资源管理与应用独立
存储层根据需要,可以采用文件系统,也可以采用数据库系统,一般是两者都用 (1)文件系统,有的直接采用Apache HDFS,有的根据自己的需求开发了特定的系统,如存储大量小文件的TFS,既能存储大文件也能存储小文件的领英的Ambry等。(2)数据库系统 关系型数据库主要是开源的MySQL,少数也用Oracle,NoSQL数据库系统则大多根据自己的需要开发,有基于键值对的、基于文档的、基于图的、基于列存储的等
服务层服务化,都有自己的RPC服务框架:支持服务注册(大都采用ZooKeeper或其变种)、查询负载均衡衡等。都采用消息服务中间件使调用异步化。都有自己的服务调用分析系统
数据分析。实时数据与历史数据分开:一般都自行开发不同数据库之间的同步中间件,以将实时数据同步到历史数据库中。利用Hadoop集群对历史数据进行分析,利用流处理系统对在线数据进行分析