Kategori: Pengkomputeran Grid

Pejabat Pengkomputeran Grid yang menggunakan persekitaran Maya - Part 4

Oleh , Jumaat, 4 Disember 2009 11:59

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan kerja kumpulan yang memproses berjuta-juta rekod data setiap hari dan saya telah memikirkan baru-baru ini kira-kira semua mesin yang duduk di sekeliling setiap dan setiap hari melakukan apa-apa untuk beberapa jam. Bukankah lebih baik jika kita dapat menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set ini artikel saya akan melihat potensi manfaat menggajikan pejabat grid menggunakan persekitaran virtualised.

Dalam 3 bahagian , kami telah membuat mesin pemprosesan maya kami dan menubuhkan mesin tingkap untuk menjadi pekerja terbiar masa .

Menjalankan code terbaru

Tidak dapat tidak selepas mencipta logik pekerja perniagaan anda akan berubah, pepijat akan didapati, kod lebih cepat lebih berkesan akan dihasilkan dan ini menyebabkan pekerja anda duduk di sekeliling memproses data menggunakan kod bau yang lama. Bagaimana pula kita memastikan bahawa kita sentiasa menggunakan versi yang terbaru dan terhebat skrip pemprosesan kami?

Terdapat beberapa cara yang sangat mudah mudah yang boleh kita lakukan ini, silap mata tersebut, bagaimanapun, adalah untuk mengurangkan kuasa pemprosesan dan trafik rangkaian dalam mencapai ini. Membolehkan bermula dengan penyelesaian yang paling mudah dan meningkatkan secara perlahan-lahan selama beberapa lelaran.

Kaedah pertama akan hanya menyambung kepada pelayan kawalan tugas kami (melalui samba, FTP, atau yang serupa) dan tarik turun versi terbaru kod. Tidak begitu cekap, tetapi ia akan melakukan pekerjaan itu. Membolehkan memperbaiki bahawa agak, bagaimana pula mewujudkan script rsync dan menggunakan bahawa setiap kali, bukan? Alternatif apa yang kira-kira meletakkan script pemprosesan terkini ke subversif memeriksa kod pada mulanya dan kemudian hanya mengemas kini kod kami setiap melarikan ( svn update )?

Akhirnya kita boleh berakhir dengan skrip Bash (dipanggil oleh cron setiap 10 minit) yang kelihatan semudah ini:

  #! / Bin / sh
 Jika ps ax | grep-v grep | grep php > / dev / null
 kemudian
     echo "Job sedang memprosesnya, keluar"
 lain
     echo "Kerja tidak berjalan, mulakan sekarang"
     cd / path / to / bekerja / salinan
     svn update
     php yourJobProcessingScript.php
 fi 

Sekarang kita boleh yakin bahawa dengan menjalankan setiap kita pasti menjalankan code terbaru. Kami memastikan ini dengan mengemas kini pangkalan kod kami setiap kali dan setiap kita menjalankan menjalankan dan mengurangkan trafik rangkaian dengan hanya memindahkan perbezaan fail di seluruh rangkaian kami.

Dalam persediaan demonstrasi saya, saya tidak betul-betul seperti di atas. Subversion telah dipasang pada pelayan pemprosesan kerja saya dan saya hanya menarik code terbaru dari cawangan 'pekerja' yang menggunakan 'svn update'. Saya juga menambah tag nombor versi untuk skrip pemprosesan saya yang telah kembali ke pangkalan data sebagai sebahagian pulangan keputusan. Dengan cara ini, saya dapat melihat bahawa kod saya sedang dikemaskini setiap kali saya disalin batang saya ke dalam cawangan iaitu pekerja yang saya pasti menjalankan pemprosesan skrip yang terbaru.

Menggunakan data terkini

Jika proses kerja anda menggunakan sumber data, maka pada satu masa nanti ini akan dikemas kini terlalu. Melainkan jika anda memanggil sumber data anda pada asas yang amat jarang berlaku, anda akan membanjiri rangkaian anda dengan lalu lintas dengan seberapa segera sebagai pekerja anda mulai berjalan membawa semua terhenti. Untuk penyelesaian saya, saya memutuskan bahawa saya ingin untuk menggerakkan sumber-sumber data saya di sekitar dengan VMS saya.

Memegang anda kuda di sana! Bagaimana sekiranya sumber-sumber data saya BESAR? Telaga ini benar-benar kes berapa banyak data yang kita bercakap? Ia mungkin menjadi lebih kos efektif untuk memasang cakera keras tambahan yang lebih besar ke dalam mesin setiap daripada membeli pelayan pemprosesan tambahan. Ini adalah persoalan bajet dan sehingga perniagaan untuk membuat keputusan. Ia mungkin bahawa sumber data anda begitu besar bahawa hanya unfeasible untuk memastikan bahawa jumlah data dalam mesin pekerja anda. Dalam kes itu apa yang akan anda lakukan ? Well, kita boleh melihat memanggil pelayan data tempatan, tetapi ini mungkin menyebabkan isu-isu dengan rangkaian . Dalam kes ini, sistem grid seperti ini boleh menjadi tidak realistik untuk termasuk dalam persekitaran pejabat anda . Ia juga mungkin yang anda boleh melihat ke dalam menjalankan strategi alternatif, contohnya hanya memanggil pekerja anda antara 08:00 dan pukul 6 pagi hingga setiap malam dan / atau permintaan sumber data pendikitan.

Beralih membolehkan berkata jumlah sumber data kami 100GB data. Well ya yang agak sedikit data untuk bergerak di seluruh rangkaian di kemas kini. Bagaimana kita akan memastikan bahawa kita mempunyai salinan data dalam kes ini? Rsync adalah satu kemungkinan, tetapi secara peribadi saya fikir dengan menjalankan sumber data terkini anda pada pelayan pemprosesan kerja anda dan tetapan ini sebagai induk dalam replikasi (dengan log bin panjang bagus) mungkin menjadi cara untuk pergi:

replikasi Dengan menetapkan setiap pekerja anda sebagai hamba kepada kemas kini pekerjaan pelayan kawalan sumber-sumber data anda akan lelehan baik untuk pekerja anda tanpa peningkatan yang besar dalam aktiviti rangkaian (yang melainkan jika anda melakukan kemas kini data yang besar dan semua pekerja anda sepakan dalam sekali gus). Ini mempunyai kelebihan lebih rsync yang anda tidak akan mendapat jeda yang lama sebelum setiap tugas sebagai kemas kini pangkalan data , mysql daemon pada pekerja anda akan sentiasa mengemaskini data semasa memproses berterusan .

Ini adalah bagaimana saya menetapkan pelayan demonstrasi saya. Untuk menubuhkan replikasi saya mengikuti panduan di laman MySQL ( tetapan sehingga replikasi ) dan dalam masa 20 minit, saya mempunyai pekerja awal daripada saya mereplikakan dataset pelayan kawalan kerja . Bagi setiap pekerja tambahan tetapan replikasi dan proses bekerja setiap kali apabila VM tersebut telah disalin.

Ringkasan

Dalam seksyen ini artikel kita telah melihat bagaimana mudah dan tidak menyakitkan adalah untuk menyimpan kod pemprosesan anda up to date oleh using rsync atau subverion (SVN) untuk melakukan kerja dan mengurangkan lalu lintas rangkaian pada time. yang sama, Kami juga membincangkan bagaimana untuk menyimpan maklumat sumber data anda up-to-date dengan membenarkan ia hanya meleleh turun ke setiap pekerja anda. Oleh itu, kita kawasan memastikan bahawa kita menyimpan dengan logik perniagaan dan maklumat dalam sistem grid pejabat kami. Jelas akan ada alternatif yang tidak terkira banyaknya untuk melaksanakan tugas-tugas ini, tetapi di sini adalah dua contoh mudah untuk menunjukkan betapa mudahnya penyelesaian diperolehi.

Next time

Dalam bahagian akhir siri ini, yang digelar Part 5 , kami akan membincangkan menggerakkan sistem ini. Saya akan ringkaskan apa yang telah dipelajari dan apa yang saya berjaya untuk mencipta.

Pejabat Pengkomputeran Grid yang menggunakan persekitaran Maya - Part 1

Oleh , Jumaat 4 Disember 2009 11:23

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan kerja kumpulan yang memproses berjuta-juta rekod data setiap hari dan saya telah memikirkan baru-baru ini kira-kira semua mesin yang duduk di sekeliling setiap dan setiap hari melakukan apa-apa untuk beberapa jam. Bukankah lebih baik jika kita dapat menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set ini artikel saya akan melihat potensi manfaat menggajikan pejabat grid menggunakan persekitaran virtualised.

Sebagai PHP pemaju Saya akan menggunakan alat-alat yang saya gunakan setiap hari iaitu, Linux , MySQL, PHP, VirtualBox dan subversif (SVN ). Walau bagaimanapun, saya berharap panduan ini akan menyesuaikan diri dengan bahasa teknologi dan lain-lain juga sama.

Penyelesaian yang saya berikan akan sangat longgar berdasarkan jenis pemprosesan kita akan perlu untuk mencapai Walau bagaimanapun ini tidak mungkin benar keseluruhan artikel kerana saya akan mengubah keadaan kesederhanaan, atau untuk menghasilkan senario penggunaan yang lebih menarik.

Persekitaran virtualised akan berjalan di mesin windows kerana ini adalah apa yang majoriti pejabat berjalan. Pemprosesan bahawa mesin-mesin pejabat tidak perlu mengganggu kakitangan menggunakan mereka mesin, sepatutnya tidak memerlukan penyelenggaraan pada mesin, dan mudah deployable kepada mesin baru mereka menjadi tersedia. Juga, mesin baru maya tidak harus memerlukan apa-apa konfigurasi tambahan seperti ini banyak mengurangkan skala dan mudah di mana sistem grid boleh dilanjutkan.

Mengapa menempatkan Pejabat Pengkomputeran Grid?

Pertama anda boleh berfikir, mengapa bukan sahaja menggunakan sumber pengkomputeran mega seperti platform EC2 Amazon ? Well alasannya adalah beberapa contohnya:

  • Anda tidak akan mengamanahkan data tertentu kepada persekitaran perkomputeran awan
  • Anda tidak boleh meletakkan data ke dalam persekitaran perkomputeran awan tertentu untuk sebab-sebab undang-undang (data contohnya meninggalkan negara), berpotensi atas sebab-sebab undang-undang, contohnya NHS rekod.
  • Anda ingin menyimpan unit pemprosesan anda rapat dan mempunyai kawalan penuh ke atas perkakasan
  • Anda tidak mempunyai dana projek untuk menjalankan keadaan awan
  • Pejabat anda tidak mempunyai sambungan ke internet dan oleh itu tidak mungkin untuk menggunakan sumber awan
  • Anda tidak suka hujan, awan mencadangkan hujan, oleh itu anda menyimpan jauh

Saya pasti senarai boleh diteruskan, tetapi saya fikir itu sudah cukup buat masa ini.

Kelebihan Grid Computing Pejabat

Well, mari kita lakukan beberapa matematik (dan dalam gaya fizik benar membolehkan membuat beberapa andaian yang luas). Bayangkan anda mempunyai pemprosesan pelayan berdaging besar menjalankan 100 pekerjaan setiap hari. Dalam pejabat anda, anda mempunyai 50 mesin yang terbiar selama 16 jam sehari, setiap mesin ini adalah 10% berkuasa sebagai memutuskan pemprosesan berdaging anda. (Semua keputusan di sini adalah bulat untuk memandang rendah meningkatkan prestasi).

Jadi, 1 mesin kuasa * 10% * 2 / 3 kali = 0,067 iaitu 1 desktop pemprosesan dalam masa yang terbiar dapat memproses 6 pekerjaan penuh setiap hari.

Jika anda sekarang skala sehingga ini, ia mengambil masa 15 desktop terbiar untuk memproses seberapa banyak kerja setiap hari sebagai pelayan pemprosesan utama anda tidak.

Oleh itu, di pejabat berpura-pura kami sebanyak 50 mesin, kita boleh meningkatkan kuasa pemprosesan kami dari 1 pelayan sehingga 4 pemprosesan pelayan penuh, atau kita boleh memproses 400 pekerjaan setiap hari dan bukannya 100.

Notis, tidak untuk pelaburan dalam perkakasan baru syarikat anda baru sahaja meningkatkan kapasiti pemprosesan kelompok 4 kali! Berpotensi anda akan meningkatkan penggunaan kuasa anda tetapi dari kebanyakan persekitaran pejabat saya telah ke mesin secara amnya dibiarkan semalaman anyway, jadi anda dapat melihat ini sebagai inisiatif hijau.

Kelebihan lain juga bermakna bahawa pelaburan dalam baru (atau dikemaskini) pelayan pemprosesan boleh ditangguhkan jika mesin-mesin pejabat anda adalah mencukupi dan bahawa anda meningkatkan kuasa mesin-mesin pejabat anda grid pejabat anda menjadi lebih kuat secara automatik.

Technologies

Apa yang anda perlukan? (Atau lebih tepat lagi apakah yang saya gunakan):

  • Mesin pejabat terbiar (dalam kes saya windows XP komputer riba ganti lama)
  • VirtualBox (atau perisian maya pelanggan yang lain)
  • Sebuah mesin maya dengan PHP, MySQL running menjalankan ditebang OS, saya memanggil-pelayan Bizkit saya:)
  • Pekerjaan untuk menjalankan
  • Pelayan Ayub (boleh menjadi satu lagi mesin maya tempat)

Pekerjaan tipikal

Jenis pekerjaan yang bahawa sistem ini direka bentuk untuk menjalankan adalah seperti berikut:

  • Sistem menerima senarai data atas yang kita perlu untuk perlawanan dan mengembalikan hasil
  • Matching melibatkan memeriksa / mencari beberapa (yang agak statik) sumber data
  • Hasil dari sumber-sumber data mungkin memerlukan pengesahan lanjut, penggabungan, memeriksa sumber data tambahan dalam tindak balas kepada keputusan
  • Data kembali dengan rekod yang hampir sama, disahkan sepenuhnya dan diproses
  • Setiap rekod dalam pekerjaan bebas yang lain

Jadi, pada asasnya kami sedang mencari menjalankan pekerjaan yang memerlukan campuran lookup database dan beberapa crunching nombor, satu senario yang agak tipikal dalam persekitaran perniagaan.

Penyelesaian grid tidak hanya berfaedah untuk memproses kerja jenis ini. Pada dasarnya, apa-apa proses yang boleh dibahagikan kepada unit bebas boleh dijalankan secara selari. Lihat wikipedia ini untuk contoh-contoh dan maklumat lanjut: Grid Computing , tetapi beberapa contoh terkenal Halkum @ Home dan BIONC . Terdapat rangka kerja untuk menjalankan pengkomputeran grid, dan ini patut mengkaji.

Apa yang kita akan mencapai?

Menjelang akhir artikel ini, saya berharap dapat menunjukkan bahawa menggerakkan grid pejabat tidak perlu memakan yang sangat mahal atau masa. Saya akan membincangkan:

  • Menyediakan sistem kawalan kerja, kerja konfigurasi
  • Mewujudkan sebuah mesin pemprosesan yang sesuai maya
  • Bagaimana untuk setup sistem pada mesin tingkap
  • Menjamin anda menggunakan kod dan data terkini
  • Kerahan dan penandaarasan
  • Memandang ke hadapan

Saya akan bangunan (ok saya dibina, kemudian menulis ini) contoh permohonan untuk menguji konsep pada mesin tempatan yang menggunakan windows XP dan 'GridMachine' mesin maya saya. Pelayan kawalan tugas saya akan menjadi mesin utama saya yang berjalan Fedora 11 .

Ini adalah sama sekali tidak bertujuan untuk menunjukkan satu sistem yang teguh yang sepenuhnya bekerja, bermakna lebih banyak demonstrasi dan perbincangan yang menunjukkan bahawa perkara-perkara ini boleh dicapai dalam ruang masa yang agak singkat dan pada kos yang sedikit. Sila bebas untuk menghantar saya apa-apa komen, pembetulan atau penambahbaikan dan saya akan melakukan yang terbaik untuk menyimpan artikel yang dikemas kini untuk menyamai.

Next time

Part 2 saya akan bermula dengan melihat sistem kawalan kerja, dan mengkaji bagaimana kerja sepatutnya dikonfigurasi untuk mencapai jumlah pemprosesan di samping memastikan setiap kerja diproses tanpa gagal .

Pejabat Pengkomputeran Grid yang menggunakan persekitaran Maya - Part 2

Oleh , Jumaat 4 Disember 2009 11:23

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan kerja kumpulan yang memproses berjuta-juta rekod data setiap hari dan saya telah memikirkan baru-baru ini kira-kira semua mesin yang duduk di sekeliling setiap dan setiap hari melakukan apa-apa untuk beberapa jam. Bukankah lebih baik jika kita dapat menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set ini artikel saya akan melihat potensi manfaat menggajikan pejabat grid menggunakan persekitaran virtualised.

Dalam Bahagian 1 , saya memberi gambaran keseluruhan sistem dan teknologi yang saya akan gunakan serta membincangkan beberapa potensi sebab-sebab mengapa anda mahu untuk mewujudkan grid pejabat.

Kawalan Kerja

Jika anda akan menjalankan kerja, maka anda akan memerlukan beberapa cara untuk menguruskan mereka. Sistem kawalan kerja anda (pada pelayan kerja anda) perlu benar-benar baik difikirkan sebelum cuba untuk menjalankan grid pejabat. Jadi pertamanya, apakah tugas-tugas untuk satu sistem kawalan kerja:

  • Keluar kerja tangan atas permintaan daripada pekerja-pekerja
  • Beritahu pekerja apakah jenis pekerjaan untuk menjalankan
  • Track pekerjaan
  • Pastikan bahawa pekerjaan hanya berjalan sekali
  • Menyediakan data pekerjaan kepada pekerja-pekerja, atau sekurang-kurangnya memberitahu mereka di mana untuk mendapatkan

Sistem ini juga perlu extensible, penyelesaian yang bekerja buat masa ini dalam mana-mana satu boleh dilanjutkan untuk menjalankan beberapa jenis pekerjaan sebagai perniagaan melihat dalam penyelesaian grid bernilai. Sebagai contoh, kerja boleh mendapat keutamaan lebih daripada satu jenis pekerjaan mungkin wujud (kod asas iaitu beberapa), akhirnya anda mungkin menjalankan mesin pekerja yang berlainan yang optimum bagi setiap jenis kerja (walaupun yang tidak bergerak jauh dari pekerja 'generik 'idea). Sentiasa cuba untuk memikirkan masa depan apabila pembangunan sistem, wawasan jangka pendek boleh membawa kepada kekecewaan jangka panjang dan masa pembangunan yang meningkat.

Server Kerja

Kami akan memerlukan tempat untuk mengawal kerja kita, ini harus menjadi satu-satunya sistem dalam grid anda yang mempunyai sumber tetap pencari, alamat IP, nama tuan rumah, URL (menggunakan DNS dalaman), dll. Ini adalah kerana para pekerja perlu tahu di mana untuk mencari pekerjaan, pekerja perlu mencari sistem kerja kawalan (bukan sistem kawalan kerja mencari pekerja).

Pelayan kerja itu sendiri tidak benar-benar mempunyai tugas yang rumit (dalam sistem asas bagaimanapun), ia perlu untuk menyimpan senarai pekerjaan, tangan keluar kerja, menerima keputusan, dan seterusnya menyimpan mereka untuk mendapatkan semula kemudian. Bagaimana bahagian-bahagian ini ('tangan daripada kerja' seperti) ditakrifkan boleh sangat asas. Kemudian kita boleh melanjutkan sistem termasuk muka pentadbiran untuk menambah, mengedit, memadam, menggantung pekerjaan tetapi ini adalah di luar latihan ini.

Tidak ada sebab apa-apa kemudian bahawa pelayan kerja anda tidak dapat menjadi mesin virtual yang berjalan dalam pelayan pemprosesan utama anda dengan syarat ia tidak mengalirkan sumber-sumber yang terlalu banyak dari. Walau bagaimanapun, pelayan kerja tidak perlu ketersediaan tinggi, jika ia menjunam pada malam Jumaat anda akan kehilangan seluruh hujung minggu pemprosesan, berpotensi berharga beberapa minggu masa pemprosesan (jika dibandingkan dengan server pemprosesan utama anda sahaja) . Anda mungkin ingin mempertimbangkan untuk meletakkan pelayan kerja anda ke atas alam sekitar beban yang seimbang bagi ketersediaan tinggi.

Persediaan Asas

Persediaan asas untuk pelayan tugas kita akan terdiri daripada apa yang saya memanggil salah satu pelayan Bizkit saya (yang Li Nux, ySql m, P HP ). Kod yang dijalankan pada pekerja Thea sebenarnya akan bekerja apa pekerjaan yang ia boleh berjalan dengan berinteraksi dengan pangkalan data sistem kawalan kerja. Kemudian kita boleh mewujudkan satu perkhidmatan web dan sebenarnya tangan daripada pekerjaan dan bukannya yang mempunyai pekerja yang melakukan kerja-kerja keras sendiri, tetapi sekarang ini kita akan terus menggunakan prinsip KISS (Pastikan ia Simple, Stupid! ).

Jadi, mari kita membuat tiga jadual MySQL untuk berurusan dengan pekerjaan. Ini akan `pekerjaan`, `jobRecords`, dan `jobResults`.

kerja table Di sini saya menggunakan SQL Buddy alternatif yang hebat sedikit phpMyAdmin hanya kerana lebih mudah untuk memasang pada CentOS (untuk orang lain melihat: 10 alternatif Great untuk phpMyAdmin)

Jadual ini terdiri daripada 5 bidang yang mudah,

  • id: Uniquely mengenal pasti pekerjaan
  • nama: dapat menjadi rujukan pelanggan, atau mana-mana bilangan pengecam lain
  • Status: Anda perlu tahu di mana kerja di, contohnya
    • 0: Tidak bermula
    • 1: diambil
    • 2: Selesai
  • started_by: yang mula menjalankan tugas? Ini tidak semuanya diperlukan tetapi yang bagus telah. Saya hendak mencadangkan pekerja menjejaki oleh alamat IP mereka di rangkaian anda
  • started_at: Bilakah pekerja memulakan kerja? Dengan menjejaki pekerjaan yang belum selesai dalam jumlah X masa kita tahu kita perlu memilih kerja sekali lagi dan mula memproses oleh pekerja lain. Pekerja boleh menghentikan pemprosesan / luar talian untuk apa-apa bilangan sebab, kegagalan kuasa, kemalangan, kehilangan rangkaian, dll.

Ia adalah mudah bagaimana jadual ini boleh dilanjutkan dengan beberapa bidang tambahan untuk membolehkan statistik Penjejakan, lajur penamat masa untuk melihat berapa lama kerja mengambil, kaunter untuk melihat berapa ramai pekerja yang mengambil pekerjaan (jelas ini perlu cenderung untuk 1), keutamaan kerja, senarai boleh pergi dan. Dalam senario pekerjaan yang lebih kompleks, ia akan dilakukan untuk menentukan berapa banyak ingatan pekerja akan memerlukan akses (dan oleh itu hanya menggunakan pekerja-pekerja yang sesuai), ataupun jenis pekerja yang diperlukan.

Mari menambah beberapa pekerjaan contoh:

contoh kerja

Jadual seterusnya sekali lagi adalah agak mudah untuk difahami, ini adalah rekod tugas kita. Mereka dikaitkan dengan jadual kerja utama oleh lajur `jobs_id`. Membuat jadual ini amat bergantung kepada data yang anda perlukan untuk membekalkan kepada pekerja-pekerja anda, mari kita membuat satu contoh yang sangat mudah di mana kita mempunyai empat tiang:

  • id: ID rekod
  • name: nama Orang
  • alamat: alamat Orang.
  • jobs_id: ID kerja bahawa rekod ini dikaitkan dengan

Jadual ketiga dan terakhir terdiri jadual keputusan, ia telah banyak yang sama seperti pada table rekod kami, dan dengan tambahan beberapa tiang boleh menjadi sebahagian daripada jadual rekod:

  • job_record_id: Link keputusan untuk jadual kerja
  • hasil: data hasil

... Dan bahawa semua yang anda perlukan untuk mengawal kerja! (Walaupun pada tahap yang sangat asas) Dalam kes saya saya menunjukkan ke meja yang lain di mana data saya untuk proses itu terletak, tetapi ini boleh semudah fail, parameter untuk menjalankan kod simulasi, anda namakan sahaja.

Memilih kerja

Seperti yang dinyatakan sebelum ini, para pekerja akan melakukan pengurusan tugas kita untuk kita buat masa sekarang, jadi semua yang kita perlu untuk benar-benar melakukan mencari pekerjaan yang memerlukan pemprosesan dan mendapatkan maklumat. Bagaimana kita akan melakukan ini? Well memilih kriteria pemilihan kerja kami dan mencari kerja di SQL saya melakukan perkara-perkara berikut:

  1. Mengambil apa-apa pekerjaan yang tidak ditandakan sebagai lengkap tetapi dari pekerja kami dan menetapkan semula mereka (menggantikan __ME__ dengan pengecam, paling mudah akan alamat IP):
      UPDATE `pekerjaan` SET `status` = 0 DI MANA `status` = 1 DAN `started_by` = __ME__; 
  2. Menggunakan kriteria pemilihan kerja kami, pilih kerja dan memberitahu sistem kawalan bahawa pekerja ini adalah menangani:
      UPDATE `pekerjaan` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW () DI MANA `status` = 0 ATAU
     (`Status` = 1 DAN `started_at`> DATE_SUB (NOW (), interval X HOUR)) ORDER BY `id` ASC; 

    Dengan meraih pekerjaan yang tidak dikembalikan keputusan dalam X jumlah masa kita memastikan bahawa semua kerja dijalankan sekiranya pekerja terhempas atau akan AWOL.

  3. Seterusnya merebut butiran kerja yang diikuti oleh rekod-rekod itu sendiri:
      SELECT * FROM `kerja` WHERE `started_by` = __ME__ HAD 1;
     PILIH * DARI `job_records` DI MANA `id` = __JOBID__; 

Setelah selesai kerja kita memasukkan rekod hasil dan menandakan pekerjaan sebagai lengkap. Ingat sebagai pekerjaan boleh menggantung / resume pada bila-bila masa membenarkan beberapa keteguhan dalam skrip anda. Ia mungkin bahawa tugas menggantung setengah jalan melalui mengemaskini sistem kawalan kerja, jadi memeriksa bilangan rekod dalam pekerjaan dan bilangan keputusan yang disimpan kembali ke sistem kawalan kerja akan menjadi satu langkah yang bijak.

Di samping itu, sementara ini menunjukkan bagaimana pekerjaan boleh dipilih dan diuruskan dari kerangka SQL-query anda benar-benar harus pengabstrakan kawalan kerja anda supaya jika anda membuat keputusan untuk beralih menggunakan perkhidmatan web, sistem berasaskan fail, XML , atau mana-mana orang lain bilangan sistem, ia tidak akan menjejaskan kod di atas.

Konfigurasi Kerja

Aspek seterusnya yang perlu diambil kira adalah saiz kerja dan konfigurasi. Dengan bermain dengan konfigurasi kerja, kita boleh mencapai keseimbangan yang sangat baik antara kelajuan, replikasi, proses, dan kebolehpercayaan. Ambil senario of pasangan:

  1. Pekerjaan mengambil masa 1 setiap hari untuk menjalankan: Ini bermakna bahawa pekerja-pekerja anda memerlukan 15 hari untuk memproses setiap kerja (ingat 10% daripada kuasa untuk 2/3rds masa). Ini jelas tidak tatarajah yang bijak, saiz kerja anda terlalu besar! Ia akan mengambil sekurang-kurangnya menggandakan masa untuk mendapatkan pekerjaan yang diproses pekerja awal harus pergi AWOL (masa memilih bahawa ia telah tidak kembali hasil tambah masa memproses semula). Dalam ideal anda hendak mempunyai sekurang-kurangnya satu kerja mudah dibersihkan menjelang akhir setiap tempoh terbiar lama, cara anda menyimpan pekerjaan yang berdetik lebih dan pada kes terburuk kerja akan mengambil masa dua hari untuk proses yang pertama harus hilang.
  2. Pekerjaan mengambil 1 minit untuk berjalan: Ini bermakna bahawa pekerja-pekerja anda mengambil masa kira-kira 15 minit untuk menjalankan kerja masing-masing . Walaupun ini pada mulanya mungkin kelihatan ideal, anda boleh mendapat pemprosesan kerja-kerja tambahan pada waktu makan tengah hari, rehat kopi, mesyuarat, dll senario ini meletakkan tekanan pada kawasan lain sistem anda dan memperkenalkan masalah sendiri. Sebagai contoh, pertama setup / nisbah pemprosesan masa anda akan pergi ke kanan ke bawah, dengan itu kehilangan kecekapan sistem. Rangkaian anda akan sentiasa streaming maklumat pekerjaan kepada pekerja-pekerja kakitangan pelbagai mengecewakan yang dong hari mereka perlu bekerja pada hari. Anda juga akan melibatkan ketegangan yang lebih pada pelayan pemprosesan kerja anda kerana ia telah menghidangkan banyak dan banyak kepingan kecil kerja secara tetap. Akhir sekali, dalam situasi ini jika pelayan kerja anda turun anda akan membuat log masuk semula besar kerja yang belum selesai sedangkan pekerjaan yang lebih besar daripada terus memproses tidak sedar bahawa pelayan kerja sedang mengalami kesukaran.

Dalam realiti, akan ada satu konfigurasi yang ideal untuk setup grid anda, banyak bergantung kepada sumber-sumber yang sedia ada, jenis pekerjaan, keperluan pekerjaan masa yang diambil, keupayaan rangkaian, dan sebagainya. Walau bagaimanapun, beberapa garis panduan akan:

  • Pekerjaan Saiz bahawa setiap pekerja boleh mendapatkan melalui sekurang-kurangnya kerja 3-4 dalam tempoh 15 jam (paling lama mungkin masa tempoh yang terbiar)
  • Bermain dengan saiz kerja supaya masa persediaan menjadi adil tidak penting berbanding dengan masa pemprosesan (dengan mengambil titik di atas).
  • Jika pekerjaan tidak lengkap dalam jumlah dua kali ganda masa (mungkin kurang), anda menjangka ia selesai, ia menganggap bahawa AWOL hilang dan mula memproses dengan pekerja lain. Ini bermakna anda mungkin perlu menunggu sehingga tiga kali panjang biasa kerja untuk itu untuk menyelesaikan (mungkin lebih panjang jika kerja berikutnya gagal). Anda mungkin mahu mengurangkan masa ini, tetapi berhati-hati untuk tidak mengurangkan terlalu banyak kerana anda mungkin mula pendua tugas pemprosesan secara tetap.
  • Pekerjaan hendaklah bebas daripada keperluan di luar sebanyak mungkin. Pelayan pekerjaan, sebagai contoh, hanya perlu dihubungi pada permulaan dan akhir setiap kerja.
  • Jangan menepukan rangkaian anda, ini akan mempunyai dua kesan negatif, kakitangan siang hari anda akan mencari menggunakan rangkaian mengecewakan dan masalah yang mungkin dialami dengan sambungan masa masalah yang hanya akan menjadi lebih teruk seperti yang anda skala grid anda.
  • Memastikan kerja dapat berjalan kepada pekerja anda. Jika pekerjaan menjadi terlalu ingatan pekerjaan intensif ruang intensif atau cakera akan mula paksa dan satu-satunya perkara yang anda akan notis penurunan dalam bilangan pekerjaan yang diproses dengan tanpa sebab yang sebenar mengapa.

Menyerahkan Keputusan Ayub

Apabila mengemukakan hasil kerja adalah penting untuk memeriksa bahawa keputusan telah tidak diserahkan oleh pekerja lain, lebih-lebih lagi jika pekerja semasa telah tidak aktif untuk beberapa lama.

Apabila keputusan telah diserahkan memastikan bahawa jumlah hasil sepadan dengan bilangan rekod dalam kerja.

Seperti yang dinyatakan sebelum ini, dan tidak boleh lebih menekankan, membina toleransi kesalahan kepada mendapatkan semula pekerjaan dan penyerahan keputusan. Para pekerja boleh (dan kemungkinan besar akan) pergi ke mod menggantung pada kali yang paling menyusahkan dan ini perlu dipenuhi. Juga sekali lagi pengabstrakan penyerahan keputusan anda akan membantu menampung perubahan masa depan untuk sistem kawalan kerja anda lebih mudah untuk berurusan dengan.

Ringkasan

Dalam section ini kita telah melihat apa yang pelayan kerja kawalan perlu dilakukan dan bagaimana untuk mendapatkan satu sistem yang sangat asas yang ditetapkan. Kami membincangkan bagaimana untuk mendapatkan pekerjaan dari sistem kawalan dan cara terbaik untuk mengkonfigurasi pekerjaan untuk mendapatkan yang paling kami sistem grid pejabat anda. Hingga ke akhir, perenggan atau dua mengemukakan keputusan kembali ke pelayan kawalan kerja telah dibentangkan.

  • Pelayan kerja kawalan menguruskan pekerjaan dan memastikan semua unit kerja disiapkan
  • Dengan pengabstrakan kerja anda pilih / keputusan penyerahan kita boleh mengubah teknologi pelayan kawalan tanpa banyak masalah
  • Konfigurasi kerja anda untuk memastikan bahawa mereka berlari dengan pantas dan cekap tanpa meletakkan terlalu banyak tekanan ke atas infrastruktur rangkaian anda, dan tanpa pendua memproses tugas-tugas secara tetap.
  • Pastikan anda membina toleransi kesalahan dan checking kesilapan dalam rutin anda, pekerja boleh menggantung dan resume dan yang paling menyusahkan kali. Ingatlah untuk memeriksa jika keputusan telah pun diserahkan oleh pekerja lain.

Next time

Dalam 3 bahagian , kita akan mencipta mesin pemprosesan maya kami dan menubuhkan mesin tingkap kami untuk menjadi pekerja terbiar masa .

Pejabat Pengkomputeran Grid yang menggunakan persekitaran Maya - Part 5

Oleh , Jumaat 4 Disember 2009 11:03

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan kerja kumpulan yang memproses berjuta-juta rekod data setiap hari dan saya telah memikirkan baru-baru ini kira-kira semua mesin yang duduk di sekeliling setiap dan setiap hari melakukan apa-apa untuk beberapa jam. Bukankah lebih baik jika kita dapat menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set ini artikel saya akan melihat potensi manfaat menggajikan pejabat grid menggunakan persekitaran virtualised.

Dalam Bahagian 4 , kita melihat menggunakan alat-alat untuk memastikan bahawa kami menjalankan versi terbaru dari sumber-sumber kod dan data supaya mendapat keputusan sentiasa up-to-date dengan maklumat perniagaan yang terkini dan logik.

Pra-Deployment

Sebelum menggerakkan sistem grid anda jika ada satu perkara yang anda lakukan dan satu perkara sahaja ia penanda aras sistem semasa anda! Tidak kira apa yang anda beritahu rakan-rakan tentang berapa banyak kerja-kerja tambahan, sistem anda akan lakukan melainkan anda mempunyai nombor ke belakang ini sehingga jaminan anda apa-apa. Jadi,

  • berapa banyak rekod yang anda boleh memproses kini? Sehari? Sejam?
  • Berapa lamakah masa yang biasanya mengambil masa untuk pulih pekerjaan?
  • Berapa banyak lebih banyak kapasiti anda?

Terdapat juga soalan-soalan tambahan:

  • Jika pelayan pemprosesan anda (atau salah satu pelayan pemprosesan anda) pergi ke bawah bagaimana ini akan memberi kesan kepada keupayaan anda, anda akan lumpuh?
  • Kelebihan Apa yang anda berharap / mengharapkan untuk mendapatkan daripada sistem grid?
  • Adakah mesin-mesin pejabat anda yang boleh menjalankan pekerjaan?
  • Adakah anda (atau anda kerja boleh ditukar) untuk bekerja dalam gaya ini berjalan?

Perkara utama yang terakhir adalah untuk mengambil masa anda kepada apa-apa perubahan besar seperti ini. Update kod pemprosesan anda untuk bekerja menggunakan kaedah baru, penanda aras sekali lagi. Mungkin menubuhkan pelayan pemprosesan anda untuk menjalankan mesin virtual, selepas semua pelayan pemprosesan anda hanya akan menjadi pekerja yang lain (hanya satu yang sangat kuat relatif). Biarkan proses yang baru untuk menyelesaikan.

Deployment

Cadangan saya akan pop ke dalam hujung minggu satu pejabat melaksanakan semua pemasangan dan persediaan . Adakah ini betul-betul sebelum bercuti dua minggu dan meninggalkan begitu miskin lain bab untuk menangani kesan-kesan ... mungkin tidak ...

Kerahan untuk sistem seperti ini perlu perlahan. Walaupun ia agak mudah untuk menubuhkan sistem ini akan memberi kesan kepada keseluruhan infrastruktur pejabat anda (digital). Pertama, melancarkan beberapa mesin pada satu masa, memantau trafik rangkaian, bagaimana tuan rumah pekerja melaksanakan secara sehari-hari. Anda mungkin perlu mengubah konfigurasi tugas anda sebagai tindak balas kepada penemuan anda.

Apabila sistem telah diselesaikan dengan mesin beberapa (katakanlah 10% daripada semua mesin-mesin pejabat, iaitu 5) terus memantau trafik rangkaian dan mesin tuan rumah performance. penanda aras Seterusnya lagi, kini anda perlu memproses 33% lebih banyak peluang pekerjaan daripada penanda aras pertama anda. Semak ini adalah demikian, atau bahawa anda sekurang-kurangnya dalam ballpark ini. Jika tidak, menyiasat apa yang sedang berlaku sebelum beralih. Ulangi kitaran ini sehingga anda telah gembira semua mesin-mesin pejabat berjalan tanpa membunuh prestasi mesin individu atau mencanai rangkaian anda terhenti.

Pada setiap masa menyimpan penanda aras, walaupun selepas semua kerahan dibuat. Periksa bagaimana update kod baru memberi kesan kepada kelajuan sistem anda, periksa semua pekerja melaporkan dan pemprosesan pekerjaan. Perlahan-lahan (amat perlahan) kenaikan konfigurasi kerja anda untuk mendapatkan yang terbaik dari pekerja-pekerja dan rangkaian anda.

Stop!

Bagaimana jika anda ingin untuk menghentikan pekerja anda dari berjalan pada bila-bila masa beberapa? Mereka semua di luar sana berjalan, regenerasi, dan cuba yang terbaik untuk memproses data seperti serangga lapar. Jawapannya mungkin kelihatan jelas tetapi bernilai menambah hanya dalam kes terlepas pandang yang. Anda hanya perlu mengedit script pemprosesan anda dengan keluar (0) atau mati () atau beberapa kenyataan lain untuk membunuh kerja pemprosesan anda. Satu sebab penting mengapa kita sentiasa cuba untuk mengemaskini skrip pemprosesan terkini sebelum dikendalikan oleh mana-mana!

Sistem demonstrasi

Untuk menulis set artikel pendek ini saya mencipta grid yang sangat kecil untuk menunjukkan teknologi dan metodologi. Saya membaca banyak artikel, tutorial, dan menggunakan pelbagai alat untuk persediaan dan memantau apa yang berlaku. Tidak sekali-telah saya keluar dan tepu pejabat dengan lalu lintas dan tidak mempunyai saya mempunyai akses kepada kakitangan PC biasa untuk melihat bagaimana prestasi tuan rumah terjejas.

Sistem demonstrasi saya yang rendah diri sekali. Saya menggunakan desktop tetap saya sebagai pelayan kawalan kerja. Mengenai perkara ini, saya telah memasang MySQL server dipasang ditubuhkan sebagai induk dalam replikasi , PHP, Â dan SVN dihubungkan melalui apache (untuk akses melalui pekerja VM) .

Saya kemudian mencipta sebuah mesin pekerja CentOS di VirtualBox pada berusia 6 tahun laptop windows XP. Saya setup dijadualkan tugas-tugas seperti yang dinyatakan selepas menyalin VM ke mesin dan biarkan ia pergi.

Mesin maya telah ditubuhkan dengan PHP, subversif, dan MySQL. Saya memeriksa sebuah cawangan yang dinamakan 'pekerja' dari repository pelayan saya kawalan kerja dan memastikan ia boleh dikemas kini menggunakan 'svn update'. Kemudian saya setup MySQL sebagai hamba dan menyemak data mereplikakan dari MySQL pada pelayan kawalan kerja VM pekerja. Setelah semua ini, saya setup skrip Bash dan tugas cron.

Skrip pemprosesan saya pada dasarnya telah di sepanjang garis ini (barangan sangat mudah):

  • Baca dalam bidang nama
  • Dikira bilangan nama-nama yang sama dalam jadual dari sumber data yang diadakan pada VM
  • Menghitung bilangan nama-nama seperti nama di atas tetapi pemisahan oleh ruangan (iaitu nama kecil, pertengahan, nama keluarga)
  • Berulang-ulang proses ini 1,000 kali

Setiap kerja mengambil masa kira-kira 20 minit untuk berjalan. Pada satu ketika saya membuka beberapa salinan VM pekerja pada laptop tingkap dan melihat pekerjaan diperiksa oleh setiap alamat IP pekerja. Pada ketika ini, saya juga mengesahkan bahawa replikasi yang dimulakan semula secara automatik.

Meninggalkan laptop untuk terbiar menyebabkan pekerja mula untuk memproses kerja dari pelayan kawalan kerja. Apabila meneruskan penggunaan komputer riba, terdapat sedikit kelewatan kira-kira 30-60 saat, ini adalah satu jumlah yang adil masa dan kakitangan perlu dibuat sedar bahawa mesin mereka boleh fikir masa yang singkat apabila kembali ke mesin. Lebih baru mesin mungkin tidak mempunyai jeda yang panjang ini. Manfaat daripada jumlah pemprosesan yang dilakukan oleh mesin-mesin dalam tempoh yang terbiar akan lebih yang melebihi kakitangan perlu menunggu satu tempoh yang singkat (katakan 1 minit) untuk tiba di mesin mereka pagi (saya sering menunggu lebih lama ini untuk Windows Defender update untuk mengambil tempat) dengan syarat mereka sedar tentang perkara ini (masa yang berguna untuk merebut kopi pagi!).

Secara keseluruhan saya merasa yakin bahawa saya telah menunjukkan teknologi yang boleh digunakan untuk mewujudkan sistem seperti itu. Saya telah menunjukkan bahawa sistem seperti itu tidak bekerja pada skala (sangat) kecil dan dengan lebih banyak eksperimen boleh dipertingkatkan menggunakan sumber-sumber mesin sebuah pejabat. Jika saya tidak dapat berbuat demikian saya akan sangat berminat untuk mengetahui / melihat ketika orang lain tidak.

Kesimpulan / Penilaian

Langkah yang jelas seterusnya akan untuk benar-benar mendapatkan contoh dunia nyata dan mula untuk menggunakan sistem seperti ini dalam persekitaran pejabat dan lihat apa yang berlaku. Asking perniagaan untuk melakukan ini tanpa syarikat jejak yang menjulang-julang untuk membuktikan teknologi dan keberkesanan mungkin sedikit sukar. Grid / Distributed pengkomputeran sangat popular beberapa kumpulan dan mempunyai beberapa aplikasi yang besar (BIONC, Halkum @ Home Folding @ Home, dan lain-lain). Saya tidak, bagaimanapun, cari skala yang lebih kecil dan sistem mudah seperti ini dalam pencarian saya yang boleh dilaksanakan dalam persekitaran pejabat.

Saya telah mencipta sistem yang pada asasnya bebas menggunakan sumber perisian kebanyakannya terbuka dan alat-alat yang ada dalam hampir apa-apa jawatan. Teknologi pada asasnya telah menunjukkan dan menunjukkan untuk melaksanakan dan bekerja seperti yang diharapkan. Mudah-mudahan saya telah menunjukkan bahawa dengan kerja-kerja yang tidak banyak dan dengan persediaan yang sangat mudah, anda dapat digunakan oleh sistem pengkomputeran grid pejabat yang berkuasa, murah, Â dan berskala pada masa yang sama.

Apabila suatu sistem dan berjalan ada hampir tidak ada akhir untuk jumlah penyesuaian dan penambahbaikan yang anda boleh membuat. Sebagai contoh, statistik / penandaarasan boleh ditambah dengan mudah menunjukkan bernilai sistem seperti itu setiap hari. Mesin baru boleh ditambah dengan cepat dan mudah sebagaimana dan apabila mereka tiba dengan peningkatan kepada perkakasan yang sedia ada mengukuhkan kuasa pemprosesan anda.

Saya berharap anda seronok membaca siri artikel ini dan diberi makanan untuk pemikiran menjalankan sistem grid pejabat. Penyelesaian yang dibentangkan di sini tidak semestinya akan bekerja dalam semua keadaan tetapi harus menyesuaikan diri untuk membolehkan anda untuk mendapatkan pemprosesan data dilakukan dengan menggunakan penyelesaian anda sendiri.

Sila bebas untuk menghantar saya apa-apa komen, pembetulan atau penambahbaikan dan saya akan melakukan yang terbaik untuk menyimpan artikel yang dikemas kini untuk menyamai.













Tema Panorama oleh Themocracy

12 pelawat.
5 tetamu, 7 bots, 0 ahli
Pelawat Max today: 15 at 06:43 am UTC
Bulan ini: 19 19-08-2011 6:09 am UTC
Tahun ini: 130 28-03-2011 10:40 pm UTC
Semua masa: 130 28-03-2011 10:40 pm UTC