Posts tagged: virtualbox

Pejabat Pengkomputeran Grid menggunakan persekitaran Maya - Bahagian 3

Oleh , Jumaat 4 Disember 2009 23:37

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja kelompok pemprosesan berjuta-juta rekod data setiap hari dan saya telah memikirkan tentang semua mesin yang duduk di sekitar setiap hari dan setiap melakukan apa-apa untuk beberapa jam baru-baru ini. Bukankah lebih baik jika kita boleh menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set rencana-rencana ini, saya akan melihat manfaat yang berpotensi menggajikan pejabat grid yang menggunakan persekitaran virtualised.

Di bahagian 2 kita melihat pekerjaan pelayan akan berjalan, dan bagaimana kerja sepatutnya dikonfigurasi untuk mencapai jumlah terbesar pemprosesan di samping memastikan bahawa setiap pekerjaan diproses tanpa gagal.

Menubuhkan pekerja anda - atau pelayan tempang

Langkah seterusnya dalam proses untuk menubuhkan pekerja maya anda. Untuk ini, saya akan menggunakan pemasangan CentOS menggunakan VirtualBox. Saya hendak install mySQL dan PHP pada pelayan, juga dikenali sebagai tempang (Li Nux,. m ySQL P HP,) Server (Saya mungkin telah dibuat bahawa nama sehingga).

  • Memasang VirtualBox pada mesin tingkap anda (ikut pautan)
  • Muat turun dan pasang CentOS (semasa versi 5,3) dalam mesin maya yang dicipta

Tidak ada titik saya pergi ini mungkin ada s 1.000 tutorial hebat di luar sana (ok, di sini adalah satu: Mewujudkan dan Managing CentOS maya mesin di bawah virtualbox ). Titik penting untuk mengambil perhatian saya kira bahawa saya dipanggil mesin maya saya GridMachine.

Sejauh seperti pilihan pelanggan maya dan sistem operasi saya pergi, tidak ada sebab besar yang menarik untuk setiap pilihan. VirtualBox adalah sesuatu yang saya gunakan pada mesin rumah saya dan disokong oleh tiga sistem pengendalian utama. Saya memilih CentOS sebagai OS yang stabil baik dan saya menggunakannya pada pelayan web saya sendiri. Saya mempercayai besar dalam alat-alat yang sesuai untuk kerja (walaupun saya memohon 'menggunakan yang paling cepat dan paling mudah untuk anda' minda di sini), jadi jika sistem operasi X menjalankan kod anda lebih cepat dan cekap menggunakan bahawa bukannya :)

Penting memastikan bahawa VM anda menggunakan DHCP, sebaliknya bagi setiap mesin maya baru perlu diatur secara berasingan yang merupakan sesuatu yang kita tidak want.By menggunakan DHCP kita tidak perlu untuk mengkonfigurasi tetapan rangkaian individu untuk mesin pekerja, DHCP akan menyerahkan keluar IP untuk anda. Oleh itu anda boleh menyalin mesin maya anda tentang pejabat tanpa perlu bimbang menetapkan setiap satu (ini meningkatkan skala dan mengurangkan pentadbiran pekerja).

Proses anda perlu berusaha untuk mencapai adalah untuk mendapatkan mesin baru fizikal, memasang VirtualBox, dan kemudian cukup banyak menempatkan imej maya tanpa banyak lain. Ia mungkin bijak untuk persediaan semua pekerja anda pada subnet yang berbeza supaya anda sekurang-kurangnya dapat melihat berapa banyak mesin berjalan. Anda juga perlu untuk menubuhkan mesin anda ke atas pajakan yang lama atau tanpa had pajakan DHCP.

Bagaimana menjalankan Pekerjaan pada pekerja

Ini adalah kawasan yang menarik dan terdapat beberapa kaedah yang sah untuk memproses kerja pada pekerja. Di sini saya hanya akan membincangkan dua yang paling jelas:

  • Sentiasa menjalankan skrip: skrip A, sama ada skrip shell, atau skrip PHP dilaksanakan sekali pada pekerja dan berjalan sebagai sebahagian daripada gelung tak terhingga. Saya telah didiskaunkan kaedah ini sebagai salah satu kemalangan skrip dan berpotensi untuk pekerja anda akan terhenti berjalan tanpa sejenis campur tangan.
  • Cron pelaksanaan skrip berasaskan: Setiap minit X daemon cron bermula panggilan kepada script kamu untuk mendapatkan hal yang terjadi. Tanpa semakan beberapa ini boleh membawa kepada salinan banyak berjalan skrip pekerja anda.

Keputusan saya adalah pergi dengan cron yang bermula skrip shell setiap minutes. yang 10 skrip shell saya melaksanakan tugas-tugas berikut:

  1. Dapatkan senarai proses dan grep ini untuk 'php'. Jika tidak dijumpai, maka terus.
  2. Panggil kod kerja anda, dalam kes saya ini akan menjadi PHP sesuatu berdasarkan
  3. Skrip pekerja melengkapkan jangka
  4. Bersedia untuk pergi sekali lagi pada panggilan yang sesuai akan datang

Skrip Bash saya kelihatan seperti berikut:

  #! / Bin / sh
 jika ps ax | grep-v grep | grep php> / dev / null
 kemudian
     echo "Kerja sedang memprosesnya, keluar"
 lain
     echo "Kerja tidak berjalan, bermula sekarang"
     php yourJobProcessingScript.php
 Wayar 

Nota: ini gema hampir sepenuhnya sia-sia, tetapi boleh membantu orang seterusnya yang datang untuk mencuba dan mengedit mereka.

Yang menyimpulkan set mesin pekerja maya, cepat, mudah, dan mudah untuk menyalin setiap keping baru perkakasan yang diterima. 'Kepintaran' sistem grid benar-benar tidak dalam OS digambarkan, semua untuk melakukan dengan kod yang diwujudkan untuk pekerjaan proses, konfigurasi pekerjaan, dan dalam memastikan bahawa kerja berjalan apabila sesuai (iaitu apabila tuan rumah adalah terbiar ).

Menubuhkan Windows untuk Initialise Pekerja

Tugas pertama adalah untuk bekerja arahan yang diperlukan untuk menjalankan mesin maya daripada baris arahan tingkap. Jika anda telah dipasang virtualBox di lokasi lalai dan anda telah dinamakan GridMachine pekerja anda, maka arahan yang diperlukan untuk memuatkan pekerja anda adalah:

  "C: Program Files \ \ Ahd \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Walau bagaimanapun untuk menjalankan skrip dalam keadaan 'tidak berkepala' kita perlu menggunakan:

  "C: Program Files \ \ Sun \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - vrdp = mati 

Ini akan mula mesin maya tanpa GUI dan membenarkan untuk menyelamatkan keadaan dengan anggun. Hujah kedua mematikan RDP supaya ia tidak bercanggah dengan tingkap RDP, atau memberi mesej tentang pendengaran di pelabuhan 3389. Nama mesin maya adalah case sensitive!

Seterusnya, kita akan perlu untuk menetapkan tingkap untuk memulakan VM pekerja kami sekali mesin telah terbiar. Untuk melakukan ini (pada Windows XP), anda akan perlu pergi Start -> All Programs -> Aksesori -> Utiliti Sistem -> Berjadual Tugas seperti di bawah:

dijadualkan tugas

Kemudian klik pada 'Tambah Petugas Terjadual' diikuti dengan melayari untuk menambah program tersuai. Navigate kepada tulisan VBoxManage anda dan klik ok. Jadual tugas anda untuk mana-mana pilihan (kami akan menukar ini pada minit) dan terus. Selepas ponteng skrin seterusnya tingkap akan meminta anda yang anda mahu menjalankan tugas ini, saya hendak mencadangkan sama ada 'Pentadbir' atau mewujudkan pengguna yang istimewa yang baru. Ingatlah kita tidak mahu campur tangan dengan akaun kakitangan standard pada mesin pada bila-bila. Klik depan dan periksa opsyen acara maju untuk tugas ini.

Hingga akhir textbox jangka menambah rentetan kami 'startvm GridMachine' dan memastikan jangka bahawa hanya apabila log masuk di kiri unticked. Lawati tugas jadual akan datang dan menukar jadual drop down pilihan 'apabila siap sedia', memilih jumlah masa yang anda ingin mesin untuk menjadi terbiar sebelum bergerak ke tab seterusnya.

Akhirnya untick pilihan yang menyatakan menghentikan tugas jika ia telah berjalan jumlah X masa, tetapi tandakan pilihan untuk menghentikan tugas jika mesin tidak lagi terbiar.

jadual

Itu sahaja maka bagi persediaan tuan rumah tingkap!

Ringkasan

Pada bahagian ini, kami telah menetapkan mesin maya untuk bertindak sebagai seorang pekerja, serta cara yang kita panggil dan melaksanakan skrip pemprosesan tugas kami (untuk diri saya skrip PHP). Dari sini kita melihat bagaimana untuk menubuhkan salinan kami tingkap untuk memulakan mesin maya dalam mod berkepala apabila komputer menjadi terbiar, dan menyelamatkan keadaan apabila pengguna disambung semula penggunaan mesin. Semoga pada ketika ini anda melihat bagaimana mudah ia adalah untuk menubuhkan satu sistem sedemikian dan gatal-gatal untuk mendapatkan beberapa eksperimen akan diri anda!

Masa yang akan datang

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

Pejabat Pengkomputeran Grid menggunakan persekitaran Maya - Bahagian 1

Oleh , Jumaat 4 Disember 2009 11:23

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja kelompok pemprosesan berjuta-juta rekod data setiap hari dan saya telah memikirkan tentang semua mesin yang duduk di sekitar setiap hari dan setiap melakukan apa-apa untuk beberapa jam baru-baru ini. Bukankah lebih baik jika kita boleh menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set rencana-rencana ini, saya akan melihat manfaat yang berpotensi menggajikan pejabat grid yang menggunakan persekitaran virtualised.

Sebagai seorang 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 dan.

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

Persekitaran virtualised akan berjalan di mesin tingkap kerana ini adalah apa yang majoriti pejabat berjalan. Pemprosesan bahawa mesin pejabat tidak seharusnya mengganggu kakitangan menggunakan mereka mesin, sepatutnya tidak memerlukan penyelenggaraan mesin, dan mudah deployable mesin baru kerana ia menjadi tersedia. Juga, mesin maya baru tidak perlu menghendaki mana-mana konfigurasi tambahan kerana ini banyak mengurangkan keupayaannya untuk diperluas dan mudah di mana sistem grid boleh dilanjutkan.

Mengapa menempatkan Pejabat Pengkomputeran Grid?

Pertama anda mungkin terfikir, mengapa tidak hanya menggunakan sumber cloud computing seperti platform Amazon EC2 ? Baik alasannya adalah beberapa contohnya:

  • Anda tidak akan mengamanahkan data tertentu kepada persekitaran perkomputeran awan
  • Anda tidak boleh meletakkan data tertentu ke dalam persekitaran perkomputeran awan atas sebab-sebab undang-undang (meninggalkan data contohnya negara), berpotensi untuk sebab-sebab undang-undang, contohnya NHS rekod.
  • Yang anda hendak simpan unit pemprosesan anda menutup dan mempunyai kawalan penuh ke atas perkakasan terlalu
  • Anda tidak mempunyai dana projek untuk menjalankan kejadian 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 itu boleh terus, tetapi saya fikir itu sudah cukup buat masa sekarang.

Kelebihan Grid Computing Pejabat

Baik, mari kita melakukan beberapa matematik (dan dalam gaya fizik benar membolehkan membuat beberapa andaian yang menyapu). Bayangkan anda mempunyai pelayan pemprosesan besar berdaging berlari 100 pekerjaan setiap hari. Di pejabat anda, anda mempunyai 50 mesin yang terbiar 16 jam sehari, setiap mesin ini adalah 10% berkuasa sebagai pelayan pemprosesan berdaging anda. (Semua keputusan di sini bulat untuk memandang rendah peningkatan prestasi).

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

Jika anda sekarang penskalaan ini yang mengambil masa 15 desktop terbiar untuk memproses seberapa banyak pekerjaan sehari sebagai pelayan pemprosesan utama anda.

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

Notis, tidak bagi pelaburan dalam perkakasan baru syarikat anda baru sahaja meningkatkan kapasiti pemprosesan kelompok 4 kali! Berpotensi anda akan meningkatkan penggunaan kuasa anda tetapi kebanyakan dari persekitaran pejabat saya pernah ke mesin umumnya ditinggalkan pada semalaman pula, supaya anda dapat melihat ini sebagai inisiatif hijau.

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

Teknologi

Apa yang anda perlukan? (Atau lebih tepat lagi apakah yang dilakukan oleh saya menggunakan):

  • Mesin pejabat terbiar (dalam kes saya XP komputer riba ganti lama tingkap)
  • VirtualBox (atau perisian maya klien yang lain)
  • Sebuah mesin maya dengan PHP, mySQL running menjalankan cut turun OS, saya memanggil pelayan tempang ini saya :)
  • Pekerjaan untuk menjalankan
  • Pelayan kerja (boleh menjadi satu lagi mesin maya tempat)

Pekerjaan tipikal

Jenis-jenis pekerjaan yang bahawa sistem ini direka untuk dilaksanakan adalah seperti berikut:

  • Sistem menerima senarai data yang kita perlu untuk memadankan dan mengembalikan hasil
  • Padanan melibatkan memeriksa / mencari sumber data beberapa (agak statik)
  • Keputusan daripada sumber-sumber data mungkin memerlukan pengesahan lanjut, penggabungan, memeriksa sumber data tambahan sebagai respons kepada keputusan
  • Data dikembalikan sepadan dengan rekod, disahkan sepenuhnya dan diproses
  • Setiap rekod dalam pekerjaan adalah bebas daripada yang lain

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

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

Apa yang kita akan capai?

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

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

Saya akan menjadi bangunan (ok saya dibina, kemudian menulis ini) permohonan contoh 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 tidak bertujuan untuk menunjukkan sistem yang sepenuhnya bekerja, bermakna lebih satu demonstrasi dan membincangkan menunjukkan bahawa perkara-perkara ini boleh dicapai dalam ruang masa yang agak singkat dan pada kos yang sedikit. Sila berasa bebas untuk menghantar saya untuk sebarang komen, pembetulan atau penambahbaikan dan saya akan melakukan yang terbaik untuk menyimpan artikel ini dikemas kini untuk menyamai.

Masa yang akan datang

Dalam bahagian 2 saya akan bermula dengan melihat pada sistem kawalan kerja, dan melihat kepada bagaimana kerja sepatutnya dikonfigurasi untuk mencapai jumlah terbesar pemprosesan di samping memastikan bahawa setiap pekerjaan diproses tanpa gagal.

Pejabat Pengkomputeran Grid menggunakan persekitaran Maya - Bahagian 2

Oleh , Jumaat 4 Disember 2009 11:23

Pengenalan

Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja kelompok pemprosesan berjuta-juta rekod data setiap hari dan saya telah memikirkan tentang semua mesin yang duduk di sekitar setiap hari dan setiap melakukan apa-apa untuk beberapa jam baru-baru ini. Bukankah lebih baik jika kita boleh menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set rencana-rencana ini, saya akan melihat manfaat yang berpotensi menggajikan pejabat grid yang 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 perlu menjalankan kerja maka anda akan memerlukan beberapa cara untuk menguruskan mereka. Keperluan sistem kawalan kerja anda pada pelayan kerja anda akan benar-benar difikirkan dengan baik sebelum cuba untuk menjalankan grid pejabat. Jadi pertamanya, apakah tugas untuk sistem kawalan kerja:

  • Membiayai aktiviti pekerjaan atas permintaan daripada pekerja
  • Memberitahu pekerja apa jenis daripada pekerjaan untuk menjalankan
  • Trek pekerjaan
  • Pastikan yang pekerjaan hanya dijalankan sekali
  • Menyediakan data pekerjaan kepada pekerja-pekerja, atau sekurang-kurangnya memberitahu mereka di mana untuk mendapatkan

Sistem ini juga perlu untuk menjadi extensible, satu penyelesaian yang bekerja buat masa ini dalam kes satu boleh dilanjutkan untuk menjalankan beberapa jenis pekerjaan sebagai perniagaan melihat dalam penyelesaian grid bernilai. Sebagai contoh, pekerjaan boleh mendapat keutamaan lebih daripada satu jenis kerja mungkin wujud (iaitu beberapa asas kod), akhirnya anda mungkin menjalankan beberapa mesin pekerja berbeza yang dioptimumkan untuk setiap jenis pekerjaan (walaupun yang tidak bergerak jauh daripada pekerja 'generik 'idea). Sentiasa cuba untuk berfikir tentang masa depan apabila membangunkan sistem, visi jangka pendek boleh membawa kepada kekecewaan jangka panjang dan peningkatan masa pembangunan.

Pelayan kerja

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

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

Terdapat tiada sebab kemudian bahawa pelayan kerja anda tidak boleh menjadi mesin maya berjalan dalam pelayan pemprosesan utama anda dengan syarat ia tidak mengalirkan sumber-sumber yang terlalu banyak daripada ia. Walau bagaimanapun, pelayan pekerjaan tidak memerlukan ketersediaan tinggi, jika ia menjunam pada malam Jumaat anda akan kehilangan hujung minggu seluruh pemprosesan, berpotensi berharga beberapa minggu yang bernilai masa pemprosesan (apabila dibandingkan dengan pelayan pemprosesan utama anda sahaja) . Anda mungkin mahu mempertimbangkan untuk meletakkan pelayan kerja anda terhadap alam sekitar beban yang seimbang bagi ketersediaan tinggi.

Persediaan Asas

Persediaan asas untuk pelayan tugas kami akan terdiri daripada apa yang saya memanggil salah satu pelayan tempang saya (yang Nux Li, m ySql, 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 pada kita dapat mewujudkan perkhidmatan web dan sebenarnya tangan keluar pekerjaan dan bukannya mempunyai para pekerja melakukan kerja keras sendiri, tetapi sekarang ini kita akan terus menggunakan prinsip KISS (Keep it Simple, Stupid!).

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

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

Jadual ini terdiri daripada 5 bidang yang mudah,

  • id: Unik mengenal pasti pekerjaan
  • name: dapat menjadi rujukan pelanggan, atau mana-mana nombor pengenalan lain
  • Status: Anda perlu tahu di mana kerja adalah pada, contohnya
    • 0: Tidak memulakan
    • 1: meningkat
    • 2: Siap
  • started_by: Siapa yang mula melakukan kerja? Ini tidak sepenuhnya diperlukan tetapi adalah baik untuk mempunyai. 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 pemprosesan oleh pekerja lain. Pekerja boleh berhenti pemprosesan / pergi offline untuk apa-apa bilangan sebab, kegagalan kuasa, kemalangan, kehilangan rangkaian, dll.

Ia adalah mudah bagaimana jadual ini boleh dilanjutkan dengan beberapa bidang tambahan bagi membolehkan statistik pengesanan, lajur penamat masa untuk melihat berapa lama Kerja mengambil, kaunter untuk melihat berapa ramai pekerja yang mengambil kerja (jelas ini perlu cenderung untuk 1), keutamaan kerja, senarai yang boleh menyala dan menyala. Dalam senario pekerjaan yang lebih kompleks, ia akan dibuat untuk menentukan berapa banyak memori pekerja akan memerlukan akses kepada (dan oleh itu hanya menggunakan pekerja yang sesuai), atau pun jenis pekerja yang dikehendaki.

Mari menambah beberapa pekerjaan contoh:

contoh kerja

Jadual seterusnya sekali lagi agak ringkas difahami, ini adalah rekod tugas kami. Mereka ada kaitan dengan jadual kerja utama oleh kolum `jobs_id`. Membuat jadual ini amat bergantung kepada data yang anda perlukan untuk membekalkan kepada pekerja-pekerja anda, membolehkan membuat contoh yang sangat mudah di mana kita ada 4 lajur:

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

Jadual ketiga dan terakhir terdiri daripada jadual keputusan, ia mempunyai banyak yang sama mengikut jadual rekod kami, dan dengan penambahan beberapa lajur boleh menjadi sebahagian daripada jadual rekod:

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

... Dan itulah 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 pekerjaan

Seperti yang dinyatakan sebelum ini, pekerja akan melakukan pengurusan tugas kita untuk kita sekarang, jadi kita perlu benar-benar melakukan mencari pekerjaan yang memerlukan pemprosesan dan mendapatkan maklumat. Bagaimana kita akan melakukan ini? Juga memilih kriteria pemilihan kerja kami dan mencari pekerjaan, dalam SQL saya lakukan yang berikut:

  1. Mengambil mana-mana kerja yang tidak ditandakan sebagai lengkap tetapi dari pekerja kami dan menetapkan semula mereka (menggantikan ME__ __ dengan pengecam, mudah akan menjadi alamat IP):
      UPDATE `kerja` SET `status` = 0 MANA `status` = 1 DAN `started_by` = __ ME__; 
  2. Menggunakan kriteria pemilihan kerja kami, memilih pekerjaan dan memberitahu sistem kawalan bahawa pekerja ini berurusan dengan:
      UPDATE `kerja` SET `status` = 1, `started_by` = __ ME__, `started_at` = SEKARANG () DI MANA `status` = 0 ATAU
     (`Status` = 1 DAN `started_at`> DATE_SUB (SEKARANG (), JARAK X JAM)) PERINTAH OLEH `id` ASC; 

    Oleh pekerjaan capaian anak yang telah tidak dikembalikan keputusan dalam jumlah X masa kita memastikan bahawa semua kerja berjalan sekiranya pekerja terhempas atau akan AWOL.

  3. Seterusnya merebut butiran pekerjaan yang diikuti dengan rekod itu sendiri:
      SELECT * DARIPADA `kerja` MANA `started_by` = __ ME__ HAD 1;
     Pilih * DARIPADA `job_records` MANA `id` = __ JOBID__; 

Setelah selesai kerja, kami memasukkan rekod hasil dan menandakan pekerjaan sebagai lengkap. Ingat sebagai pekerjaan boleh menggantung / disambung semula pada bila-bila masa membolehkan untuk ketegapan beberapa 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 kepada sistem kawalan kerja akan menjadi satu langkah yang bijak.

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

Konfigurasi kerja

Aspek seterusnya adalah untuk saiz pekerjaan dan konfigurasi. Dengan bermain dengan konfigurasi kerja kita boleh menyerang keseimbangan yang terbaik antara kelajuan, replikasi proses, dan kebolehpercayaan. Ambil senario Salim pasangan:

  1. Pekerjaan mengambil 1 setiap hari untuk menjalankan: Ini bermakna bahawa pekerja-pekerja anda memerlukan 15 hari untuk memproses setiap pekerjaan (ingat 10% daripada kuasa untuk 2/3rds masa). Ini adalah jelas tidak tatarajah bijaksana, saiz tugas anda ialah terlalu besar! Ia akan mengambil masa sekurang-kurangnya dua kali ganda masa untuk mendapatkan pekerjaan diproses pekerja awal yang perlu pergi AWOL (masa mengutip bahawa ia telah tidak dikembalikan hasil tambah masa pemprosesan semula). Dalam ideal anda akan mempunyai sekurang-kurangnya satu kerja mudah dibersihkan oleh akhir setiap tempoh terbiar panjang, dengan cara itu anda menyimpan pekerjaan berdetik lebih dan paling teruk kes pekerjaan akan mengambil masa dua hari untuk proses yang pertama harus hilang.
  2. Pekerjaan mengambil 1 minit untuk menjalankan: Ini bermakna bahawa pekerja-pekerja anda mengambil masa kira-kira 15 minit untuk menjalankan setiap pekerjaan. Walaupun ini pada mulanya mungkin kelihatan sesuai, anda boleh mendapat pemprosesan kerja-kerja tambahan pada waktu makan tengahari, rehat kopi, mesyuarat, dll senario ini meletakkan tekanan pada kawasan lain sistem anda dan memperkenalkan masalah sendiri. Sebagai contoh, pertama nisbah tetapan / pemprosesan masa anda akan pergi ke bawah, oleh itu kehilangan kecekapan sistem. Rangkaian anda akan menjadi kerja yang sentiasa streaming maklumat kepada pekerja mengecewakan pelbagai kakitangan yang dong hari mereka untuk kerja hari. Anda juga akan meletakkan ketegangan yang lebih pada pelayan pemprosesan kerja anda kerana ia mempunyai ketepikan banyak dan banyak kepingan kecil kerja secara tetap. Akhir sekali, dalam situasi ini jika pelayan kerja anda terbenam anda akan mewujudkan log belakang besar kerja yang belum siap manakala lebih besar pekerjaan boleh terus memproses tidak sedar bahawa pelayan kerja mengalami masalah.

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

  • Pekerjaan saiz supaya setiap pekerja boleh mendapatkan melalui sekurang-kurangnya pekerjaan 3-4 dalam tempoh 15 jam (yang paling lama tempoh masa mungkin terbiar)
  • Bermain dengan saiz kerja supaya masa persediaan menjadi agak kecil berbanding dengan masa pemprosesan (berkenaan dalam minda titik di atas).
  • Jika kerja tidak lengkap dalam jumlah dua kali ganda masa (mungkin kurang) anda menjangka ia selesai, ia mengandaikan bahawa AWOL hilang dan mula memproses dengan pekerja lain. Ini bermakna anda mungkin perlu menunggu sehingga tiga kali panjang biasa kerja untuk melengkapkan (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 menduplikasi tugas pemprosesan secara tetap.
  • Pekerjaan seharusnya 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 mendapati menggunakan rangkaian mengecewakan dan masalah boleh dialami dengan sambungan menentukan masa yang sesuai masalah yang hanya akan bertambah buruk sebagai anda skala grid anda.
  • Memastikan kerja boleh dijalankan ke atas pekerja anda. Jika pekerjaan menjadi terlalu memori pekerjaan ruang intensif atau cakera intensif akan bermula paksa dan satu-satunya perkara yang anda akan perasan penurunan dalam bilangan pekerjaan yang diproses dengan tanpa sebab sebenar mengapa.

Mengemukakan Keputusan Ayub

Apabila mengemukakan hasil kerja adalah penting untuk memeriksa bahawa keputusan telah tidak diserahkan oleh pekerja lain, terutamanya jika pekerja semasa telah tidak aktif untuk beberapa waktu.

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

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

Ringkasan

Dalam section ini kita telah melihat di pelayan kerja kawalan perlu lakukan dan bagaimana untuk mendapatkan satu sistem yang sangat asas ditubuhkan. Kami membincangkan cara untuk mengambil kerja 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 kawalan kerja menguruskan pekerjaan dan memastikan bahawa semua unit kerja telah siap
  • Oleh pengabstrakan kerja anda pilih / keputusan penyerahan kita boleh mengubah teknologi pelayan kawalan tanpa banyak masalah
  • Mengkonfigurasi pekerjaan anda untuk memastikan bahawa mereka berjalan dengan pantas dan cekap tanpa meletakkan terlalu banyak tekanan ke atas infrastruktur rangkaian anda, dan tanpa menduplikasi tugas pemprosesan secara tetap.
  • Pastikan anda membina toleransi kesalahan dan checking kesilapan ke dalam rutin anda, pekerja boleh menggantung dan resume dan yang paling menyusahkan kali. Ingatlah untuk memeriksa jika keputusan telah pun diserahkan oleh pekerja lain.

Masa yang akan datang

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













Tema Panorama oleh Themocracy

3 pelawat online sekarang
2 tetamu, 1 bot, 0 ahli
Max pelawat hari ini: 13 pada 09:29 am UTC
Bulan ini: 16 di 2012/1/5 01:02 pm UTC
Tahun ini: 69 pada 27-02-2012 09:56 am UTC
Semua masa: 130 pada 28-03-2011 10:40 pm UTC