Java独立应用程序的可伸缩性和高可用性
作者:互联网
我们目前正在Linux机器上运行Java集成应用程序.首先是应用程序的概述.
Java应用程序是一个独立的应用程序(未部署在任何Java EE应用程序服务器上,如OracleAS,WebLogic,JBOSS等).
By Stand Alone我的意思是它不是桌面应用程序.但是它是从Main类的命令行运行的.用户根本不直接与此应用程序交互.使用API将消息转储到队列中,然后由我的应用程序读取,该应用程序一直24/7运行.我不认为这是一个桌面应用程序,因为用户没有与它直接交互.(不确定这是否是合格的正确推理).
它使用Spring并连接到WebSphere MQ和Oracle数据库
我们使用Spring Listener(Spring Message Driven POJO)来监听WebSphere MQ上的队列.一旦队列中有消息,应用程序就会从MQ读取消息并将其转储(插入/更新)到数据库中.
现在的问题是:
>我们如何横向扩展此应用程序?我的意思是只是放置更多的盒子并运行同一个应用程序的多个实例,这是一种可行的方法吗?
>我们应该考虑从Spring MDP迁移到EJB MDB吗?从而在Application Server上部署它.这样做会有额外的好处吗?
>有一个要求使应用程序高可用性(HA)?有哪些建议的方法或策略可用于制作独立的应用程序HA?
解决方法:
“独立”==“桌面”吗?
用户如何与拥有消息驱动bean的控制器进行交互?
我对你的问题的看法:
>您可以通过向侦听器池添加更多消息侦听器来进行扩展,因为每个侦听器都在其自己的线程中运行.您应该将数据库连接池的大小与消息侦听器匹配,因此也必须增加.在添加更多服务器之前这样做.确保手头有足够的RAM.
>我没有看到EJB MDB通过Spring MDB购买的内容.你一直在提到“app servers”.您是否特别指Java EE应用服务器,如WebLogic,WebSphere,JBOSS,Glassfish?因为如果你在Tomcat上部署Spring,我会认为Tomcat是这个对话中的“app server”.
> HA表示负载平衡和故障转移.您需要具有同步或热重新部署的数据库.与队列相同. F5是负载均衡的绝佳硬件解决方案.如果你有一些人,我会和你的基础设施人员谈谈.
标签:java,spring,scalability,high-availability 来源: https://codeday.me/bug/20190527/1160936.html