Sanal ortamlar kullanarak Office Grid - Bölüm 4
Giriş
Birçok toplu iş veriler, her gün milyonlarca kaydın işlenmesi ve ben birkaç saat hiçbir şey yapmadan her gün oturup tüm makineler hakkında son zamanlarda düşünüyordum çalıştırmak nerede bir şirkette çalışmak. Bizim sistemlerinin işlem gücü desteklemek için bu makineleri kullanabilir olsa iyi olmaz mıydı? Bu makaleler set ben bir ofis istihdam potansiyel yararları bakmak için gidiyorum ızgara sanallaştırılmış ortamlarda kullanarak.
Yılında part 3 bizim sanal işleme makine oluşturulur ve boşta-zamanlı çalışanlar olmak pencere makineleri kurmak.
En son kod çalıştırma
Kaçınılmaz olarak da işçilerin iş mantığı değişecek oluşturduktan sonra, böcek bulundu olacak, daha hızlı daha verimli kod böylece işçilerin kullanarak veri işleme oturduk bırakarak üretilecek eski kötü kokulu kodu . Peki biz her zaman bizim işleme komut en son ve en iyi sürümü kullandığınızdan emin mi?
Bu yapabileceği bir kaç çok kolay basit yolları vardır, hüner, ancak bu ulaşmada işlem gücü ve ağ trafiğini azaltmak. Çözüm basit ile başlamak ve iterasyon bir çift üzerinde yavaş yavaş artırmak sağlar.
İlk yöntem, sadece işimizi kontrol sunucu (Samba, FTP veya benzeri ile) bağlanmak ve kodunun en son sürümüne yıkmak olacaktır. Henüz çok etkili, ama iş yapacak. Bu biraz geliştirmek, nasıl bir rsync komut dosyası oluşturma ve bunun yerine her zaman kullanma hakkında? Lets Alternatif ne subversion başlangıçta kod kontrol dışarı içine bizim son işlem komut dosyası koyarak ve sonra sadece her çalışma (bizim kod güncelleme hakkında svn update )?
Sonunda biz bu kadar basit görünen bir bash betiği (cron her 10 dakika da denir) ile son olabilir:
#! / Bin / sh eğer ps ax | grep-v grep | grep php > / dev / null o zaman echo "İş, şu anda çıkış işliyor" başka echo "İş çalışmıyorsa, şimdi başlatın" cd / bir / yol / / çalışma kopyası svn update php yourJobProcessingScript.php fi
Şimdi her çalışmaya biz kesinlikle son kod çalıştıran emin olabilirsiniz. Biz kod tabanı bir çalışma gerçekleştirmek her zaman güncellenmesi ve sadece ağ üzerinden dosya farkları aktararak ağ trafiğini azaltarak bu garanti ediyoruz.
Benim gösteri kurulum, ben aynen yukarıdaki gibi yaptım. Subversion işimi işleme sunucu üzerinde yüklü ve sadece 'svn update' kullanarak bir 'işçi' şubesinden son kod çekildi. Ben de sonuç dönüş parçası olarak veritabanına döndü benim işleme komut dosyası için bir sürüm numarası etiket eklendi. Bu şekilde benim kod ben kesinlikle en son işlem komut dosyası çalıştıran olduğu işçi şube yani içine bagajımda kopyalanan her zaman güncellenmekte olduğunu görebiliyordu.
En son verileri kullanarak
İşinizi işleme bir noktada sonra veri kaynaklarından yararlanarak yaparsa bu da güncelleştirilmesi için gidiyoruz. Eğer en kısa zamanda işçilerin durma noktasına getiren şey yayınlanmaya başlaması gibi, trafik ile ağ sel gidiyoruz çok seyrek olarak veri kaynakları aramak sürece. Benim çözüm için ben VM ile etrafında veri kaynakları taşımak istiyorum karar verdi.
Orada atlar sen tut! Benim veri kaynakları BÜYÜK ne olur? Peki bu gerçekten biz ne kadar veri konuşurken bir durumdur? Bu, ek bir işleme sunucu satın almak için daha her makinenin içine bir ek daha büyük sabit sürücü yüklemek için daha uygun maliyetli olabilir. Bu bütçe meselesi ve karar vermek için iş kalmıştır. Bu belki veri kaynakları öyle büyüktür ki bu, bunun için çalışan makinelerde bu miktarın veri tutmak için olanaksız. Bu durumda ne yapardınız? Peki biz yerel bir veri sunucusu arama bakmak olabilir, ancak bu ağ ile sorunlara neden olabilir. Bu durumda böyle bir grid sistemi ofis ortamında eklemek için gerçekçi olabilir. Ayrıca sadece her gece ve / veya azaltma veri kaynağı istekleri 20:00 ile 06:00 arasındaki işçi arama örneğin, alternatif çalışan stratejileri içine bakabilirsiniz olabilir.
Yapalım Hareketli veri 100GB bizim veri kaynakları miktarı söylüyorlar. Evet evet bu bir güncelleştirme ağ dolaşmak için veri yeraldığını var. Nasıl biz bu durumda veri son kopyasına sahip olduğundan emin misiniz? Rsync bir olasılık, ama ben şahsen iş işleme sunucu üzerinde son veri kaynağını çalışan ve çoğaltma konusunda master (güzel bir uzun bin log) olarak ayarlayarak gitmek için yol olabilir düşünüyorum:
Veri kaynaklarına iş denetimi sunucu güncelleştirmeleri bir köle olarak işçilerin her ayarlayarak (Eğer büyük bir veri güncelleme gerçekleştirmek ve tüm işçiler tekme sürece yani ağ etkinliği büyük bir artış olmadan işçilere güzel yavaş yavaş olacak kerede). Bu, her işi önce uzun bir duraklama elde edemeyeceğini belirtti rsync fazla avantajı vardır; veritabanı güncellemeleri gibi mysql işleme devam ederken sizin İşçiye daemon sürekli olarak veri güncelleme olacak.
Bu benim gösteri sunucusu kurmak nasıl olduğunu. Çoğaltma kurmak için ben mySQL sitesinde (on kılavuzu takip çoğaltma kurma ) ve 20 dakika içinde ben iş denetimi sunucuları veri kümesi çoğaltarak benim inital işçisi vardı. VM kopyalanan her bir ilave işçi için çoğaltma ayarları ve süreç her zaman çalıştı.
Özet
Makalenin bu bölümde kolay ve ağrısız bir işi yapmak için rsync using veya subverion (SVN) tarafından bugüne ve aynı time. de ağ trafiğini azaltmak için işlem kodu tutmak için ne kadar baktım Biz de nasıl ele sizin işçilerin her birine vurur olanak sağlayarak veri kaynağı bilgilerini güncel tutmak için. Böylece bölgede bizim ofis ızgara sisteminde iş mantığı ve bilgileri takip sağlamak. Orada açıkça bu görevleri yerine getirmek için sayısız alternatif olabilir, ama burada bir çözüm gelmek ne kadar kolay olduğunu göstermek için basit iki örnek vardı olacaktır.
Bir dahaki sefere
Aptly adlı bu dizi, en son bölümünde Bölüm 5 , biz bu sistemi dağıtma ele alacağız. Ben yaratmayı başarmış öğrendim olmuştur ve ne özetlemeye olacak.

















































