SORU
2 Temmuz 2011, CUMARTESİ


Nasıl'In LMAX topu desen işe yarıyor mu?

disruptor pattern anlamaya çalışıyorum. İnfoQ videoyu izledim ve gazeteyi okumaya çalıştım. Halka arabelleğinde yer var, önbellek mevkiinde yararlanmak, yeni bellek ayırma ortadan kaldırmak için son derece büyük bir dizi olarak başlatılmış olduğunu anlıyorum.

Pozisyonu takip eden bir ya da daha fazla atom tamsayılar var gibi geliyor. Her 'olay' benzersiz bir kimliği almak gibi görünüyor ve ringe konumunu yüzüğün büyüklüğüne göre kendi modülü bularak bulundu, vb., vb.

Ne yazık ki, nasıl sezgisel bir anlamı yok. Birçok ticaret uygulamaları yaptım ve actor model, SEDA baktı, vb okudu.

Onların Tanıtımı Bu desen yönlendiriciler temelde nasıl çalıştığını belirtti; ancak yönlendiriciler ya da nasıl çalıştığını iyi açıklamaları bulamadım.

Daha iyi bir açıklama için bazı iyi işaretçiler var mı?

CEVAP
3 Temmuz 2011, Pazar


Google Code proje reference a technical paper biraz kuru, akademik ve zor olduğunu ancak halka tampon, uygulanması birisi nasıl çalıştığını öğrenmek isteyenler için devam ediyor. Ancak daha okunaklı bir şekilde iç açıklamaya başladı bazı blog yazıları var. Bomba tahrip kalıbı, description of the consumer barriers (Bölüm bozucuyu okuma ile ilgili) çekirdek ve information on handling multiple producers bazı kullanılabilir explanation of ring buffer var.

Disruptor. en basit açıklama en verimli şekilde iş arasında mesaj göndermek mümkün bir yoldur. Bir sıra alternatif olarak kullanılabilir, ama aynı zamanda SEDA ve oyuncularla bir dizi özellik paylaşır.

Sıralarına göre:

Bozucuyu başka bir iş parçacığı üzerine bir mesaj, gerekirse uyanma aktarma yeteneği (bir BlockingQueue benzer) sağlar. Ancak 3 belirgin farklılıklar vardır.

  1. Bozucuyu kullanıcı iletileri Giriş sınıfının genişletilmesi ve preallocation yapmak için bir fabrika sağlayarak saklanacağını tanımlar. Bu da bellek yeniden (kopyalama) veya Girişin başka bir nesne için bir referans içerebilir sağlar.
  2. Parçalayıcının içine mesaj koymak için 2 aşamalı bir süreç, ilk yuvasına uygun veri ile dolu olabilir Giriş ile kullanıcı sağlayan halka arabelleği, iddia edilmektedir. Giriş kararlı olmalı, 2 fazlı bu yaklaşım, esnek bellek kullanımı yukarıda bahsedilen izin vermek için gereklidir. Bu ileti tüketici konuları görünür kılan işlemek.
  3. Tüketici sorumluluğu halka arabelleği tüketilen bu mesajları takip edin. Halka arabelleği uzak bu sorumluluk taşımadan, her iş parçacığı kendi sayaç tutar gibi yazmak çekişme miktarını azaltmak kendisi yardım etti.

Aktörlere göre

Aktör modeli özellikle sağlanan BatchHandler sınıflar/BatchConsumer kullanırsanız daha yakın diğer bir çok programlama modelleri daha Yıkıcı. Bu sınıflar tüketilen sıra numaraları sürdürmenin karmaşıklığı tüm gizlemek ve önemli bir olay meydana geldiğinde geri basit bir dizi sağlar. Ancak, küçük farklar bir çift vardır.

  1. Bozucuyu kullanan bir iş parçacığı 1 - 1 tüketici modeli, nerede Aktörler kullanmak N:M model yani alabilirsin gibi birçok aktör olarak senin gibi ve onlar arasında dağıtılmış bir sabit sayı konu (genellikle 1 çekirdek başına).
  2. BatchHandler arabirimi 0* *(çok önemli) ek bir geri arama sağlar. Bu yavaş tüketiciler, örneğin bu yaptığım/O olayları birlikte verimi artırmak için toplu izin verir. Bu mümkün harmanlama diğer Aktör çerçeveleri, ancak neredeyse tüm diğer çerçeveler yok sağlayan bir geri arama sonunda toplu ihtiyacın kullanmak için zaman aşımı belirlemek için end parti, sonuç olarak fakir gecikme.

SEDA kıyasla

LMAX SEDA dayalı bir yaklaşım yerine Topu desen kurdu.

  1. SEDA üzerinde sağladığı ana gelişme paralel olarak iş yapabilmek için. Bunu yapmak için Bozucuyu multi-döküm aynı mesajları (aynı sırada) birden çok tüketiciler için destekler. Bu boru hattı çatal aşamaları ortadan kaldırır.
  2. Biz de tüketicilerin aralarında bir sıralama sahneye koymak zorunda kalmadan diğer tüketiciler sonuçlarını beklemek izin. Bir tüketici sadece bağımlı olan bir tüketici sıra numarası izleyebilirsiniz. Bu boru hattı birleştirme aşamalarını ortadan kaldırır.

Hafıza Bariyerleri göre

Bunu düşünmek için başka bir yol yapılı, sipariş bellek engel olarak. Yapımcı bariyer oluşturduğu bariyer yazma ve tüketici bariyer okumak engeldir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009
  • PoreoticsHD

    PoreoticsHD

    22 NİSAN 2010
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007