To je dalsi zajimavy hint. Ne tedy pro moje pouziti. To by asi nezvladly
ftp servery, mailservery, ... :)
Pet
Martin Kuba napsal(a):
Oto Buchta wrote:
Jenom doplnim, ze v Jave se v distribuovanem prostredi s uspechem
pouziva nekolik reseni:
- JMS queue a v onMessage() pak synchronizovany blok
- synchronizovane EJB Counter ;-)
- a spousta dalsich reseni postavenych na principu klient-server :-D
- lze vyuzit exkluzivitu JNDI bindu: neni mozne bindnout jiz
bindnutou hodnotu, je treba rebind. V tomto pripade seqence
bind(lock)->get(value)->value++->rebind(value)->unbind(lock) funguje
jako atomicky "take" znamy ze spaceovych systemu (TupleSpace,
Jini,STITCH,...)
Nelze-li pouzit centralizovanou spravu, pak lze pouzit nektery z
klasickych algoritmu pro volbu vedouciho a toho pak docasne prohlasit
za centralu.
Když už jsme se dostali v teorii až k distribuovanému prostředí,
tak ještě doplním, že centrální místo generující jednoznačné
identifikátory nemusí být vždycky použitelné řešení. Pak
lze použít tzv. UUID (universally unique identifier), od Javy 1.5
implementovaný třídou
java.util.UUID, viz
http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html
která dokáže generovat jedinečné identifikátory i bez
centralizovaného řešení. Využívá k tomu různé věci, jako
MAC adresu síťové karty, aktuální čas a náhodně generovaná čísla.
Makub