需求如下:公司有两台报表服务器A(13.221.30.17)与B(13.221.30.18),两台服务器上都各自安装了同一个报表程序xxx.exe, 两台服务器的xxx.exe程序都在运行,但只有一台服务器处于工作状态(running),另一台处于备用状态(running as standby)(虽运行但不起作用),即当一台出现问题时,另一台备用的才起作用。现在要实现这样一个切换的功能:假设现在A处于工作状态,B处于备用状态,当A由于访问量过大出现内存溢出时(假设当xxx.exe所占内存高于1G就会内存溢出)就会导致报表无法正常访问,这时只要立即停止服务器A的xxx.exe程序,就会自动激活另一台备用服务器B的xxx.exe程序使其由备用转换为工作状态,从而实现服务器的工作状态的切换,以备用户能继续访问报表。当切换成功后,需要将刚才停下的A服务器的xxx.exe再次开启运行,使其处于备用状态,以备万一服务器B的内存溢出时,能再切换到A工作。总而言之就是要实现A与B的切换,以前是人工切换,工作量有点大,现在想通过设计个程序,实现A 和 B的自动切换,要实现流程就是上面的流程,要求用Java实现,求各位Java高手帮帮忙了,能给我写个框架更好,谢谢了~

解决方案 »

  1.   

    Socket里不是可以设置为服务器 只进行output不进行input么。
    1,2服务器同时进行 1input/output  2只output如果1服务器 >90%负载,,1设置成只output同时2打开input....
      

  2.   

    两台服务器对外都有统一的访问地址,#4楼,你说的那个output什么的,能说的详细些吗?
      

  3.   

    Thread 与Socket 看看,java网络编程。
      

  4.   

    楼主应该再完善下你的描述,你说来说去没说到关键的!
    你的A,B切换是怎么做的?你说的:"两台服务器对外都有统一的访问地址"是两台共用一个么?还是各有一个,主备切换的时候有IP漂移么?如果没有IP漂移你的客户端如何选择哪个是当前活动服务器!
    如果你的缺口只是做个心跳检测,那么各开个TCP监听,再各自连接对方的监听端口收取每个时间周期的心跳汇报信息,如果多个时间周期内收取不到心跳信息,说明对方挂了,然后启动接管程序!
      

  5.   

    楼主是否要用java实现整个切换过程?有难度。
    很早就有现成的双机备份软件,楼主可以找一下相关资料并建议公司购买。