Multithreading 在多实例应用程序环境中防止重复条目

Multithreading 在多实例应用程序环境中防止重复条目,multithreading,facebook,jdbc,concurrency,server-side,Multithreading,Facebook,Jdbc,Concurrency,Server Side,我正在编写一个为facebook API服务的应用程序;分享,分享等。。我从数据库中的应用程序中保留所有这些共享对象,如果已共享,我不想共享同一对象 考虑到我将在不同的服务器上部署应用程序,可能会出现两个实例都试图向表中插入相同对象的情况 如何通过完全阻塞应用程序来管理此并发问题?我的意思是两个线程将尝试插入相同的对象,它们必须同步,但它们不应该阻止第三个线程插入完全不同的对象 若有一种方法可以从数据本身派生出数据项的主键,那个么数据库将自行解决此类并发问题——第二次插入将因“主键约束冲突”而失

我正在编写一个为facebook API服务的应用程序;分享,分享等。。我从数据库中的应用程序中保留所有这些共享对象,如果已共享,我不想共享同一对象

考虑到我将在不同的服务器上部署应用程序,可能会出现两个实例都试图向表中插入相同对象的情况


如何通过完全阻塞应用程序来管理此并发问题?我的意思是两个线程将尝试插入相同的对象,它们必须同步,但它们不应该阻止第三个线程插入完全不同的对象

若有一种方法可以从数据本身派生出数据项的主键,那个么数据库将自行解决此类并发问题——第二次插入将因“主键约束冲突”而失败。也许,Facebook API提供的数据已经有了一些唯一的ID


或,您可以考虑一些分布式锁解决方案,例如基于HAZELCAST或类似的数据网格。这将允许不同JVM共享记录状态,因此可以避免不必要的

插入

如果有一种方法可以从数据本身派生数据项的主键,数据库将自行解决此类并发问题——第二次插入将失败,并出现“主键约束冲突”。也许,Facebook API提供的数据已经有了一些唯一的ID?确实如此。我在想其他一些神奇的事情,但似乎这是唯一的办法。我可以设置为答案,如果你写这作为一个答案,但不是评论。