高性能实时服务器的备份机制问题

3 views
Skip to first unread message

quengzi

unread,
Sep 3, 2008, 12:03:34 AM9/3/08
to dev4s...@googlegroups.com
大家好!

是否有人实现过服务器冗余备份机制?
需求:
1. 覆盖全国的大型实时应用系统,比如机场的导航控制系统,要求全国联网,并能够实时处理入港飞机的各类参数;
2. 要求7*24运行下,死机或者异常情况下在5秒启动备份系统;
这样的系统,如何实现系统之间的消息通讯以及主副服务之间的备份切换?
游戏服务器是否需要这样的冗余机制?怎么处理?

--
王云
--------------------------------------
www.gisspace.net

lijie

unread,
Sep 3, 2008, 1:50:41 AM9/3/08
to dev4s...@googlegroups.com
要看系统是怎么样冗余的,冗余服务器自身是否有状态?有状态服务器对事务完整性及数据一致性的要求有多高,如何来保证这两个需求?这两个做好了,切换就是很简单的事。现成的例子,拿Google File System的文档看看吧,元数据服务器就有这种设计。

2008/9/3 quengzi <que...@gmail.com>

sunway

unread,
Sep 3, 2008, 2:44:17 AM9/3/08
to 高性能网络编程邮件列表
这类系统无非是数据库的冗余设计,主从数据库通过日志保持同步等等。

On 9月3日, 下午1时50分, lijie <cpun...@gmail.com> wrote:
> 要看系统是怎么样冗余的,冗余服务器自身是否有状态?有状态服务器对事务完整性及数据一致性的要求有多高,如何来保证这两个需求?这两个做好了,切换就是很简单-的事。现成的例子,拿Google
> File System的文档看看吧,元数据服务器就有这种设计。
>
> 2008/9/3 quengzi <quen...@gmail.com>
>
>
>
> > 大家好!
> > 是否有人实现过服务器冗余备份机制?
> > 需求:
> > 1. 覆盖全国的大型实时应用系统,比如机场的导航控制系统,要求全国联网,并能够实时处理入港飞机的各类参数;
> > 2. 要求7*24运行下,死机或者异常情况下在5秒启动备份系统;
> > 这样的系统,如何实现系统之间的消息通讯以及主副服务之间的备份切换?
> > 游戏服务器是否需要这样的冗余机制?怎么处理?
>
> > --
> > 王云
> > --------------------------------------
> >www.gisspace.net- 隐藏被引用文字 -
>
> - 显示引用的文字 -

quengzi

unread,
Sep 3, 2008, 10:16:26 PM9/3/08
to dev4s...@googlegroups.com
 应该没有这么简单吧
工作进程有很多,每个工作进程都必须有一个备份的辅助进程配合
当其中一个工作进程crash,必须在非常短的时间内启动备用进程,这里涉及到当前工作进程和 备份进程之间状态同步、数据同步以及和其他相关进程之间的通知工作 ,要通知其他进程,这边由备用进程接管,那么其他进程也要相应的切换工作

那么就涉及到调度、状态同步、数据同步的问题
所有的数据都不能以数据库的形式进行共享,系统的实时性要求很高,工控的要求

另外主副进程必须是相同的控制逻辑,也就是一份代码,这样副进程接管以后就是工作进程,而crash的进程重新启动以后也成了备份进程,等待状态了

2008/9/3 sunway <sunh...@gmail.com>



--
王云
--------------------------------------
www.gisspace.net

邱宇舟

unread,
Sep 6, 2008, 12:11:16 AM9/6/08
to dev4s...@googlegroups.com
quengzi 写道:
> www.gisspace.net <http://www.gisspace.net>
>
> >
工业控制系统中都是热备,同时有2台同功能主机上线,1台工作,一台预备,工作
的主机坏了后,预备的主机立即接过工作。
游戏服务器搞不起这样的,也用不到。
qbowater.vcf

wei

unread,
Sep 6, 2008, 3:39:27 AM9/6/08
to dev4s...@googlegroups.com
电信领域基本都是用veritas的双机热备或者1:N热备,实时切换的。这个东东卖的特别特别贵。

2008/9/6 邱宇舟 <qbow...@gmail.com>

wantsoft

unread,
Sep 7, 2008, 6:45:19 PM9/7/08
to dev4s...@googlegroups.com
最简单的就是握手机制,没有握手就认为主机倒下。
备机启动。

------------------
wantsoft
2008-09-08

-------------------------------------------------------------
Sender:wei
Date:2008-09-06 04:39:39
Receiver:dev4s...@googlegroups.com
CC:
Subject:Re: 高性能实时服务器的备份机制问题

quengzi

unread,
Sep 7, 2008, 9:52:58 PM9/7/08
to dev4s...@googlegroups.com
嗯,大概明白了一些,这个机制在工控领域应该是一个常见。
这里有没有人做过呢?或者实现的思路、架构?

2008/9/8 wantsoft <want...@gmail.com>



--
王云
--------------------------------------
www.gisspace.net

quengzi

unread,
Sep 8, 2008, 9:29:46 PM9/8/08
to dev4s...@googlegroups.com
再进一步到软件实现的话,如果要实现这样的逻辑,差不多每一个函数都需要进行逻辑判断:

static void main(string []args)
{
   while(true)
   {
   if(runmode == 0)
    {
        syncstatus();
    }
    else
    {
        worklogic();
    }
    }
}

int syncstatus()
{
    if(checkworkprocess())
    {
        startworklogic();
    }
    else
    {
        syncwithworkprocess();
    }
}

int worklogic()
{
    do work logic...
    sendworkstatus();
    backupworkdata();
}
同时一个线程维护心跳,和调度服务器进行通讯,如果发生崩溃则由调度服务器通知其他子系统,进行切换工作,另外备份服务器可以立即启动。
如果当前崩溃主机无法自启,那么还需要有一个机制,能够保证崩溃的进程或者服务器能够正常启动(人工或者其他手段)


2008/9/8 quengzi <que...@gmail.com>



--
王云
--------------------------------------
www.gisspace.net

狄卫华

unread,
Sep 8, 2008, 10:58:08 PM9/8/08
to dev4s...@googlegroups.com
 如果仅仅是双机主备轮流持续提供服务,大家讨论的使用心跳检测,如果心跳丢失自动启动备服务,应该是很简单的了。
 
但是如果有状态的切换,比如说主机有许多业务在跑,当主机崩溃了后,备机起来还需要延续主机的服务,也就是说主机崩溃时候的业务在备机还需要延续执行,这时候双机备份重要的是主备动态数据的同步和如何服务的延续了。
 
所以说服务器备份机制的重点是在数据的动态同步上。
 
 

在2008-09-09,quengzi <que...@gmail.com> 写道:

买房不必东奔西走,上房老大,看"二手房"网上房展会
Reply all
Reply to author
Forward
0 new messages