2014-12-24 12 views
6

Sorunun nerede olabileceği gibi bir gereksinimimiz var.Her anahtar için birden çok JVM üzerinden atomik olarak tamsayı güncelleniyor

  • Birden çok anahtar ve her anahtar eşlem bir tamsayıya sahiptir. Bir anahtar bir JVM üzerinde alındığında
  • , sen paylaşılan bellekten int değerini almak bir artıracaktır ve daha sonra paylaşılan hafızada geri arttırılmış değerini koymak gerekir. İki JVMs veya iki iş parçacığı aynı değere okurken JVM herhangi iplik herhangi biri tarafından yapılan herhangi bir artış kaybetmek kalmamak

Yani, daha sonra bunlardan birinin güncelleme, sürekli başarısız olması gerekir.

bir güncelleme, paylaşılan bellekten yeniden okumak başarısız sonra

, sonra değerini ve güncelleme başarılı ya da deneme bazı 'N' tükenmesi kadar sonra tekrar güncelleyin.

Şu anda iyimser kilitlemeli infinispan kullanıyor, ancak davranış tutarlı değil. Lütfen bu iş parçacığının bağlantısını bulun.

https://developer.jboss.org/message/914490

bu gereksinimi için iyi uyum sağlayacak diğer teknoloji var mı. konuları arasında senkronize

+0

Ben makinelerin onlarca üzerinde http://docs.hazelcast.org/docs/latest/manual/html/lock.html kullanmıştı. Bunu düşünebilirsen emin değilim. – Jayan

cevap

1

kolaydır ancak JVM'lerle arasında birden çok platform desteği gerekiyor özellikle de son derece zordur. ,

  • güncelleme görevi yapmak bilen tek sürecinden önemsiz DİNLENME API yayınlama: Ben her ikisi de "sözleşme dışı" veri güncelleme görevi arasında, aşağıdaki yöntemlerden birini kullanarak güncelleme kodu merkezileştirme önermek istiyorum ve istekleri serileştirmek.
  • sayıları saklamak için bir ilişkisel veritabanı kullanın ve emin olun onlar başarılı olmadığında istemci kodu doğru işlemleri geri alır.

Muhtemelen duymak istediğin şey değil, her iki yöntem de işe yarayacak.

İlgili konular