2023-分布式学习记录4

分布式系统:

一个分布式系统由多个通过网络互联的独立自治的计算节点组成,这些计算节点基于消息传递机制进行相互协作,以完成共同的目标。

理解分布式系统定义的要点:

  1. 计算节点:分布式计算的基本计算单元,可以是单个计算机,也可以是单个进程、线程或虚拟机。
  2. 网络互联:节点间通过网络进行消息传递,以实现同步协作。
  3. 独立自治:每个计算节点都是独立的,不同节点的动作是同时进行的。
  4. 相互协作以完成共同目标
  5. 消息传递

分布式系统的优点:

  • 提高计算能力
  • 提高存储能力
  • 提高网络吞吐能力(并发访问能力)
  • 提高可靠性(解决局部失效问题)
  • 提高安全性(解决被局部攻击问题)
  • 提高可扩展性(解决瓶颈问题)
  • 实现资源共享
  • 实现跨越时空的协同服务(发挥不同节点的优势)

两种模型

消息传递模型:节点间没有公共状态,需要通过相互通信进行协作;影响效率的主要因素是通信复杂度

共享内存模型:不同节点间通过共享存储器共享公共状态,通过共享公共状态进行通信

传统并行计算采用共享内存模型,分布式计算采用消息传递模型。

衡量分布式系统优劣的特性

  • 可扩展性/可伸缩性
  • 垂直可扩展性
  • 水平可扩展性
  • 容错性
  • 可用性
  • 可恢复性
  • 透明性
  • 开放性
  • 安全性
  • 可维护性

分布式一致性

通过数据库备份问题来理解:

大型数据库系统一般采用一主多备的模型进行数据备份,即一个主节点,多个备份节点,且只有主节点数据库接收写入请求,由主节点向备份节点发送数据更新命令。

这种模式的优点:

  • 解决数据库备份的问题,提升可靠性。即使一个节点出现问题,仍有其他节点可以正常工作。主节点出现问题时,也可以随时切换备份节点为主节点
  • 提高效率。主备节点状态一致时,客户端可以从任意节点读取数据

当然,这种模式也有问题,主要问题就是如何保持主备节点状态一致,即分布式一致性的问题。

解决分布式一致性问题的协议:Paxos、Raft

分布式计算任务

按任务限定完成时间长短(时效性)分类:

  • 实时处理任务(OLTP),要求高并发

在线购物、在线交易等

  • 准实时处理任务,流处理模型

Web 搜索时的联想、广告推送、商品推荐等

  • 批处理任务(OLAP),只有单一用户

分布式系统构架

  • 客户端-服务器模式(C-S)
  • 客户端发出服务请求,服务器端根据客户端请求参数完成实际运算,并将运算结果返回给客户端。
  • 客户端运算任务轻,服务器端运算任务重
  • 服务器一般要应对并发问题
  • 客户端一般负责和用户进行交互
  • 瘦客户端/胖客户端

变种——Client-Cluster模式,服务器端由多个服务器构成,共同分担计算任务。

三层结构的Client-Cluster模式:

  • 表示层,展现给用户的界面
  • 应用层,将负责业务分解成功能单一的服务,服务由独立的组件实现,应用层由组件组成
  • 数据层,直接操作数据库

优点:解耦,开发人员只关注某一层,降低层间依赖,利于复用,扩展性强

  • 主-从模式(Master-Slave)
  • 主节点负责根据负载情况分发任务和监视从节点执行情况进行调度
  • 从节点负责执行由主节点分发的任务
  • 总线模式
  • 不同节点之间通过虚拟总线相连,不必知道接收者和发送者
  • 异步方式通信
  • 对等模式(P2P)
  • 每个计算节点在任务分工上是完全对等的
  • 混合模式

负载均衡

  • 随机,随机选择
  • 轮询,按顺序分发
  • 固定权重值,请求更多地分发到高配置服务器
  • IP 哈希
  • 最少 TCP 连接数,分发到连接数最少的服务器
  • 最小响应时间,分发到相应最快的服务器
  • 基于各服务器实际负载的动态负载均衡算法

中间件

中间件:介于应用程序和操作系统之间的组件,将具体业务和底层逻辑解耦。

作用:

  • 为开发者提供高层的变成抽象,屏蔽分布式系统底层的异构性和复杂性
  • 提高互操作性和可移植性
  • 提供分布式系统的基础设施服务

常用中间件:

  • 远程过程调用中间件
  • 分布式对象中间件
  • 分布式组件中间件
  • 消息队列中间件
  • Web 服务中间件
  • P2P 中间件
posted @ 2023-03-06 01:51  kuaiquxie  阅读(10)  评论(0编辑  收藏  举报