日期:2014-05-20  浏览次数:20700 次

关于nio的负载均衡 以及 3个db(一个sqlserver 两个mysql分别在不同IDC)这种奇怪
应用有人作过吗?

1、关于负载均衡的问题啊。
如果硬件上和操作系统上已经实现了负载均衡
我的nio程序是否不用修改只要简单的复制到各个节点就可以了!
这个nio程序的功能只是负责跟client说话啊!
功能就是client发过来一个请求,我就会把这个请求去txt文件里面
找到这个请求的回答。然后把回答发给给他。第二次发一个请求
我就会把这个请求在去txt文件里面,找回答。一直这样下去啊。。。
clinet什么时候问我我就去txt文件里面找回答然后回答给他!
也不需要记录什么状态!以便去同步各个节点!不象
b/s那样需要session啊cookie啊之类的处理!


2、3个db(一个sqlserver   两个mysql   他们分别在不同IDC)
我要实现他们的回滚!
即一个db插入出现问题我就要回滚其他的两个啊
我能不能这样做啊(由于现在调研阶段我没有环境所以每办法测试啊)
以下是伪代码啊

connection   con1   =     new   connection   (sqlsever);
connection   con2   =     new   connection   (mysql1);
connection   con3   =     new   connection   (mysql2);

int   con11   =   con1.executeUpdate( "insert   into   tabA ");
int   con12   =   con2.executeUpdate( "insert   into   tabA ");
int   con13   =   con3.executeUpdate( "insert   into   tabA ");

if(con11!=1||con12!=1||con13!=1)
{  
                con1.rollback();
                con2.rollback();
                con3.rollback();

}


感谢大家了
感觉问题比较奇怪
希望不知道的话也帮忙
up一下谢谢了啊




------解决方案--------------------
第一个问题我实在没有看明白!

第二个问题,还是不太清楚你想做什么,但是,如果你希望跨DB做Transaction,建议你还是用JTA把
------解决方案--------------------
第一个文件只要路径相同就OK

第二个应该肯定要用JTA,否则自己实现基本不大可能
------解决方案--------------------
你的意思大致明白了。
不过这样的代码很可能会有问题的。 很简单
补充一下你的代码看一下 :


connection con1 = new connection (sqlsever);
connection con2 = new connection (mysql1);
connection con3 = new connection (mysql2);

int con11 = con1.executeUpdate( "insert into tabA ");
int con12 = con2.executeUpdate( "insert into tabA ");
int con13 = con3.executeUpdate( "insert into tabA ");

if(con11!=1||con12!=1||con13!=1)
{
con1.rollback();
con2.rollback();
con3.rollback();

}else{
con1.commit(); <---假设成功!
con2.commit(); <---假设掉电/db over/etc...! 后果你知道了吧。
con3.commit();
}