我正在设计银行ATM消息处理/路由框架,在最后确定技术和体系结构方面需要一些帮助。交易来自多个合作银行的自动取款机,例如目前我们为5至6家银行服务,但每家银行不超过10台自动取款机。
当前的系统是使用核心java和阻塞线程构建的,但它有以下痛苦之处
为了消除这些痛苦,我们正在重新设计系统,并考虑以下技术
我要问的问题是
编辑
对要求做了进一步的澄清,
1)我们与银行自动取款机建立的TCP连接永远不会终止,除非存在某种网络问题。因此,对于每个请求,在发送响应之前,我们需要先做一个保持活动的检查,因为这是一个长时间运行的连接。
2)我们期望有500到800个并发的不终止tcp连接。另外,当ATM由于重新启动或维护而第一次启动时,它需要与服务器交换一些配置数据,并且进一步的请求应该始终访问缓存此配置数据的同一台服务器。
因此,如果我按照专家的建议,使用基于JMS的方法阻塞每个连接的线程,那么在发送响应之前如何保持活动。
( Q2)如果我需要在高可用性模式下运行tcp服务器,应该采用什么方法??
发布于 2015-10-15 08:44:33
考虑到ATM和金融事务的用例,您不应该从复杂的低级别非阻塞解决方案开始。
使用事务性JMS消息传递和阻塞I/O,您不会被消息淹没,因此您应该能够非常容易地计算最大负载(所有ATM机器都在同一分钟使用)。即使你有数千台相连的自动取款机,也不可能很高。这是一个典型的情况,可靠性和较低的代码复杂度(较少的bug)出现在扩展之前。硬件是便宜的,你不太可能到达高峰负载。
https://stackoverflow.com/questions/33139329
复制相似问题