您的位置:首页 > 其它

集群环境下开发需要注意哪些地方?

2016-06-07 08:18 316 查看
昨天有人问了我一个问题,一台tomcat部署的应用,如果布置到两个tomcata中,编码需要注意哪些,当时没能回答上来,后来想想这就应该是一个集群环境啊,集群需要注意什么呢,下来在网上看了一些资料,总结一下吧

1.Session,我们经常用session来封装用户的登录信息,那么如果集群环境下一台机器session中有,一台没用回发生什么样的情况呢?幸好各个应用服务器都有在集群环境下session复制的配置。如何配置请查阅对应的文档。另外web开发经常用到Webwork,strut2,flex等技术,他们都对sesson的封装。他们是否也能复制呢?还要测试才行,当然理论上是可以的,呵呵!还有有的时候session要保存到什么位置?也是个问题a)内存,b)文件 c)数据库。根据实际情况来选择吧。

2.Cache,Cache我们经常使用(我这里只说对象级缓存),如:将一些经常用到的数据缓存到内存中。这种情况下和session有些类似。有的人实例化了一个包含HashMap的一个单例的对象,用来缓存数据,单机环境没什么问题,可是如果是集群环境呢?会怎样?所有我们引用分布式缓存或者集中式缓存,分布式缓存有很多种如ehcache,jbosscache,oscache等,集中式缓存比较典型的就是 memcached。选择分布式还是集中式根据项目的需要来定了。这里就不说了。

3. 线程、定时器,如:单机环境下我们写一个单线程,如用来像其他系统上传数 据(这个数据部允许多次上传),如果程序发布在集群环境下回发生什么情况?呵呵。变成多线程了。多个计算机内的单线程同时上传数据。所以这个时候考虑的地方就很多了!!是选择故障转移还是负载均衡都是考虑的范围。定时器也雷同。可以参考spring quartz 集群解决方案。

4.JDBC,JDBC注意的是数据库集群的情况,如weblogic集群架构图所示,编 写程序时,获得JDBC链接可以这样写, 

Connectioin con = null;

try{

  Class.forName("oracle.jdbc.driver.OracleDriver");//JVM加载驱动类 

  String url = "jdbc:oracle:thin:@(description =(address = (protocol = tcp)(host = 192.168.1.2)

  (port = 1521))(address=(protocol = tcp)(host = 192.168.1.3)(port=1521))(load_balance=yes)

  (connect_data =(service_name = twjk)))";

  String url ="jdbc:oracle:thin:@(description=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT =  1521))(load_balance=yes)(failover=yes))(connect_data=(service_name= racdb)))";

  con =  DriverManager.getConnection(url, "twjkdev","twjk");

  } catch (Exception e) {  

  // TODO 自动生成 catch 块 

  e.printStackTrace(); 

  }                           

  return con; 

  在服务器中配置数据源是不同的服务器配置也不一样。       如在websphere中,配置数据源的URL选项可以加入如下代码  

  jdbc:oracle:thin:@(description=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT =  1521))(load_balance=yes)(failover=yes))(connect_data=(service_name= racdb))) 

 程序自己选择使用的JDBC链接 。     在weblogic中是使用多数据源的方式来实现的,服务器有负载均衡和故障转移两项选择。

 这些是网上普遍提到的,当做笔记和大家分享一下,如有其它问题,也请各位看官能总结交流一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  技术 编码