我们在两个生产服务器上运行一个Java后端服务,每个服务器中有两个JVM,在Websphere Application Server中的负载均衡器后面。
我的用例:
对于当天的下一个客户机请求,如果请求的时间不等于一组时间(9:00、11:00、13:00、15:00),则返回缓存的response。
如果客户端请求恰好位于集合中的任何给定时间(9:00、11:00、13:00、15:00),则
上提供。
从9:00到10:59之间所有后续请求的response
11:00调用外部API并更新cache的
通过这种方式,一天中只有四个对外部API的请求,而不是对每个请求直接调用。
如何在Java的应用程序级别跨所有生产服务器实现这一点,在没有任何网络或IO编程的情况下,计算特定时区的夏时制时间?
注意:应用程序不使用Spring引导。我试图完全用Java来做这件事。
发布于 2021-05-16 15:27:29
因为您使用的是JEE应用服务器,如果可能的话,您应该使用符合规范的方法来提供最大的可移植性。你没有在你的帖子中提到你是在使用自由还是传统的WebSphere。
如果您使用的是自由,一种与JEE规范兼容的管理异步任务的方法是ManagedScheduledExecutorService。If提供调度功能,并为您处理线程。从以下信息开始:https://www.ibm.com/docs/en/was-liberty/base?topic=manually-configuring-managed-scheduled-executors
如果您使用的是传统的JEE支持级别,则在JEE托管环境中,提供的JEE支持级别没有符合规范的处理异步任务的方法。您可以使用符合JSE规范的ScheduledExecutorService,但与托管版本不同的是,它不适合在应用服务器env中使用,因为您希望服务器能够为您管理所有资源(如线程)。您将负责线程处理,并且需要考虑在JEE (不是推荐的模式)中使用非托管线程的含义。为了避免这种情况,您可以使用这里描述的WebSphere Scheduler服务:https://www.ibm.com/docs/en/was/9.0.5?topic=calendars-scheduler
https://stackoverflow.com/questions/67544279
复制相似问题