双机热备工作模式及高内聚低耦合架构解释
时间:2022-04-23
本文章向大家介绍双机热备工作模式及高内聚低耦合架构解释,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
双机热备份技术是一种软硬件结合的较高容错应用方案。 该方案是由两台服务器系统和一个外接共享磁盘阵列柜 ( 也可没有,而是在各自的服务器中采取 RAID 卡 ) 及相应的双机热备份软件组成:
在这个容错方案中,操作系统和应用程序安装在两台服务器的本地系统盘上,整个网络系统的数据是通过磁盘阵列集中管理和数据备份的。数据集中管理是通过双机热备份系统,将所有站点的数据直接从中央存储设备读取和存储,并由专业人员进行管理,极大地保护了数据的安全性和保密性。用户的数据存放在外接共享磁盘阵列中,在一台服务器出现故障时,备机主动替代主机工作,保证网络服务不间断。
双机热备份系统采用 “ 心跳 ” 方法保证主系统与备用系统的联系。所谓 “ 心跳 ” ,指的是主从系统之间相互按照一定的时间间隔发送通讯信号,表明各自系统当前的运行状态。一旦 “ 心跳 ” 信号表明主机系统发生故障,或者备用系统无法收到主机系统的 “ 心跳 ” 信号,则系统的高可用性管理软件认为主机系统发生故障,主机停止工作,并将系统资源转移到备用系统上,备用系统将替代主机发挥作用,以保证网络服务运行不间断。
双机热备方案中,根据两台服务器的工作方式可以有三种不同的工作模式: 1)双机热备模式 2)双机互备模式 3)双机双工模式
下面对这三种模式分别介绍:
1)双机热备模式---即目前通常所说的 active/standby 方式
active 服务器处于工作状态;而 standby 服务器处于监控准备状态,服务器数据包括数据库数据同时往两台或多台服务器写入 ( 通常各服务器采用 RAID 磁盘阵列卡 ) ,保证数据的即时同步。当 active 服务器出现故障的时候,
通过软件诊测或手工方式将 standby 机器激活,保证应用在短时间内完全恢复正常使用。典型应用在证券资金服务器或行情服务器。这是目前采用较多的一种模式,但由于另外一台服务器长期处于后备的状态,从计算资源方面考量,
就存在一定的浪费。
2)双机互备模式
是两个相对独立的应用在两台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性,但对服务器的性能要求比较高。配置来说相对简单点。
3)双机双工模式 :
是目前 cluster(群集) 的一种形式,两台服务器均为活动,同时运行相同的应用,保证整体的性能,也实现了负载均衡和互为备份,需要利用磁盘柜存储技术 (最好采用San 方式) 。 WEB服务器或FTP服务器等用此种方式比较多。
-------------------------------------------高内聚、低耦合架构说明-------------------------------------
在运维系统架构中,一般都会追求高内聚,低耦合的设计,这样的环境对后期管理、开发使用、安全维护等都是十分有利的。下面就对这两个概念做一简单介绍:
高内聚低耦合:是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。
1)高内聚
内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。 所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
2)低耦合
耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口
的复杂性,调用的方式以及传递的信息。 )对于低耦合,粗浅的理解是: 一个完整的系统,模块与模块之间,尽可能的使其独立存在。 也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂,最好首先考虑进一步的模块划分。 这样有利于修改和组合。
3)为什么要追求高内聚和低耦合
软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割。但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什么样的粒度,并不是一件容易的事,这方面有各种各样的分解方法,比如:关注点分离,面向方面,面向对象,
面向接口,面向服务,依赖注入,以及各种各样的设计原则等,而所有这些方法都基于高内聚,低耦合的原则。 高内聚和低耦合是相互矛盾的,分解粒度越粗的系统耦合性越低,分解粒度越细的系统内聚性越高,过度低耦合的软件系统,软件模块内部不可能高内聚,而过度高内聚的软件模块之间必然是高度依赖的,因此如何兼顾高内聚和
低耦合是软件架构师功力的体现。高内聚,低耦合的系统有什么好处呢?事实上,短期来看,并没有很明显的好处,甚至短期内会影响系统的开发进度,因为高内聚,低耦合的系统对开发设计人员提出了更高的要求。高内聚,低耦合的好处体现在系统持续发展的过程中,高内聚,低耦合的系统具有更好的重用性,维护性,扩展性,可以更高
效的完成系统的维护开发,持续的支持业务的发展,而不会成为业务发展的障碍。
- python爬虫入门(六) Scrapy框架之原理介绍
- lambda表达式杂谈
- python爬虫入门(七)Scrapy框架之Spider类
- python爬虫入门(八)Scrapy框架之CrawlSpider类
- python爬虫入门(九)Scrapy框架之数据库保存
- Numpy 修炼之道(1) —— 什么是 Numpy
- TensorFlow修炼之道(3)——计算图和会话(Graph&Session)
- 1.python简介
- 《Python自然语言处理》答案第三章
- 2.python数据类型
- Miller Rabin算法详解
- 3.python文件操作
- TensorFlow修炼之道(2)——变量(Variable)
- 4.python迭代器生成器装饰器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 听说你一读Spring源码就懵?我帮你把架子搭好了,你填就行!
- 机器学习感兴趣么?无监督的遥感图像分类感兴趣吗?来嘛!
- 仓库ERP管理系统(springboot)
- R海拾遗-shiny4
- Spring中眼见为虚的 @Configuration 配置类
- 微信6.6.7版本后图文分享无标题的分析
- GEO 数据挖掘-数据获得
- POI和EasyExcel-你还在为导入导出数据苦恼吗?
- geo数据挖掘-2
- 基于ssm的客户管理系统
- 牛逼哄哄的Spring是怎么被MyBatis给征服了?
- Flutter如何和Native通信-Android视角
- 面试问倒无数人的Spring事务问题,就被你这样说完了?
- GEO数据挖掘3
- 史上最全Docker初学者命令大全