Büyük veri Cron

5 Cevap php

Ben Friendfeed gibi sosyal ağ üzerinde çalışıyorum. Kullanıcı kendi besleme bağlantıları eklediğinizde, ben her kullanıcı besleme ayrıştırmak için bir cron işi kullanın. Bu o sorunlara neden olacaktır 10.000 bağlantıları her saat ayrıştırma veya benzeri, kullanıcıların çok sayıda ile mümkün mü? Bu mümkün değilse, bunu ne için Friendfeed veya RSS okuyucuları kullanılır?

5 Cevap

Sorunuza donanımınız hakkında bazı bilgileri ekleyerek düşünebilirsiniz, bu uygulama dönüşebilecek nasıl kolayca size tavsiyelerde isteyen birisi için büyük bir fark yaratıyor.

Eğer linkler milyonlarca ayrıştırma sonunda ise, büyük bir cron işi sorunlu olmaya devam ediyor. Ben (muhtemelen gerekir, değilse) Eğer aşağıdaki yapıyorsun varsayarak yaşıyorum:

  • Kullanıcıların aynı beslemesine abone zaman iki kere getiriliyor önlemek için, fark.
  • Yeni bir yem alınırken, mantıklı bir aralıkta bu değer yeniden ziyaret, yem değiştirme olasılığı ne kadar sıklıkta söyler Bir site haritasının varlığını kontrol
  • Zaman 'geri çekil' ve bir süre uyumaya bilmek sistem yükü ve bellek kullanımını kontrol etme.

Bu, bir saat cron üretecektir ter miktarını azaltır.

Eğer beslemeleri milyonlarca hasat iseniz, muhtemelen bu işi, sen hala veritabanı desigining yaparken akılda tutmak isteyebilirsiniz şey dağıtmak isteyeceksiniz.

Yine, kullanan ve ne kadar büyük ölçekli bir çözüm ihtiyacı olan donanım ayrıntıları ile sorunuzu güncelleyin. Hiçbir şey :) bu yüzden gerçekçi olun, 'sonsuz' ölçekler

Bu tasarımı iyi olup olmadığını yargılamak için oldukça yeterli bilgiye sahip değiliz, ama 10k sorular üzerine bazı çok yoğun işlem yapıyoruz sürece, temel soruyu cevaplamak için, bu işlemek için bir saatlik cron iş için önemsiz olmalıdır.

Eğer beslemeleri işlemek nasıl hakkında daha fazla bilgi, ve özellikle süreç beslemeleri ve kullanıcı başına yemlerin sayıda kullanıcı sayısına göre ölçekler nasıl, size daha fazla tavsiye vermek yararlı olacaktır.

Sizin sınırlayıcı faktör bu 10.000 yayınlara ağ erişim olacaktır. Sen (yaklaşık 350ms gecikme ortalama gerekir ediyorum) bir saat içinde 10.000 yapılacak seri ve büyük olasılıkla beslemeleri süreç olabilir.

Tabii ki şeyleri hızlandırmak için aynı anda işi birden fazla süreç var isterdi.

Eğer başarı (umarım ki) karşılamak eğer seçmek her ne çözüm, performans sorunu olacak.

FF kurucusu söyledi birçok kez: tek çözüm en iyi gerçek çözümü seçmek için / tedbir profile etmektir. Numaraları ile seçim açık olacak.

Yani: bir test beklenen yakın mimari (= gerçekçi) bir kaç ay ve profil / ölçüde durum oluşturmak.

Bu gibi büyük veri işler için IronWorker kontrol dışarı düşünebilirsiniz. Bunun için yapılmış ve bir servis beri sunuculara veya ölçek ile uğraşmak gerekmez. Bu yüzden her saat çalıştırmak için bir işçi görev zamanlama olacağını ve bu görevi daha sonra 10.000 diğer işleri sıraya ve paralel hepsini çalıştırabilirsiniz inşa ÇİZELGELEME etti.