双机热备需求及方案 n 名词解释: 双机热备:双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备,双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。而双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即Active-Standby和Standby-Active状态)。具体可google。 n 需求: 1、 2、 3、 n 框架方案: 1、 双机热备软件作为需要双机热备功能的软件系统的一个功能组件。 2、 双机热备软件作为一个单独的工具软件,以托管方式管理需要双机热备功能的软件,独立于被托管软件,且支持托管多个。 u 比较: 1、 2、 u 结论:针对当前电力、电信、楼宇、煤矿等监控行业背景结合各家产品对于平台软件的需求、产品的特性,本文使用第二种。 n 详细方案:业务切换、数据同步、统一访问接口。 u 业务切换:一台机器发生故障时另一台机器自动接手服务并负责运行,服务交换时间不得长于五分钟。此处具有争议的主要为:主备机关系、服务进程侦听。 主备机关系: 1、 2、 2 比较: 1、 2 结论:本文采取第二种,主备机相对的概念。 进程侦听的方案: 2 Windows下: ü 文件映射:进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。WIN32API中允许多个进程访问同一文件映射对象,各进程在自己的空间内接受内存的指针,通过使用这些指针实现数据的共享,以实现进程之间信息交互。 实现方法: 1. 2. 3. ü 共享内存:文件映射的一种特殊情况。进程在创建文件映射对象时用0xFFFFFFFF来代替文件句柄(HANDLE)表示对应的文件映射对象是从操作系统页面文件访问内存,其它进程打开该文件映射对象就可以访问该内存块。 ü 邮件槽:提供进程间单向通信能力,任何进程都能建立邮件槽成为邮件槽服务器。其它进程,称为邮件槽客户,可以通过邮件槽的名字给邮件槽服务器进程发送消息。进来的消 息一直放在邮件槽中,直到服务器进程读取它为止。一个进程既可以是邮件槽服务器也可以是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信 ü 匿名管道:父进程和子进程之间,或同一父进程的两个子进程之间传输数据的无名字的单向管道。通常由父进程创建管道,然后由要通信的子进程继承通道的读端点句柄或写 端点句柄,然后实现通信。父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进程。这些子进程可以使用管道直接通信,不需要通过父进程 ü 命名管道:服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器 建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信 ü 剪贴板:Win32 API中一组用来传输数据的函数和消息,为Windows应用程序之间进行数据共享提供了一个中介,Windows已建立的剪切(复制)-粘贴的机制为不 同应用程序之间共享不同格式数据提供了一条捷径。当用户在应用程序中执行剪切或复制操作时,应用程序把选取的数据用一种或多种格式放在剪贴板上。然后任何 其它应用程序都可以从剪贴板上拾取数据,从给定格式中选择适合自己的格式 ü 动态数据交换:使用共享内存在应用程序之间进行数据交换的一种进程间通信形式。应用程序可以使用DDE进行一次性数据传输,也可以当出现新数据时,通过发送更新值在应用程序间动态交换数据。DDE 和剪贴板一样既支持标准数据格式(如文本、位图等),又可以支持自己定义的数据格式。但它们的数据传输机制却不同,一个明显区别是剪贴板操作几乎总是用作 对用户指定操作的一次性应答-如从菜单中选择Paste命令。尽管DDE也可以由用户启动,但它继续发挥作用一般不必用户进一步干预。DDE有三种数据交 换方式: 1. 2. 3. ü 对象链接和嵌入:应 用程序利用对象连接与嵌入(OLE)技术管理复合文档(由多种数据格式组成的文档),OLE提供使某应用程序更容易调用其它应用程序进行数据编辑的服务。 例如,OLE支持的字处理器可以嵌套电子表格,当用户要编辑电子表格时OLE库可自动启动电子表格编辑器。当用户退出电子表格编辑器时,该表格已在原始字 处理器文档中得到更新。在这里电子表格编辑器变成了字处理器的扩展,而如果使用DDE,用户要显式地启动电子表格编辑器。 ü 远程过程调用:Win32 API提供的远程过程调用(RPC)使应用程序可以使用远程调用函数,这使在网络上用RPC进行进程通信就像函数调用那样简单。RPC既可以在单机不同进程间使用也可以在网络中使用 ü 动态链接库:Win32动态连接库(DLL)中的全局数据可以被调用DLL的所有进程共享,这就又给进程间通信开辟了一条新的途径,当然访问时要注意同步问题 ü SOCKET:Windows Sockets规范是以U.C.Berkeley大学BSD UNIX中流行的Socket接口为范例定义的一套Windows下的网络编程接口。除了Berkeley Socket原有的库函数以外,还扩展了一组针对Windows的函数,使程序员可以充分利用Windows的消息机制进行编程 ü WM_DATACOPY:当一个应用向另一个应用传送数据时,发送方只需使用调用SendMessage函数,参数是目的窗口的句柄、传递数据的 起始地址、WM_COPYDATA消息。接收方只需像处理其它消息那样处理WM_COPY DATA消息。 2 LINUX:暂不作考虑 备注:管道(Pipe)是一种具有两个端点的通信通道。有一端句柄的进程可以和有另一端句柄的进程通信。管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写 2 比较: l 文件映射:文件映射是在多个进程间共享数据的非常有效方法,有较好的安全性。但文件映射只能用于本地机器的进程之间,不能用于网络中,而开发者还必须控制进程间的同步 l 共享内存:由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间 l 匿名管道:单机上实现子进程标准I/O重定向的有效方法,它不能在网上使用,也不能用于两个不相关的进程之间 l 命名管道:提供了相对简单的编程接口,使通过网络传输数据并不比同一计算机上两进程之间通信更困难,但当面对多个客户端时将显得力不从心 l 邮件槽:通过邮件槽可以给本地计算机上的邮件槽、其它计算机上的邮件槽或指定网络区域中所有计算机上有同样名字的邮件槽发送消息。广播通信的消息长度不能超过400字节,非广播消息的长度则受邮件槽服务器指定的最大消息长度的限制。邮件槽与命名管道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包)完成的,一旦网络发生错误则无法保证消息正确地接收,而命名管道传输数据则是建立在可靠连接基础上的。不过邮件槽有简化的编程接口和给指定网络区域内的所有计算机广播消息的能力 l 剪贴板:一个非常松散的交换媒介,可以支持任何数据格式,每一 格式由一无符号整数标识,对标准(预定义)剪贴板格式,该值是Win32 API定义的常量;对非标准格式可以使用Register Clipboard l 动态数据交互:DDE交换可以发生在单机或网络中不同计算机的应用程序之间。开发者还可以定义定制的DDE数据格式进行应用程序之间特别目的IPC,它们有更紧密耦合的通信要求。大多数基于Windows的应用程序都支持DDE。 l 对象链接和嵌入:同DDE技术相同 l 动态连接库:从数据安全的角度考虑,我们并不提倡这种方法,使用带有访问权限控制的共享内存的方法更好一些 l 远程过程调用:由 于Win32 API提供的RPC服从OSF-DCE(Open Software Foundation l SOCKET通信:Sockets的跨平台性要比其它IPC机制好得多,另外WinSock 2.0不仅支持TCP/IP协议,而且还支持其它协议(如IPX)。Sockets的唯一缺点是它支持的是底层通信操作,这使得在单机的进程间进行简单数 据传递不太方便 l VM_DATACOMPY:WM_COPYDATA是一种非常简单的方法,它在底层实际上是通过文件映射来实现的。它的缺点是灵活性不高,并且它只能用于Windows平台的单机环境下 2 结论:鉴于SOCKET套接字的网络功能,本文采用其中的SOCKET通信。 u 数据同步:两台机器所拥有的以支持业务正常运行的数据保持一致,其中异步误差不得超过五分钟。市场上数据同步主流模式为: 硬同步:由共享存储介质实现数据同步,其中常用磁盘柜型号为DS3400,支持两台机器同时共享其磁盘。 软同步:由软件实现,常用磁盘柜型号为DS3000。主备机各自使用自身所拥有的磁盘,由软件实现两个磁盘之上的数据一致。其中软同步,软件在数据同步方面主要分以下模式: 1、 2、 2 比较: 1、 2、 2 结论:本文采用异步机制实现数据同步。 软件应支持硬同步和软同步,由用户选择。本文支持两种模式。 u 统一访问接口:外部访问系统时,标识符一致。外部用户无需关心当前工作系统到底为其中哪一台机器。实现机制主要为VIP(虚拟IP)。当前活动主机创建虚拟IP,并对外发布,当服务切换时,之前主机删除IP,激活的备机在充当主机角色之前首先创建虚拟IP,以保证整个系统对服务接口一致。 n 具体实现方案: u 预定义: 心跳连接端口:40000。数据通道端口40001。40002文件通道端口。 心跳命令:格式为进程标识+命令 1、 2、 3、 4、 数据同步命令: 1、 2、 3、 4、 数据文件: 1、 2、 3、 4、 u 运行步骤: 业务切换: 1、 2、 3、 4、 5、 6、 数据同步: 2 数据库同步: 1、 2、 3、 4、 5、 2 文件同步: 1、 2、 3、 4、 5、 n 扩展功能: u 多数据库支持,支持sqlserver、orcl、mysql、db2 u 多文件格式支持,xml、ini、dat、txt、config等 u 支持筛选列、筛选行,支持定制同步。用户可根据需求选择自己要同步的数据 n 功能模块 u 网络通信模块: 作为服务器开启本地端口,40001、40002、40003。作为客户端连接远程40001、40002、40003端口。 负责服务切换相关网络指令收发与执行。 执行数据同步文件交互以及文件夹中文件管理 u 数据层模块:生成数据文件,以及执行数据文件,以实现数据同步。对外接口为SENDDATA、RECEIVEDATA、SENDFILE与RECEIVE文件夹。生成文件部分为将需要同步的数据或操作生成文件之后,放置于SENDDATA与SENDFILE文件夹中。数据文件执行部分为从RECEIVEDATA与RECEIVEFILE文件夹中获取数据,并负责执行。 |
|
来自: icecity1306 > 《产品设计》