JGroups

JGroups, Java dilinde yazılmış bir kayıpsız çok yöne yayın sistemidir.

Çok yöne yayın 

Bir veya bir grup makine arasında iletişim için birkaç yöntem vardır:

 Tek yöne yayın: Bu yöntemde, her mesajın sadece bir kişiye ulaştırılabilir. Dolayısıyla aynı mesajı birkaç kişiye göndermek için o mesajın birkaç kopyasını çıkartmak ve her gönderilecek makineye teker teker gönderilmesi gerekir.
 Çok yöne yayın: Bu yöntemde, bir gruba gelen mesajları almak isteyen bir makine öncelikle grubun adresine kaydolur. Dolayısıyla, gruptaki tüm makinelere aynı mesajı yollamak için mesajı grubun adresine sadece bir kez yollamak yeterlidir.
 Her yöne yayın: Bu yöndemde, her mesaj ağdaki tüm makinelere yollanır. Her makine ise ilgisini çekmeyen mesajları kendisi siler.

TCP/IP, standart olarak birçok yöne yayın sistemi sunar (IGMP) ve JGroups da ilk başta bir IP çoklu yöne yayınına kolaylıkla abone olmak, mesaj almak, mesaj göndermek ve aboneliği iptel etmek için yazılmıştır. Dolayısıyla, şu özelliklere sahip idi:

 IP çoklu yöne yayın gruplarının yaratılması ve yok edilmesi. Bu gruplar, büyük ağlar arasında paylaştırılmış olabilir.
 Bu gruplara abone olunması ve aboneliğin iptal edilmesi.
 Grup içinde mesajlaşma. Öte yandan, bu mesajlaşma kayıplıdır (yani mesajlar kaybolabilir).

JGroups'un eklentileri 

IP çoklu yöne yayını birçok uygulamada kullanılmaktadır:

 Gerçek zamanlı ses veya video yayını: bu durumda, bir mesaj kaybı çok önemli değildir zira zaten önceki ve sonraki mesajlardan kaybolan veri "yaratılabilir". Zaten insanlar da bu yayının mükemmel olmasını beklememektedirler.
 Routerların senkronizasyonunu sağlayan OSPF protokolü: bu durumda, mesaj kaybı bir soru değildir zira routerlar "sıkı" bir şekilde bağlı olduklarından aralarında paket kaybetmemeleri beklenir.

Bu uygulamalar veri akışına ihtiyaç duymadıkları için IP çoklu yöne yayını kayıplı ve sıralama olmayan bir protokoldür. Dolayısıyla JGroups hızlı bir şekilde daha kullanışlı ve esnek bir yapı haline getirilmiştir:

 Birçok protokol arasından seçim: UDP, TCP veya JMS.
 Gelen ve giden abonelerin tespiti.
 Cevap vermeyen (çökmüş) makinelerin tespiti ve gruptan çıkartılması.
 Kayıpsız ve sıralı mesajlaşma.
 Noktadan noktaya mesajlaşma.
 Büyük mesajların otomatik bölünmesi.
 Atomik (ya hepsi ya hiçbiri), FIFO ve tamamen sıralı mesaj değişimi.
 Şifreleme.
 vs.

Dolayısıyla JGroups, birkaç makine arasında iletişim kurmaya yarayan ve senkronizasyon, talep dağıtımı veya sorun halinde yer değişimi gibi işlemleri kolayca yapmaya yardımcı olan bir protokoldür.

Kullanımlar 

JGroups birçok uygulamada kullanılmaktadır:

 Hem JBoss hem de JOnAS paylaştırılmış sunucu mimarisinin yönetimi ve önbelleğin dağıtımını JGroups vasıtasıyla yapıyor.
 GroupPac (CORBA'nın sorunlara dayanıklı sürümünün bir uyarlaması) JGroups kullanmaktadır.
 Autodesk LocationLogic JGroups'u önbellek kopyalama mekanizmasında kullanmaktadır.
 vs.

Kaynakça 
 JGroups web sayfası 
 JGroups'ta yapılmış basit bir talep dağıtıcısı 

İnternet protokolleri
Java