原文出处:https://www.cnblogs.com/dmego/p/9068734.html

前言

在给定上下文的软件体系结构中,为了解决某些经常出现的问题而形成的通用且可重用的解决方案称之为架构模式,而常见的体系架构模式主要有以下十种

  • 分层模式
  • 客户端-服务器模式
  • 主从设备模式
  • 管道-过滤器模式
  • 代理模式
  • 点对点模式
  • 事件总线模式
  • 模型-视图-控制器模式
  • 黑板模式
  • 解释器模式

而下面我将详细介绍主从设备模式的概念,以及它的用法、在实际中常见的应用场景和优缺点等

主从设备模式

主从设备模式也叫做主仆模式英文简称为Master-Slave,核心思想是基于分而治之的思想,将一个原始任务分解为若干个语义等同的子任务,并由专门的工作者线程来并行执行这些任务,原始任务的结果是通过整合各个子任务的处理结果形成的.主要的使用场景有

  • 并行计算,以提升计算性能
  • 容错处理,以提升计算的可靠性
  • 计算精度,以提高计算的精确程度

并行计算下模式举例

在分布式的系统中,这个模式还是比较常用的,简单的说,主从(Master-Slave)进程-线程的关系类似,Master只有一台机器作为Master,其他机器作为Slave,这些机器同时运行组成了集群.Master作为任务调度者,给多个Slave分配计算任务,当所有的Slave将任务完成之后,最后由Master汇集结果,这个其实也是MapReduce思想所在.

例如在Hadoop中,HDFS采用了基于Master/Slave主从架构的分布式文件系统,一个HDFS集群包含一个单独的Master节点和多个Slave节点服务器,这里的一个单独的Master节点的含义是HDFS系统中只存在一个逻辑上的Master组件。一个逻辑的Master节点可以包括两台物理主机,即两台Master服务器、多台Slave服务器。一台Master服务器组成单NameNode集群,两台Master服务器组成双NameNode集群,并且同时被多个客户端访问,所有的这些机器通常都是普通的Linux机器,运行着用户级别(user-level)的服务进程.

在上图中展示了 HDFS 的 NameNode , DataNode 以及客户端之间的存取访问关系, NameNode 作为 Master 服务,它负责管理文件系统的命名空间和客户端对文件的访问。NameNode会保存文件系统的具体信息,包括文件信息、文件被分割成具体block块的信息、以及每一个block块归属的DataNode的信息。对于整个集群来说,HDFS通过NameNode对用户提供了一个单一的命名空间。DataNode作为slave服务,在集群中可以存在多个。通常每一个DataNode都对应于一个物理节点。DataNode负责管理节点上它们拥有的存储,它将存储划分为多个block块,管理block块信息,同时周期性的将其所有的block块信息发送给NameNode

优缺点

  • 优点:准确性——将服务的执行委托给不同的从设备,具有不同的实现。
  • 缺点:从设备是孤立的,没有共享的状态。主-从通信中的延迟可能是一个问题,例如在实时系统中。这种模式只能应用于可以分解的问题。

参考

  • 维基百科
  • 10种常见的软件架构模式
  • 主仆模式(Master-Slave)
  • Hadoop:HDFS的Master/Slave架构

理解主从设备模式(Master-Slave)相关推荐

  1. iic通信的深入理解(主从设备通信)

    虽然之前也研究了先iic同行基本的时序你弄明白了,可是在机子写at24c02驱动的时候由于理解不够透彻出了点问题. 一.写数据 24c02的写入数据,可以看到主从设备iic中写的过程:起始信号-> ...

  2. mysql 主从配置(master slave)

    mysql主从复制 (超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:   1.1.版本一致   1.2.初始化表,并在后台启动mysql ...

  3. mysql5.7 主从切换_mysql5.7主从切换(master/slave switchover)

    切换前 192.168.56.100 master 192.168.56.200 slave 切换后 192.168.56.100 slave 192.168.56.200 master MySQL ...

  4. 主从多机matlab代码,Jenkins的Master Slave主从进行多机多环境部署-配置

    当我们写好一个程序以后,需要在多台机器上进行部署操作,如果我们使用每台机器独立部署的话,就很耗时间,这个时候我们可以利用Jenkins的主从机制来进行部署操作. 首先看个图,大概理解一下Master ...

  5. Redis学习 master/slave(主从)、sentinel(哨兵)、Cluster简单总结

    一.主从模式(master/slaver) Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结 ...

  6. Mongodb源码分析--Replication之主从模式--Master

    mongodb中提供了复制(Replication)机制,通过该机制可以帮助我们很容易实现读写分离方案,并支持灾难恢复(服务器断电)等意外情况下的数据安全. 在老版本(1.6)中,Mongo提供了两种 ...

  7. Redis: Redis的主从复制(Master/Slave),一主二仆,薪火相传,反客为主,哨兵模式sentinel

    命令: slaveof 主库ip  主库端口         配置从库 info replication                         查看redis连接情况 slaveof  no ...

  8. PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)

    PostgreSQL的HA解决方案-1主从和备份(master/slave and backup) 参考文章: (1)PostgreSQL的HA解决方案-1主从和备份(master/slave and ...

  9. 《Netkiller Spring Cloud 手札》之 Master / Slave 主从数据库数据源配置

    2019独角兽企业重金招聘Python工程师标准>>> Netkiller Spring Cloud 手札 Spring Cloud Cookbook Mr. Neo Chan, 陈 ...

最新文章

  1. linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch
  2. Mysql 中,WEEK 与YEARWEEK函数的参数问题
  3. Velocity的layout功能
  4. Tomcat-简易使用教程
  5. 实战:移动APP项目产品开发流程详解
  6. python3学习笔记10(迭代器和生成器)
  7. SQL优化技巧--远程连接对象引起的CTE性能问题
  8. gson解析php,php,android_关于 Gson 解析JSON数据。。。,php,android - phpStudy
  9. MongoDB教程——第3天(性能——索引)
  10. c语言4x4按键计算器代码,4X4按键实现计算器功能.doc
  11. Java异常处理 一
  12. 【编译器】G++相关编译命令
  13. 20171018 在小程序页面去获取用户的OpenID
  14. [人工智能]深入浅出机器学习
  15. 【Spring基础】CGLIB动态代理实现原理
  16. matlab gui中断程序,MATLAB GUI的中斷程序
  17. TPC-H介绍及实战总结
  18. 游戏客户端安全方案。
  19. Ubuntu16.04安装视频播放器
  20. C++新特性:override

热门文章

  1. redmine全记录(更新)
  2. 第01将-Mysql体系结构与存储引擎
  3. 718. 最长重复子数组
  4. android异步任务更新进度条,Android的AsyncTask异步任务浅析
  5. 阿迪达斯asp.net sql购物商城计算机设计网站作品
  6. 套壳python_“完全自主设计、开发和实现”的编程语言,被指是Python的套壳产品?...
  7. python的zip函数_python的zip函数
  8. 国内外黑客居然都在这些地方聚集
  9. oracle 故障 linux,從硬盤安裝Oracle Linux 6.3之軟驅故障
  10. All xxx functions were compiled because no usable IPDB/IOBJ from previous compilation was found.