使用JavaNIO/netty和activemq的银行atm tcp消息负载均衡和路由
我正在设计银行ATM消息处理/路由框架,需要一些技术和架构方面的帮助。交易来自合作银行的多台自动取款机,比如说,目前我们为5到6家银行提供服务,每家银行不超过10台自动取款机使用JavaNIO/netty和activemq的银行atm tcp消息负载均衡和路由,tcp,activemq,netty,load-balancing,nio,Tcp,Activemq,Netty,Load Balancing,Nio,我正在设计银行ATM消息处理/路由框架,需要一些技术和架构方面的帮助。交易来自合作银行的多台自动取款机,比如说,目前我们为5到6家银行提供服务,每家银行不超过10台自动取款机 消息通过tcp套接字来自ATM,并由称为ATM控制器的多线程Java进程接收。它以阻塞模式运行,每个套接字一个线程。每个银行都有一个唯一的端口,所有的ATM都在这个端口发送信息 消息转换为ISO8583格式,通过tcp套接字发送到硬件安全模块(HSM)进行解密,PIN验证也使用另一个软件模块完成。这些是标准库,到目前为止运
问题2)如果我需要在高可用性模式下运行tcp服务器,应该采取什么方法 考虑到ATM和金融交易的使用案例,您不应该从复杂的低级别非阻塞解决方案开始
一直使用事务性JMS消息传递和阻塞I/O。您不会被消息溢出,因此您应该能够非常轻松地计算最大负载(所有ATM机在同一分钟内使用)。即使你有数千台相连的ATM机,这也不会很高。这是一种典型的情况,在这种情况下,可靠性和较低的代码复杂性(较少的bug)会在扩展之前出现。硬件很便宜,您可能不会达到高峰负载。欢迎使用堆栈溢出!如果您可以发布单独的问题,而不是将您的问题合并为一个问题,这是首选。这样,它可以帮助人们回答你的问题,也可以帮助其他人寻找至少一个你的问题。谢谢我强烈建议您不要为此使用NIO。您需要做的是调试现有系统。使用NIO只会使情况变得更糟。非阻塞NIO服务器套接字线程的请求-响应是否与阻塞线程套接字的工作方式相同,或者需要在服务器代码侦听器的有效负载中插入任何特殊字段,以识别用于发送响应的正确服务器套接字(由于其异步性质)?不。我建议您这样做看看基于JMS的解决方案。Nginx和HAProxy是在第4层工作以平衡传入tcp套接字连接的负载,还是仅在第7层使用。最大并发套接字的限制应该是多少,超过这个限制就需要进行负载平衡?