Kategori: Grid Hesaplama

Sanal ortamlarda kullanarak Office Grid Hesaplama - Bölüm 4

By , Cuma 4 Aralık 2009 11:59

Giriş

, Biz her gün milyonlarca veri kayıtları işleme birçok toplu işlerde çalıştırmak ve her sayfanın etrafına oturur ve her gün birkaç saat hiçbir şey yapmadan tüm makineleri ile ilgili son zamanlarda düşünüyordum bir şirkette çalışıyorum . Sistemlerinin işlem gücünü artırmak amacıyla bu makineleri kullanmak eğer iyi olmaz mıydı? Bu yazı bir ofis istihdam potansiyel faydaları bakmak için gidiyorum ızgara sanallaştırılmış ortamlarda kullanarak.

Part 3 sanal işleme makine ve windows makinalarda boşta zamanlı işçileri olmak için kurdu.

En son kod çalıştırma

Kaçınılmaz olarak işçilerin iş mantığı oluşturduktan sonra değişecek, hatalar olacaktır, daha hızlı, daha verimli kod böylece işçilerin kullanarak veri işleme etrafında oturdu bırakarak eski kötü kokulu kodu . Biz her zaman işleme betikleri son ve en büyük sürümü kullanıyorsanız o zaman nasıl sağlarım?

Biz bunu bir kaç çok kolay basit yolları vardır, hüner, ancak, ulaşmada işlem gücü ve ağ trafiğini azaltmak için. En basit çözümleri ile başlar ve bir kaç iterasyon içinde yavaş yavaş artırmak sağlar.

İlk yöntem, sadece bizim işimiz kontrol sunucusu (Samba, FTP veya benzeri üzerinden) bağlanmak ve kod en son sürümünü aşağı çekmeye olacaktır. Çok etkili, ama bu işi yapacak. Biraz rsync komut dosyası oluşturma ve bunun yerine her zaman kullanarak nasıl? Geliştirmek sağlar Alternatif olarak ne subversion başlangıçta kod kontrol içine en son işleme komut dosyası koyarak ve daha sonra her çalışması (kod güncelleme hakkında svn update) ?

Sonuçta biz bu kadar basit görünen bir bash betiği (cron her 10 dakikada bir olarak da adlandırılır) ile bitebileceğini:

  #! / Bin / sh
 eğer ps ax | grep-v grep | grep php > / dev / null
 o zaman
     echo "İş şu anda, çıkış işleme"
 başka
     echo "İş çalışan değil, şimdi başlat"
     cd / yol / / / fotokopi
     svn update
     php yourJobProcessingScript.php
 fi 

Şimdi her çalışmaya biz kesinlikle son kodu çalıştırdığınız emin olabilirsiniz. Biz bir çalışma gerçekleştirmek her zaman bizim kod tabanı güncelleme ve ağ üzerinden dosya farkları aktarımı ile ağ trafiğini azaltarak sağlamak demektir.

Benim gösteri kurulum, aynen yukarıda. Subversion işimi işleme sunucu üzerinde yüklü ve ben sadece bir 'işçi' şube 'svn update' kullanarak son kod çekti. Ben de sonuçları döndüren bir parçası olarak veritabanı geri döndü işleme komut dosyası için bir sürüm numarası etiketi ekledi. Bu şekilde benim kod ben kesinlikle en son işlem komut dosyası çalıştıran işçi şube yani benim gövde kopyaladığınız her zaman güncellenmektedir olduğunu görebiliyordu.

En son verileri kullanarak

Bir noktada işinizi işleme veri kaynakları kullanımı yaparsa bu da güncellenmiş olacak. , En kısa sürede işçilerin durma her şeyi getirerek yayınlanmaya başlaması gibi, trafik ile ağ sel gidiyoruz bir çok seyrek olarak, veri kaynakları gerektirmediği sürece. Benim çözüm için ben, benim veri kaynakları etrafında benim VM'ler taşımak için istediğiniz karar verdi.

Orada atlar konum tutun! Benim veri kaynakları BÜYÜK ne olur? Peki, bu gerçekten ne kadar veri konuşurken bir durumdur ? Bu ek bir işleme sunucu satın almak için daha uygun maliyetli, her makinenin içine ek bir büyük sabit disk yüklemek için olabilir . Bu bütçe bir sorudur ve karar vermek için iş kadar. Bu veri kaynakları belki bu kadar büyük olduğunu, işçi makineleri bu miktarda veri tutmak için sadece unfeasible . Böyle bir durumda ne yapardınız? Eh biz yerel bir veri sunucusu arama bakmak olabilir, ancak bu ağ ile ilgili sorunları neden olabilir. Bu durumda böyle bir ızgara sistemi, ofis ortamında yer gerçekçi olabilir . Aynı zamanda, örneğin sadece 20:00 ve 06:00 her gece ve / veya azaltma veri kaynağı istekleri arasında işçileri çağırarak, alternatif stratejileri içine bakabilirsiniz olabilir .

Moving on veri 100GB veri kaynakları miktarı Diyelim ki. Evet iyi ki bir güncelleştirme ağ dolaşmak için biraz veri bulunuyor. Nasıl biz bu durumda veri son kopyasına sahip olduğunuzdan emin olmak istiyorsunuz? Rsync bir olasılık, ama şahsen ben iş işleme sunucu üzerinde çalışan ve en son veri kaynağı olarak çoğaltma (güzel bir uzun bin günlük) bir master kurma gitmek için bir yol olabilir düşünüyorum:

çoğaltma , Veri kaynakları, iş kontrol sunucu güncellemeleri her işçi için bir köle olarak kurma ağ etkinliği büyük bir artış olmadan (büyük bir veri güncelleme gerçekleştirmek ve tüm işçileri tekme sürece işçiler için güzel yavaş yavaş olacak bir kerede). Veritabanı güncellemeleri gibi, bu her iş önce uzun bir aradan elde edemeyeceğini belirtti rsync üzerinden avantajları mysql işleme devam ederken işçinin üzerinde daemon sürekli veri güncelleme olacak.

Bu benim gösteri sunucusu kurmak. Çoğaltma kadar ayarlamak için mySQL sitesinde kılavuzu (takip çoğaltma ayarlama ) ve 20 dakika içinde iş kontrolü sunucuları dataset kopyalayan örneğe cilalama işçi vardı. VM kopyalanan her ilave işçi için çoğaltma ayarları ve süreç her zaman çalıştı.

Özet

Ayrıca makalenin Bu bölümde kolay ve ağrısız bir işi yapmak ve aynı time. ağ trafiğini azaltmak için rsync using veya subverion (SVN) tarihe göre işlem kodu ayak uydurmak için nasıl baktı nasıl tartıştı işçilerin her damla izin vererek veri kaynağı bilgilerini güncel tutmak için. Böylece bu alanda iş mantığı ve bilgi ile ofisimize ızgara sistemi durumda kalmasını sağlamak. Orada tabii ki bu görevleri yerine getirmek için sayısız alternatiflerin, ama burada bir çözüm bulmak ne kadar kolay olduğunu göstermek için iki basit örnek.

Bir dahaki sefere

Bölüm 5 aptly adlı bu serinin, son bölümünde ise , biz bu sistemi dağıtma ele alacağız. Ben oluşturmak için ne olduğunu öğrendik ne oldu özetlemek ve olacak.

Sanal ortamlarda kullanarak Office Grid Hesaplama - Bölüm 1

By , Cuma 4 Aralık 2009 11:23

Giriş

, Biz her gün milyonlarca veri kayıtları işleme birçok toplu işlerde çalıştırmak ve her sayfanın etrafına oturur ve her gün birkaç saat hiçbir şey yapmadan tüm makineleri ile ilgili son zamanlarda düşünüyordum bir şirkette çalışıyorum . Sistemlerinin işlem gücünü artırmak amacıyla bu makineleri kullanmak eğer iyi olmaz mıydı? Bu yazı bir ofis istihdam potansiyel faydaları bakmak için gidiyorum ızgara sanallaştırılmış ortamlarda kullanarak.

Farklı PHP geliştiricisi Ben, yani her gün Linux kullanıyorsanız bu araçları kullanmak için gidiyorum mySQL , PHP, VirtualBox ve Subversion (SVN). Ancak ben bu kılavuzun yanı sıra diğer diller ve teknolojiler adapte olacak umuyoruz.

Sağlayan çözümü çok gevşek tür basitlik için bir şeyleri değiştirmek, ya da daha ilginç kullanım senaryoları üretmek için makalenin tamamının üzerinden bu doğru olmayabilir ancak elde etmek gerekiyordu işleme dayalı olacaktır.

Bu sanallaştırılmış ortamlarda bu ofislerin çoğunluğu çalıştırmak ne olduğundan windows üzerinde çalışır. Büro makineleri kadrosu ile bu makineleri kullanarak müdahale etmemelidir bu işleme, makine herhangi bir bakım gerektirir ve kullanılabilir olduklarında yeni makinelere kolayca konuşlandırılabilir. Ayrıca, yeni sanal makineler hangi grid sistemi uzatılabilir ölçeklenebilirlik ve kolay bu büyük ölçüde azaltır olarak herhangi bir ek yapılandırma gerektirmez.

Neden bir Office Bilgisayar Izgara dağıtın?

Öncelikle düşünce olabilir, neden böyle bir bulut bilgi işlem kaynağı kullanmak Amazon EC2 platformu değil ? Peki nedenlerle, örneğin, çeşitli olabilir:

  • Bir bulut bilgi işlem ortamı belirli veri emanet
  • Potansiyel yasal nedenlerle, örneğin NHS kayıtları için yasal nedenler (örneğin, veri ülkeyi terk), belirli bir bulut bilgi işlem ortamı içine veri koyamazsınız.
  • Işleme birimleri, çok yakın ve donanım üzerinde tam kontrol tutmak istiyorum
  • Bu bulut örneklerini çalıştırmak için proje fon yok
  • Ofisiniz internet bağlantısına sahip değildir ve bu nedenle olası bir bulut kaynak kullanımı
  • Yağmur, bulutlar yağmur önermek, bu nedenle de uzak tutun sevmiyorum

Listesini devam edebilir emin değilim, ama şu an için yeterli olduğunu düşünüyorum.

Bir Office Computing Grid avantajları

Eh, biraz matematik yapmak (ve gerçek fizik tarzı süpürme bazı varsayımlar yapmak sağlar) sağlar. Büyük etli işleme sunucusu günde 100 iş çalıştıran düşünün. Ofisinizde, günde 16 saat, bu makinelerin her biri% 10 adeleli işleme sever gibi güçlü olan atıl 50 makineleri var. (Tüm sonuçlar burada performans artışı hafife yuvarlanır).

Yani, 1 makine boşta kalma süresi% * 10 * 2 / 3 = 0,067 yani 1 masaüstü işlemci güç günde 6 tam işler süreç olabilir.

Şimdi bu kadar ölçekli ana işlem sunucu gibi Hergün çok sayıda işlerini işlemek için 15 boşta masaüstü alır .

Yani 50 makineleri taklit 4 tam işleme sunucularına kadar 1 sunucu işlem gücü artırmak, ya da biz yerine 100 günde 400 iş işleme olabilir.

Bildirim, yeni donanım herhangi bir yatırım için şirket sadece 4 kez toplu işleme kapasitesi arttı! Potansiyel güç kullanımını artırmak için gidiyoruz ama ben makinelere oldum çoğu ofis ortamları genellikle gecede yine sol, bu yüzden yeşil bir girişim olarak bu görebiliyordu.

Başka avantajları da büro makineleri yeterli ve büro makineleri gücünü arttırmak gibi ofis ızgara otomatik olarak daha güçlü hale gelir, eğer bu yatırım yeni (veya güncellenmiş) işleme sunucuları gecikebilir anlamına gelir.

Teknolojileri

Nelere ihtiyacınız var? (Ya da ben ne yaptım doğru):

  • Boşta büro makineleri (benim durumumda bir yedek eski Windows XP dizüstü)
  • VirtualBox (veya başka bir sanallaştırma istemci yazılımı)
  • OS aşağı bir kesim PHP, mySQL running ile çalışan bir sanal makine, ben, bu benim Limp sunucuları aradığım: )
  • Çalıştırmak için işler
  • İş sunucusu (bir yerde başka bir sanal makine olabilir)

Tipik İş

Bu sistemi çalıştırmak için tasarlanmış olduğunu işlerin türleri aşağıdaki gibidir:

  • Sistem maç ve sonuçları dönmek için gereken dayandığı verilerin bir listesini alır
  • Eşleştirme kontrol / birden fazla (oldukça statik) veri kaynakları arıyor
  • Sonuçlarına tepki olarak, ek veri kaynakları kontrol birleştirme veri kaynaklarından elde edilen sonuçlar, daha fazla doğrulama isteyebilir
  • Veri tam olarak doğrulanmış ve işlenmiş eşleşen kayıtlar ile geri döndü
  • Her kayıt bir iş içinde geri kalanından bağımsız

Yani temelde veritabanı sorguları ve bazı Yoğun bir iş ortamı oldukça Tipik bir senaryoda bir karışımı gerektiren işlerde çalışan arıyoruz.

Izgara çözümler, sadece bu tip işler işlemek için avantajlı değildir. Temel olarak, bağımsız birimler ayrılabilir herhangi bir işlem paralel olarak çalıştırılabilir. Bu wikipedia örnekler ve daha fazla bilgi için bakınız: Grid Hesaplama , ancak ünlü örneklerinden bir çift Seti @ Home ve BIONC . Orada bilgisayar ızgaraları çalıştırmak için çerçeveler ve bu kuyunun içine bakarak değer vardır.

Ne elde edecek?

Bu maddelerin sonuna kadar bir ofis ızgara dağıtma derece pahalı ve zaman alıcı gerek olmadığını göstermeyi umuyoruz. Tartışmak için gidiyorum:

  • Iş denetim sistemi kurmak, iş yapılandırma
  • Uygun bir işleme sanal makine oluşturmak
  • Nasıl bir windows makineye sistem kurulumu
  • Son kod ve veri kullanıyorsanız sağlanması
  • Dağıtım ve kıyaslama
  • İleriye dönük

(Ok, daha sonra inşa edilen bu yazdı), Windows XP ve benim 'GridMachine' sanal makine kullanarak bir yerel makine üzerinde kavramları test etmek için örnek bir uygulama bina olacak. Benim işim kontrol sunucu çalışır benim ana makine olacak Fedora 11 .

Bu tamamen çalışan sağlam bir sistem göstermek anlamına hiçbir şekilde, bir gösteri daha fazla ve bu şeyler makul bir süre kısa bir sürede ve az maliyetle elde edilebilir gösteren tartışırken anlamına geliyordu. Lütfen bana herhangi bir yorum, düzeltme veya iyileştirmeler göndermek için çekinmeyin ve eşleşecek şekilde güncelleştirilir Bu yazı tutmak için elimden geleni yapacağım.

Bir dahaki sefere

Bölüm 2 iş kontrol sistemi bakarak başlayacak ve işler her iş mutlaka işlenmiş olduğunu sağlarken işleme büyük miktarda elde etmek için nasıl yapılandırılmalıdır içine bakmak.

Sanal ortamlarda kullanarak Office Grid Hesaplama - Bölüm 2

By , Cuma 4 Aralık 2009 11:23

Giriş

, Biz her gün milyonlarca veri kayıtları işleme birçok toplu işlerde çalıştırmak ve her sayfanın etrafına oturur ve her gün birkaç saat hiçbir şey yapmadan tüm makineleri ile ilgili son zamanlarda düşünüyordum bir şirkette çalışıyorum . Sistemlerinin işlem gücünü artırmak amacıyla bu makineleri kullanmak eğer iyi olmaz mıydı? Bu yazı bir ofis istihdam potansiyel faydaları bakmak için gidiyorum ızgara sanallaştırılmış ortamlarda kullanarak.

Bölüm 1 genel bir sistem ve teknolojilerin yanı sıra, bir ofis ızgara oluşturmak istiyorsanız neden bazı potansiyel nedenleri anlatıldığı gibi kullanıyor olacak verdi .

İş Denetimi

Işlerde çalışan gidiyoruz Eğer bunları yönetmek için bir yol ihtiyacı için gidiyoruz. Iş kontrol sistemi (iş sunucuda) gerçekten iyi bir ofis ızgara bile çalıştırmak için denemeden önce düşünülmüş olması gerekiyor. Yani öncelikle iş kontrol sistemi için, görevleri nelerdir:

  • Işçi talebi üzerine elini işler
  • Ne tür işler çalıştırmak için işçi söyle
  • Parça işler
  • Işler sadece bir kez çalıştırmak olduğunu olun
  • Işçiler için iş veri sağlamak, ya da en azından nereden onlara

Sistem aynı zamanda genişletilebilir, iş ızgara çözüm değerinde gördüğü gibi çeşitli işlerde çalıştırmak uzatılabilir tek bir durumda, şu an için çalışır bir çözüm olması gerekir. 'Genel işçi uzaklaşmaya rağmen Örneğin, (yani birkaç kod bazlar) işler, öncelikleri elde edebilir, birden fazla iş türü mevcut olabilir, sonunda, hatta (her tür iş için optimize edilmiş birçok farklı işçi makineleri çalıştırmak olabilir 'fikir). Her zaman sistemlerinin geliştirilmesi, gelecek hakkında düşünmeye çalışın, kısa vadeli bir vizyon, uzun vadeli hayal kırıklığı ve artan geliştirme süresini yol açabilir.

İş Sunucusu

Biz işimizi kontrol etmek için bir yere ihtiyaç gidiyoruz, bu vb bir IP adresi, ana bilgisayar adı, URL (iç DNS kullanarak), çünkü bu, sabit bir kaynak konumlandırıcı kılavuzunda tek sistem olması gerektiğini işçilerin iş aramak için bilmeniz gereken, işçilerin iş kontrol sistemi (işçi bulmak değil, iş denetim sistemi) bulmak gerekir.

Iş sunucu (temel sistem zaten) kendisi gerçekten karmaşık bir görevi yoktur, bu işler dışarı yandan, işlerin bir listesini saklamak sonuçları almak ve daha sonra daha sonra geri alma için bunları saklamak gerekiyor. Bu parçalar (gibi 'el işleri out') nasıl tanımlanır çok basit olabilir. Daha sonra biz bir yönetim arayüzü ekleyebilir, düzenleyebilir, silebilir, işlerini askıya ama bu egzersiz ötesinde içerecek şekilde sistem uzatabilirsiniz.

Sonra herhangi bir iş sunucusu ana işleme sunucu içinde çalışan bir sanal makine olamayacağı ondan çok fazla kaynak drenaj değildir hiçbir sebep yoktur. Iş sunucusu, bu işleme bütün bir hafta sonu kaybedeceğiz Cuma akşamı aşağı giderse ancak potansiyel değerinde işlem süresi bir kaç hafta (tek başına ana işleme sunucu ile kıyaslandığında) maliyet, yüksek kullanılabilirlik ihtiyacı var . Yüksek kullanılabilirlik için bir yük dengeli bir çevrede iş sunucusu koyarak düşünebilirsiniz.

Temel Kurulum

Bizim işimiz sunucu için temel kurulum benim Limp sunucuları (Li nux m ySql, P HP) ne aradığım oluşacaktır. Thea işçi çalıştıran kod aslında iş kontrol sistemi, veritabanları ile etkileşerek çalıştırabilirsiniz işlerde çalışacak. Daha sonra biz işçilerin, bu zor işi kendileri yapmak yerine bir web hizmeti ve aslında bir yandan işlerinizi oluşturmak olabilir, ama şimdi biz kullanmaya devam edeceğiz KISS prensibini (Stupid, Basit tutun! ).

Yani, üç oluşturmanızı sağlar mySQL işleri ile uğraşmak için tabloları. Bunlar `işler`, `jobRecords` ve `jobResults` olacaktır.

işler tablo İşte kullanıyorum SQL Buddy büyük küçük bir alternatif phpMyAdmin en kolay (diğerlerini görmek için CentOS üzerinde yüklemek için sırf phpMyAdmin 10 Büyük alternatifleri )

Bu tablo, 5 basit alanlar oluşur.

  • id: Benzersiz iş tanımlamak
  • Adı: bir istemci başvuru veya herhangi bir sayı olabilir diğer tanımlayıcılar
  • Durum: iş, örneğin nerede olduğunu bilmek gerekir
    • : 0 başlamış değil .
    • 1: seslerden
    • 2: Tamamlandı
  • started_by: iş yapmaya başladı kim? Bu tamamen gerekli değildir ama olması güzel bir. Ağınızdaki IP adresi ile izleme işçilerin öneririm
  • started_at: işçi iş ne zaman başladınız? Biz tekrar iş almak ve başka bir işçi tarafından işleme başlamak için gereken zaman X miktar içinde tamamlanması işleri takip ederek. İşçi işleme / stop herhangi bir nedenden, elektrik kesintisi, crash, ağ kaybı, vb çevrimdışı

Bu tablo istatistiklerini takip etmek eğilimindedir kaç işçi (tabi bu ihtiyaçlarını iş aldı görmek için ne kadar iş aldı, bir sayaç görmek için bir bitiş saati sütunu izin vermek için birkaç ek alanlar ile uzatılabilir nasıl kolaydır 1), iş önceliği, liste uzayıp gidebilir. Daha karmaşık bir iş senaryoları işçi (ve bu nedenle sadece uygun işçiler), ya da ne tür bir işçinin gerekli olacaktır erişim gerekir ne kadar bellek belirtmek için mümkün olacaktır.

Birkaç örnek işleri eklemenizi sağlar:

Örneğin işler

Sonraki tabloyu yeniden anlamak için oldukça basit, bu, bizim işimiz kayıtları. Onlar ana işleri tabloya bir sütun `jobs_id` bağlantılıdır. Bu tablonun makyaj işçilere sağlamak için gereksinim duyduğunuz verileri çok bağlıdır, biz dört sütunlu, çok basit bir örnek yapmanıza olanak sağlar:

  • id: kayıt ID
  • Adı: Kişinin adı
  • adresi: Kişi adres
  • jobs_id: Bu kaydın bağlantılı olduğunu iş kimliği

Üçüncü ve final masasına bir sonuç tablosu oluşur, aynı kayıtları tablo olarak çok şey var ve bazı sütunlar ek kayıtları tablonun parçası olabilir:

  • job_record_id: iş tablo sonucu Linki
  • Sonuç: Sonuç olarak veri

... Ve bu iş denetimi için gerekli tüm (Bir çok temel düzeyde de olsa) Benim durumumda işlemek için benim veri bulunan başka bir tabloya işaret değilim, ama bu kadar kolay bir dosya olabilir, simülasyon kodu çalıştırmak için parametreleri, bunun adı.

Bir iş seçilmesi

Daha önce de belirtildiği gibi, işçilerin artık bizim için iş yönetimi yapacak, bu nedenle biz gerçekten yapmanız gereken tek şey işlenmesi gereken bir iş bulmak ve bilgi almak. Bunu nasıl yaparsın? Peki bizim işimiz seçim kriterleri seçmek ve SQL aşağıdaki yaptım, iş aramak:

  1. Ama bizim işçi eksiksiz olarak işaretlenir ve bunları sıfırlamak (bir tanımlayıcı ile __ME__ yerine, en kolay IP adresi olacaktır) herhangi bir işle atın:
      UPDATE `işler` SET `durum` = 0 WHERE `durum` = 1 VE `started_by` = __ME__; 
  2. Bizim işimiz seçim kriterleri kullanarak, bir işi seçin ve kontrol sistemi, bu işçi ile ilgili olduğunu söyler:
      UPDATE `işler` `durum` = 1, `started_by` = __ME__, `started_at` = ŞİMDİ () WHERE `durum` = 0 VEYA SET
     (`Durum` = 1 VE `started_at`> DATE_SUB (NOW (), ARALIĞI X SAAT)) ORDER BY `id` ASC; 

    X miktar tüm işleri AWOL çökmesini veya giden bir işçinin olay çalıştırmak olduğundan emin olun zaman sonuç dönmedi kapma işler.

  3. Sonraki kayıtlarını kendileri tarafından takip edilen işler detayları kapmak:
      SELECT * `işler` DAN WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * `job_records` DAN WHERE `id` = __JOBID__; 

Işin tamamlanmasından sonra bizim sonuç kayıt eklemek ve iş tamamlandı olarak işaretlemek. Işler her zaman komut dosyası bazı sağlamlık için izin askıya alma / devam ettirmek gibi unutmayın. Bu görev, bir iş kayıt sayısını kontrol etmek ve iş kontrol sistemi geri kaydedilen sonuçlar sayısı akıllıca bir hareket olacaktır, iş denetim sisteminin güncelleştirilmesi yoluyla yarım askıya olabilir.

Buna ek olarak, bu işler gerçekten olması gereken bir SQL sorgusu çerçeve seçilen ve yönetilen nasıl gösterir iken soyutlayarak iş kontrol böylece bir dosya tabanlı sistem, bir web servisi kullanarak geçmek için karar verirseniz, XML , veya başka herhangi bir sistemlerin sayısı yukarıdaki kod etkilemez.

İş Yapılandırma

Dikkate alınması gereken bir sonraki boy iş boyutuna ve yapılandırma. Iş yapılandırma ile oynayarak hızı, işlem çoğaltma ve güvenilirlik arasında mükemmel bir denge. Bir çift OFA senaryoları ele alalım:

  1. İş her çalıştırmak için 1 gün sürer: Bu işçi (% 10 zaman 2/3rds için güç hatırlayın), her iş işlemek için 15 gün gerektiğini anlamına gelir. Bu açıkça akıllıca bir yapılandırma değildir, iş boyutuna yol çok büyük! Ilk işçi AWOL (sonucu artı yeniden işleme zaman iade edilmez olduğunu pick up zamanı) gitmeli işlenmiş bir iş elde etmek için en az iki katı zaman alacaktı. Ideal ilk eksik gitmeli süreç iki gün alacağını bu şekilde bir iş içinde geçiyor ve en kötü durumda işler tutmak, her uzun bir bekleme dönemi sonuna kadar kolayca temizlenir, en az bir tam iş olurdu.
  2. İş çalıştırmak için 1 dakikanızı ayırın: Bu her iş için işçi çalıştırmak için yaklaşık 15 dakika sürebilir. Bu başlangıçta ideal görünebilir iken, öğle süre içinde, ek iş işleme kazanmak, kahve molaları, toplantılar, vs Bu senaryoda sisteminin diğer bölgelerinde yük koyar ve kendi sorunları tanıtır. Örneğin, ilk kurulum / işleme oranı bu nedenle sistem verimliliğini kaybediyor, sağ aşağı gidecek. Ağınız gün çalışmak için gün dong çeşitli işçi sinir bozucu personel için sürekli iş bilgi akışı olacak. Ayrıca, çok ve düzenli bir çalışma küçük parçalar halinde çok sayıda çanak olarak iş işleme sunucu üzerinde daha fazla baskı için gidiyoruz. Son olarak, iş sunucu aşağı giderse, bu durumda daha büyük işler ise tamamlanmamış iş büyük bir geri günlüğü oluşturmak için gidiyoruz iş sunucusu sorunlar yaşıyor olduğunu blissfully habersiz işleme devam olabilir.

Gerçekte kimsenin şebeke kurulumu için ideal bir yapılandırma olacak, mevcut kaynakları, iş, iş dönüş zamanı gerekleri, ağ yeteneği ve türleri çok bağlıdır. Ancak bazı kurallar olacaktır:

  • Size işleri dolayısıyla her işçinin 15 saatlik bir süre içinde en az 3-4 işleri (uzun muhtemel boşta süre) aracılığıyla alabilirsiniz
  • Bu kurulum süresi, işlem süresi (akılda yukarıdaki noktaya taşıyan) ile karşılaştırıldığında oldukça önemsiz hale gelir, böylece iş büyüklüğü ile oynayın.
  • Bir işi tamamlamak için bekliyoruz zaman iki katına (belki daha az) tam değilse gitti AWOL ve başka bir işçi ile işleme başlar varsayıyorum. Bu tamamlamak için (sonraki iş başarısız olursa muhtemelen uzun) bir iş için üç kez normal uzunluğu kadar beklemek zorunda kalabilirsiniz demektir. Siz bu süreyi azaltmak, ancak çok düzenli bir şekilde işleme görevleri çoğaltarak başlayabilir azaltmak için dikkatli olmak isteyebilirsiniz.
  • Işler dışında gereksinimleri mümkün olduğunca bağımsız olmalıdır. Iş sunucu, örneğin, her işin başında ve sonunda sadece temas olmalıdır.
  • Ağınıza doyurabilecek etmeyin, bu iki olumsuz etkileri olacak, gündüz personel ağ sinir bozucu ve bağlantıları sadece size ızgara ölçek olarak daha kötüye gidecek bir sorun aşımına uğruyor yaşanan sorunlar olabilir bulacaksınız.
  • Emin olun işler işçiler üzerinde çalıştırabilirsiniz. Işler çok bellek, yoğun bir şekilde ya da disk alanı yoğun işler hale gelirse iptal başlayacak ve farkedeceğiniz tek şey, hiçbir gerçek sebebi ile işlenen işlerin sayısı bir damla.

İş gönderme Sonuçlar

Bir iş sonuçları gönderirken, bu sonuçlar mevcut işçi, bir süre hareketsiz olmuştur, özellikle eğer, başka bir işçi tarafından sunulmuş değil kontrol etmek için önemlidir.

Sonuçları gönderildiğinde sonuç sayısı, iş içindeki kayıtların sayısını eşleştiğinden emin olun.

Daha önce de belirtildiği gibi, iş alma ve sonuçları teslim hata toleransı inşa vurguladı üzerinde olamaz. Işçiler (ve büyük olasılıkla olacak) en elverişsiz kez askıya alma moduna gidin ve bu ihtiyaçları için yiyecek ve içecek için. Ayrıca yine sonuç teslim uzak soyutlayarak gelecek değişiklikler ile başa çıkmak için çok daha kolay iş kontrol sistemi karşılamak yardımcı olacaktır.

Özet

Bu Bölümüa biz bir iş kontrol sunucusu ne yapması gerektiğini baktım ve çok temel bir sistem kurmak nasıl. Biz kontrol sistemi, iş ve en iyi nasıl işler bizim en ofisinizde ızgara sistemi yapılandırmak için almak nasıl tartışıldı. Bitirmek için, bir paragraf ya da iki iş denetimi sunucusu sonuçları geri göndererek sunuldu.

  • Bir iş kontrol sunucusu, tüm iş birimlerinin iş ve garanti yönetir
  • Select / sonuçlar teslim işinizi soyutlayarak çok fazla sorun olmadan kontrol sunucu teknoloji değiştirebilirsiniz
  • Ağ altyapısı üzerinde çok fazla baskı koyarak olmadan hızlı ve verimli bir şekilde işletilmesi olduğunu sağlamak için işler ve düzenli bir şekilde işleme görevleri çoğaltma yapılandırma.
  • Rutinleri içine hata toleransı ve hata checking inşa emin olun, işçiler askıya alma ve devam ve kez en rahatsız edici olabilir. Zaten başka bir işçi tarafından sunulmuştur varsa kontrol etmeyi unutmayın.

Bir dahaki sefere

Part 3 sanal işleme makine oluşturmak ve boşta zamanlı işçileri olmak için windows makinalarda kurmak.

Sanal ortamlarda kullanarak Office Grid Hesaplama - Part 5

By , Cuma 4 Aralık 2009 11:03

Giriş

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. Yani,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Dağıtım

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Durun!

Ne bir süre çalışan işçilerin durdurmak isterseniz? Hepsi orada çalışan, yenileyici ve aç böcekler gibi verileri işlemek için ellerinden gelenin en iyisini yapıyor. Bu sorunun cevabı açık gibi görünebilir ama onun değer sadece bu durumda göz ardı ekleyerek. Sadece bir çıkış (0) ile işleme komut dosyası düzenlemek or die () veya başka bir bildirimde işleme iş öldürmek için. Biz her zaman, herhangi bir çalıştırmadan önce son işlem komut dosyası güncellemek için deneyin neden önemli bir nedeni!

Gösteri Sistemi

Bu dizi kısa makaleler yazmak için teknolojileri ve metodolojileri göstermek için bir çok küçük ızgara yarattı. Ben, makaleler, öğreticiler çok okuyun ve kurulum ve ne olup bittiğini izlemek için çeşitli araçları kullandılar. Ben hiçbir şekilde dışarı gitti ve trafik ile tüm ofis doymuş ve ne de ev sahibi performansı nasıl etkilendiğini görmek için düzenli personeli PC erişimi vardı.

Benim gösteri sistemi gerçekten çok mütevazi idi. Ben bir iş kontrol sunucusu olarak kurmak benim normal masaüstü kullandı. Ben yüklü olduğu mySQL sunucusu çoğaltma ana kadar yüklü, PHP , Â ve SVN ile bağlantılı apache (işçi VM üzerinden erişim için).

O zaman 6 yaşında olan windows XP dizüstü VirtualBox bir CentOS çalışan makine yarattı. Ben makine üzerine VM kopyaladıktan sonra belirtildiği gibi zamanlanmış görevler kurulum ve gitsin.

Sanal makine, PHP subversion ve mySQL ile kurulmuştur. Ben işimi kontrol sunucuları deposu 'işçi' adında bir şube teslim ve 'svn update ile güncellenen olabilir emin oldum. Sonraki bir köle olarak kurulum mySQL ve veri işçi VM iş kontrol sunucu mySQL kopyalayan olduğunu kontrol etti. Bundan sonra ben bash betiği ve cron işi kurulum.

Benim işleme komut dosyası temelde bu hatları (çok basit şeyler) boyunca devam etti:

  • Ad alanına okuyun
  • VM üzerinde yapılan veri kaynağı bir tablo benzer isimlerin sayısı sayılır
  • Yarma ama yukarıdaki boşluk bırakarak ad (yani adı, orta, soyadı) gibi isimlerin sayısı sayılır
  • Bu sürecin 1000 kez tekrarlanır

Her iş çalıştırmak için yaklaşık 20 dakika sürdü. Bir noktada ben windows dizüstü bilgisayarda çalışan VM birkaç kopya açtı ve işler her işçi IP adresleri tarafından kontrol edilmesi izledi. Bu noktada ben de otomatik olarak yeniden çoğaltma doğruladı.

Başlayan bir işçi, iş denetim sunucusu işlerini işlemek için neden boşta dizüstü bırakmak. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

Sonraki bariz adım, gerçek bir dünya örnek almak ve bir sistem içinde bunun gibi bir ofis ortamında dağıtmak ve ne olacağını görmek için başlatmak için olurdu. Teknoloji ve etkinliğini kanıtlamak için iz bir şirket olmadan bu işlemek için bir iş sorma biraz zor olabilir. Izgara / bilgisayar çok popüler Dağıtık bazı çevreler ve bazı büyük uygulamaları (BIONC, SETI @ Home, Folding @ Home, vb) sahiptir. Ben, ancak, benim aramalarda bir ofis ortamı içerisinde rulo olabilir, bu gibi daha küçük bir ölçekte ve basit bir sistem değildi.

Ben hemen hemen tüm ofis çoğunlukla açık kaynak kodlu yazılım ve araçları kullanarak temelde özgür bir sistem yarattı. Teknolojileri temelde gösterdi ve beklendiği gibi gerçekleştirmek ve çalışma göstermek. Umarım değil çok iş ve çok basit bir kurulum ile güçlü, ucuz, Â ve aynı zamanda ölçeklenebilir bir ofis grid bilgi işlem sistemini dağıtmak olduğunu göstermektedir var.

Bir sistem ve oradan oraya koşan, özelleştirme ve iyileştirmeler yapabilir miktarı neredeyse sonu yoktur. Örneğin istatistikleri / kıyaslama kolayca her gün böyle bir sistemin değerini gösteren eklenebilir. Yeni makineler hızlı ve kolay olarak eklenir ve işlem gücü destekleme mevcut donanım yükseltmeleri geldiğinde olabilir.

Bu yazı serisi, okuma zevk ve bir ofis ızgara sistemi çalıştıran düşünce için gıda verilen umuyoruz. Burada sunulan çözüm, tüm durumlarda mutlaka ama kendi çözümünü kullanarak veri işleme yapılması için izin uyarlanabilir olmalıdır.

Lütfen bana herhangi bir yorum, düzeltme veya iyileştirmeler göndermek için çekinmeyin ve eşleşecek şekilde güncelleştirilir Bu yazı tutmak için elimden geleni yapacağım.













Panorama Tema al Themocracy

Şuanda online 7 ziyaretçi
6 misafir, 1 bot, 0 üye
Max ziyaretçi bugün: 14 03:08 UTC
Bu ay: 01-09-2011 11:27 UTC de 17
Bu yıl: 130 28-03-2011 22:40 UTC
Bütün Zaman: 28-03-2011 10:40 UTC de 130