admin 管理员组

文章数量: 1086019


2024年3月13日发(作者:51单片机cpu的组成部分)

双机热备需求及方案

 名词解释:

双机热备:双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机

高可用在国内使用较多,故得名双机热备,双机高可用按工作中的切换方式分为:主-备方

式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务

器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即

Standby状态)。而双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即

Active-Standby和Standby-Active状态)。具体可google。

 需求:

1、 业务切换:一台机器发生故障时另一台机器自动接手业务并负责运行,业务交换时

间不得长于五分钟。

2、 数据同步:两台机器所拥有的以支持业务正常运行的数据保持一致,其中异步误差

不得超过五分钟。

3、 对外提供统一访问接口:外部访问主备机时,标识符一致。

 框架方案:

1、 双机热备软件内嵌:

双机热备软件作为需要双机热备功能的软件系统的一个功能组件。

2、 双机热备软件外部独立

双机热备软件作为一个单独的工具软件,以托管方式管理需要双机热备功能的软

件,独立于被托管软件,且支持托管多个。

 比较:

1、 双机热备软件内置于需要双机热备功能的软件之中则双机热备软件为定制功

能,需求固定变化点少,开发相对容易简单,缺点是每一款需要双机热备功能

的软件都需要编写独自的双机热备模块。双机热备模块的开发受需要双机热备

功能软件所采用语言及框架设计的局限。维护成本高,在新的软件中需要双机

热备功能时,开发人员需要重新编写代码进行定制并要负责大量白盒测试,后

期开发成本高。

2、 双机热备软件作为工具软件独立,非定制。设计阶段需求相对不固定,变化点

多,初期开发难度大,成本高。优点:开发灵活,通用,不局限于具体软件。

仅需开发一套双机热备软件,可满足公司所有产品的双机热备功能需求,并可

作为单独商品销售于其他软件公司。对于公司的产品维护较简单,在新的软件

中应用双机热备软件时,仅需功能测试。

 结论:针对我公司行业背景结合公司对于平台软件的需求、公司产品的特性,本文

使用第二种。

 详细方案:业务切换、数据同步、统一访问接口。

 业务切换:一台机器发生故障时另一台机器自动接手服务并负责运行,服务交换时

间不得长于五分钟。此处具有争议的主要为:主备机关系、服务进程侦听。

主备机关系:

1、 绝对概念:主机为绝对主机,备机为绝对备机。主机瘫痪之后备机启动,

当主机恢复正常时则自动从备机手中接手业务进入活动状态,而备机进入

侦听状态,不支持手动切换。如我公司安监KJ580系统。

2、 相对概念:当前运行的系统为主机,处于侦听状态的为备机。当备机接手

主机业务后将取代主机地位作为主机运行,而主机则进入备机角色。支持

手动切换功能。如北京煤科院人员定位KJ236系统。

 比较:

1、 主备机切换必然导致部分数据的丢失降低系统可靠性,而双机热备的

初衷为降低数据丢失增加系统可靠性。而第一种会额外增加1倍的数

据丢失,即主机瘫痪时丢失一次,主机恢复正常时丢失一次。第二种

仅在主机瘫痪时丢失一次。

 结论:本文采取第二种,主备机相对的概念。

进程侦听的方案:

 Windows下:

 文件映射:进程把文件内容当作进程地址区间一块内存那样来对待。

因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和

修改文件的内容。WIN32API中允许多个进程访问同一文件映射对

象,各进程在自己的空间内接受内存的指针,通过使用这些指针实

现数据的共享,以实现进程之间信息交互。

实现方法:

1. 继承:第一个进程建立文件映射对象,它的子进程继承该对象的

句柄

2. 命名文件映射:第一个进程在建立文件映射对象时可以给该对象

指定一个名字(可与文件名不同)。第二个进程可通过这个名字打

开此文件映射对象。另外,第一个进程也可以通过一些其它IPC

机制(有名管道、邮件槽等)把名字传给第二个进程

3. 句柄复制:第一个进程建立文件映射对象,然后通过其它IPC

机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。第二

个进程复制该句柄就取得对该文件映射对象的访问权限

 共享内存:文件映射的一种特殊情况。进程在创建文件映射对象时用

0xFFFFFFFF来代替文件句柄(HANDLE)表示对应的文件映射对象

是从操作系统页面文件访问内存,其它进程打开该文件映射对象就

可以访问该内存块。

 邮件槽:提供进程间单向通信能力,任何进程都能建立邮件槽成为邮

件槽服务器。其它进程,称为邮件槽客户,可以通过邮件槽的名字

给邮件槽服务器进程发送消息。进来的消息一直放在邮件槽中,直

到服务器进程读取它为止。一个进程既可以是邮件槽服务器也可以

是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信

 匿名管道:父进程和子进程之间,或同一父进程的两个子进程之间传

输数据的无名字的单向管道。通常由父进程创建管道,然后由要通

信的子进程继承通道的读端点句柄或写 端点句柄,然后实现通信。

父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进


本文标签: 进程 双机 热备 文件 软件