2010-04-28 18 views
6

High-Latency, Low-Bandwidth Windowing in the Jupiter Collaboration System okumayı bitirdim ve çoğunlukla her şeyi 6 bölümüne kadar takip ediyorum: global tutarlılık. Bu bölüm, kağıtta açıklanan sistemin sunucuya bağlı birden çok istemci için nasıl genişletilebileceğini açıklamaktadır. Bununla birlikte, açıklama çok kısadır ve esas olarak, merkezi sunucunun istemci mesajlarını diğer tüm istemcilere iletmesi durumunda sistemin çalışacağını söyler. Bunun nasıl çalıştığını gerçekten anlamıyorum. Diğer tüm istemcilere gönderilen iletide hangi durum vektörü gönderilecek? Sunucu, her müşteri için ayrı durum vektörlerini koruyor mu? Her istemci için yerel olarak widget'ların ayrı bir kopyasını tutar mı?Çoklu istemcilerle gerçek zamanlı işbirliği, merkezi bir sunucuyla işlem dönüştürmelerini kullanarak bir sistemde nasıl çalışır?

Düşünebildiğim basit örnek bu kurulum: İstemci A, sunucu ve istemci B'yi hem sunucuya bağlı istemci A hem de istemci B ile düşünün. Başlamak için, her üçü de "ABCD" durum nesnesine sahip. Daha sonra, A müşterisi, "B pozisyonunu, 0 pozisyonuna F ekleyiniz" mesajını gönderir, aynı zamanda, B müşterisi, sunucuya "pozisyon 0'da G karakterini sokun" mesajını gönderir. İstemci A iletisini istemciye (B) iletmek gibi görünüyor ve tersi de aslında bu davayı ele almıyor. Peki sunucu tam olarak ne yapıyor?

cevap

5

Bunun nasıl işe yaradığını anladım. Örneğimde, sunucu hem istemci A hem de istemci B için bir durum alanı tutar. Sunucunun istemci A iletisi alması durumunda sunucu, durum vektörüyle (0, 0) mesaj alır, F ekler ve durum vektörlerini günceller. A ve B için sırasıyla (1, 0) ve (0, 1) olmak (ilk sayının işlenen istemciden gelen ileti sayısıdır ve ikincisi, sunucudan alınan iletilerin sayısıdır) işlenmiş). Sunucu daha sonra "0 pozisyonuna F ekle" yi durum vektörüyle (0, 0) gönderir (bu, mesaj sunucu tarafından alındığında B durum alanında sunucunun haliydi) ve "0 pozisyonunda G'yi yerleştir" olur B ile gönderilen hal (0, 0). Sunucu B durum alanında (0, 1) durumdayken, ilk önce iletiyi (ve benzer şekilde, B'nin sunucunun mesajını aldığında B (1, 0) olduğu için dönüştürür. sunucu). Çünkü dönüşümler, xform (c, s) = (c ', s') ise, c 'nin s eşittir s' ye uygulanması durumunda c, B'ye ve sunucunun aynı durumda kalması için kurulmalıdır. Aynısı, sunucunun B'den aldığı mesaj ile gerçekleşir ve daha sonra A.'ye gönderir.

+0

Kimliğin açık olmaması durumunda, bu durum, sunucu için "A" ve "B" arasında bir "vekil istemci" görevi görür. a '('a')' a '' den bir op ve a ''' '' '' '' '' '' '' '' '' '' ('''''''nün kendisi, op’un kendisi tarafından üretilirmişçesine '' olarak adlandırılır. Sunucu, daha sonra hem A'nın hem de B'nin işlem sıralarının kopyalarını içerirken, “A” ve “B” sadece sunucu işlem sırasının bir kopyasına sahiptir. Daha fazla okuma için, * Eşzamanlılık Denetimi * Grup Yazılımlarında * Eşzamanlılık Denetimi ve * Dağıtılmış İşlemsel Dönüşüme Karşı Bir Örnek ve Noktadan Noktaya İletişim için Düzeltilmiş Algoritma * bölümüne bakın. – mzhang

İlgili konular