日期:2014-05-16  浏览次数:20906 次

高并发下2台服务器本地的变量之间如何进行通信?
当前我的应用是2台在线机器 a b (各自都装mysql tomcat java 服务器)
为了实现2台机器之间通信. 各自mysql的服务器有1个库mdb 表message(id,value)---该表只有3条记录. innodb引擎
2台各自在本地 java thread 几乎每1分都会update 本地的message sql 为update message set value=? where id=? 1天这些update 总共有千次以上
偶而2台会彼此互相update 对方的这个表.(但这种情况并不多)
这样做在高并发下出现严重性能问题, 简单的update 有时候会7秒以上.慢查询这些update 1天7百条

开始思考用heap 表,但是这个表是表级锁.不太适合这种情况.--------------------没有在线测试 直觉
federatd 引擎估计不适合的.2边的数据不见得完全一样.
现在思考换用java程序的某个数据结构(设置为全局变量来实现).完全在内存里做.不通过数据库.
如果用全局变量, 本地update 很轻松, 现在头疼的是 "2台会彼此互相update 对方的这个表" 这个功能如何在java里实现?

问题简化为2台java服务器本地的全局变量之间如何进行通信? (消息队列?) 或者其他可用的数据库方法来解决这个性能问题? 


------解决方案--------------------
学习了
------解决方案--------------------
你所谓的高并发大概有多少,2太服务器的话,一个DB,一个web比较合适
------解决方案--------------------
这并发量太小了 等每秒上千次更新再说吧
------解决方案--------------------
你这个,用消息队列再合适不过了。openjms, 或者activemq