具有多个服务器的JPA

MikeTheReader:

我目前正在开发一个使用JPA(当前为Toplink)进行持久化的项目。当前,我们正在运行单个应用程序服务器,但是为了实现冗余,我们想添加一个负载平衡器和另一个服务器(可能随着服务器的增长而增加)。

首先,我遇到了JPA缓存问题。由于两个进程将更新同一数据库,因此JPA缓存将返回缓存的值,而不是返回数据库。我看到了如何关闭它,数据库本身实现了一定程度的缓存。是否完全关闭缓存才能进入此处?我看到了告诉JPA始终在查询级别从数据库获取数据的方法,但是在多服务器环境中,您似乎总是希望这种情况发生。

除了这个特定的问题,我对那些使用多个应用程序服务器实施JPA解决方案的人以及实施过程中出现了哪些问题(以及您的任何建议)感兴趣。

非常感谢。

詹姆士 :

如您所知,您可以禁用共享缓存,请参阅http://wiki.eclipse.org/EclipseLink/Examples/JPA/Cachinghttp://wiki.eclipse.org/EclipseLink/FAQ/How_to_disable_the_shared_cache%3F

EclipseLink中还有其他选项可用,具体取决于您的数据和要求。

选项列表包括:

  1. 禁用共享缓存

  2. 启用缓存协调(请参阅http://www.eclipse.org/eclipselink/api/2.1/org/eclipse/persistence/config/PersistenceUnitProperties.html#COORDINATION_PROTOCOL

  3. 设置缓存失效超时(请参见http://www.eclipse.org/eclipselink/api/2.1/org/eclipse/persistence/annotations/Cache.html#expiry%28%29

  4. 启用乐观锁定,这将确保任何陈旧的对象都无法更新,当对陈旧数据进行更新时,它将失败,并且EclipseLink将自动使缓存中的对象无效。

  5. 研究EclipseLink和Oracle Coherence的Oracle TopLink集成以提供分布式缓存。

另请参见http://en.wikibooks.org/wiki/Java_Persistence/Caching#Caching_in_a_Cluster

没有完美的解决方案,通常使用的解决方案取决于数据/类,通常,应用程序具有一组只读类,以只读为主的类和以编写为主的类。就我个人而言,我将为只读缓存启用1天的超时时间,为具有只读缓存的缓存启用协调,而对于大多数只读缓存的缓存则启用协调。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有多个用户的服务器实例

具有多个资源服务器的OAuth 2.0身份验证服务器

如何在具有多个服务器的同一数据库上使用骆驼JPA组件?

具有多个并发请求的Node.js服务器,它如何工作?

具有多个客户端平台的应用程序服务器API的会话设计

使用多个具有相同域的smtp服务器?

spring-integration-mqtt具有多个Mqtt服务器进行订阅

具有多个服务器的Prometheus

Java-具有多个客户端的服务器错误

.Net Core-具有多个Auth服务器的身份服务器

使用IP地址访问同一服务器上具有多个域的网站

解析具有多个子网的dnsmasq服务器的服务器主机名

具有多个网关的Linux DHCP服务器

具有多个位置的Nginx服务器配置不起作用

生成具有多个主机名的服务器和客户端证书

具有WebForms的Xsockets服务器

具有多个客户端的UDP服务器的基本原理

具有多个客户端的服务器-JAVA

具有多个用户的本地服务器上的Git

具有多个服务器TFS的版本控制代理

命令以标识具有多个磁盘的服务器中的特定物理磁盘

Relay.js是否支持具有多个会话的同构服务器端呈现?

Nginx-反向代理具有多个路径的WebSocket服务器

家里有多个Web服务器

具有多个主机的服务器上的FeathersJS

具有多个 zeo 客户端的 Zeo 服务器日志输出

使用 dd 克隆具有多个分区的服务器

IdentityServer - 具有兼容令牌的多个 OAuth 服务器?

具有多个服务器的异步循环