Dinamis menambahkan halaman untuk kontainer Zend_Navigation pada saat runtime

Dengan Watkin Lloyd Steven , Kamis 7 Januari 2010 22:50

Dalam kelanjutan di posting terakhir saya tentang Zend_Navigation, permintaan Rute untuk sitemap.xml untuk kontrol kustom / tindakan , posting ini adalah tentang dymnamically menambahkan halaman ke wadah Zend_Navigation saat runtime / eksekusi script.

Its semua baik dan bagus menentukan halaman Anda dalam Suami atau xml file tetapi pada beberapa titik Anda akan memiliki halaman berubah di situs Anda yang Anda inginkan sebagai bagian dari sitemap, menu, atau untuk dimasukkan dalam jejak breadcrumb Anda. Oleh karena itu apa yang perlu kita lakukan adalah menambahkan halaman untuk kontainer Zend_Navigation kami pada saat runtime. Contoh untuk ini akan dalam menambahkan item berita, posting blog, atau komentar halaman, dll

Lanjutkan membaca 'dinamis menambahkan halaman untuk kontainer Zend_Navigation pada saat runtime' »

Rute permintaan sitemap.xml untuk kontrol kustom / tindakan

Dengan Watkin Lloyd Steven , Rabu 6 Januari 2010 00:13

Dalam rangka permintaan langsung / sitemap.xml ke controller adat dan tindakan dalam Anda Zend Framework aplikasi cukup tambahkan berikut dalam application.ini Anda atau alternatif file konfigurasi (misalnya saya menggunakan navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = indeks
 resources.router.routes.sitemap.defaults.action = sitemap

Contoh kode untuk keluaran dapat dilihat dengan menciptakan suatu tindakan di pengontrol yang sesuai (misalnya sitemap saya terletak pada controller indeks, sitemap tindakan):

 < php
 kelas IndexController
     meluas Zend_Controller_Action
 {
     / **
      * Renders sebuah sitemap berdasarkan Zend_Navigation setup
      * /
     fungsi publik sitemapAction ()
     {
    	 echo $ navigasi pandangan ini->-> () -> sitemap ();
    	 $ This tampilan layout->-> () -> disableLayout ();
    	 $ This setNoRender-> viewRenderer-> _helper-> (true);
     }
 }

Peta Situs dapat dengan cepat dan mudah dihasilkan menggunakan Zend_Navigation , yang besar cepat tutorial (dan umumnya sangat berguna untuk tutorial Zend Framework) adalah Zend Pemain - dinamis menciptakan menu sitemap dan tepung roti .

Zend Framework Modul berdasarkan pengaturan Per-

Dengan Watkin Lloyd Steven , Jumat 1 Januari 2010 22:40

Saya telah membuat tindak lanjut untuk posting ini yang memerlukan konfigurasi kurang, silakan lihat Modul Berbasis Layout - Zend Framework .

Bila menggunakan Zend Framework dengan modul, jelas bahwa jika Anda menjalankan berbagai (sub-) situs dari aplikasi yang sama Anda tidak harus menginginkan hal yang sama script tata letak untuk setiap bagian. Saya memutuskan untuk pergi dengan struktur situs berikut:

  / Aplikasi
     / Controllers
         ...
     / Model
     / Modul
         / Default
             / Controllers
             / Layout
                 / Script
             / Views
                 / Script
         / AnotherModule
             ...
     / Script

Masalahnya adalah menyiapkan script tata letak pada basis per-modul. Jawabannya datang melalui menggunakan Penolong Aksi. Menyiapkan layout pada basis per-modul melibatkan tiga langkah:

  1. Application.ini (atau setup konfigurasi serupa):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouts / skrip"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouts / skrip"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouts / skrip"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / afiliasi / layouts / skrip" 
  2. Buat Anda Tindakan Helper:
      <? Php
     / **
      * Mengatur jalur tata letak pada basis per-modul
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Sejak 2010/01/01
      * /
     kelas Pro_Controller_Action_Helper_SetLayoutPath
         meluas Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Mengatur jalur layout berdasarkan modul
          * /
         fungsi publik preDispatch ()
         {
        	 $ Modul getRequest = $ this-> () -> getModuleName ();
    
    	     if ($ bootstrap = getActionController $ this-> ()
    	                        -> GetInvokeArg ('bootstrap')) {
    
    	         $ Config = $ getOptions bootstrap-> ();
    
    	         if (isset ($ config ['layoutPath'] ['layout'] [$ modul] ['sumber'])) {
    	             $ LayoutPath =
    	                  $ Config [$ modul] ['layoutPath'] ['layout'] ['sumber'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Dan terakhir metode bootrap ini helper tindakan:
      ...
         / **
          * Mengatur tata letak script pada basis per-modul
          * /
         fungsi dilindungi _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         baru Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doktrin: DATETIME default NOW ()

Dengan Watkin Lloyd Steven , Rabu 30 Desember 2009 18:30

Aku sudah berjuang dengan menyiapkan sebuah skema database baru Zend Framework proyek. Aku menggunakan mencoba untuk menggunakan Ajaran ORM untuk model database saya. Aku harus menyiapkan skema sehingga memungkinkan saya untuk menetapkan tanggal dan waktu default untuk kolom `datetime`, misalnya saat menambahkan pesan baru saya mendapatkan timestamp saat ini. Setelah banyak mencari dan bereksperimen saya menemukan solusi jadi aku berbagi.

Dalam skema Anda YAML file cukup lakukan hal berikut:

 Pesan:
   actAs:
     Timestampable:
       dibuat:
         Nama: created_at
         ketik: timestamp
         Format: TBH H: i: s
       diperbarui:
         Nama: last_updated
         ketik: timestamp
         Format: TBH H: i: s
   kolom:
     id:
       Tipe: integer
       utama: true
       AUTOINCREMENT: true
     name: string (255)
     email: string (300)
     pesan: string (2000)

Jika di sisi lain Anda tidak ingin sebuah `updated_at` kolom Anda dapat menggunakan sebagai berikut:

 Pesan:
   actAs:
     Timestampable:
       dibuat:
         Nama: created_at
         ketik: timestamp
         Format: TBH H: i: s
       diperbarui:
         dinonaktifkan: true
   kolom:
     id:
       Tipe: integer
       utama: true
       AUTOINCREMENT: true
     name: string (255)
     email: string (300)
     pesan: string (2000)

PHP Design Patterns - Pola Observer

Dengan Watkin Lloyd Steven , Selasa 29 Desember 2009 22:02

Aku sudah membaca Kepala Pertama Design Patterns baru-baru ini dan telah memutuskan untuk menulis beberapa pola sebagai contoh PHP untuk keuntungan sendiri. Yang pertama bahwa saya telah memutuskan untuk kode up adalah Pola Observer . Definisi formal Pola Observer adalah:

Pola pengamat (a subset dari asinkron mempublikasikan / berlangganan pola ) adalah sebuah perangkat lunak desain pola di mana sebuah objek , yang disebut subjek, menyimpan daftar tanggungan perusahaan, pengamat disebut, dan memberitahu mereka secara otomatis dari setiap perubahan negara, biasanya dengan menelepon salah satu dari mereka metode . Hal ini terutama digunakan untuk mengimplementasikan sistem penanganan acara terdistribusi.

Ketika sistem menjadi lebih longgar digabungkan memastikan bahwa ketika sebuah peristiwa terjadi semua sistem yang memerlukan pengetahuan update ini diinformasikan. Misalnya, posting blog, setelah menyimpan tulisan kita mungkin perlu memperbarui mesin pencari (misalnya Lucene), update sitemap kita, tag, pengguna berlangganan email, dll Pola pengamat memungkinkan pengembang untuk menambahkan pendengar tambahan tanpa mengedit objek diamati mereka . Dengan menyuntikkan pengamat (yaitu mesin pencari pengamat update, sitemap generator, dll) ke dalam (sistem posting blog yaitu mengedit) subjek kita dapat memungkinkan untuk melakukan semua pembaruan yang diperlukan tanpa perubahan apapun.

Continue reading 'PHP Design Patterns - Pola Observer' »

Kantor Grid Computing menggunakan lingkungan Virtual - Bagian 4

Dengan Watkin Lloyd Steven , 4 Desember 2009 23:59 Jumat

Pengantar

Saya bekerja di sebuah perusahaan di mana kita menjalankan banyak pekerjaan batch processing jutaan catatan data setiap hari dan saya sudah berpikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita bisa menggunakan mesin-mesin untuk meningkatkan kekuatan pemrosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat mempekerjakan kantor grid menggunakan lingkungan virtualised.

Di bagian 3 kita buat mesin pengolah virtual kami dan mengatur mesin windows menjadi pekerja waktu idle.

Menjalankan kode terbaru

Tak pelak setelah membuat logika bisnis Anda pekerja akan berubah, bug yang akan ditemukan, lebih efisien kode yang lebih cepat akan diproduksi sehingga membuat pekerja Anda duduk di sekitar pengolahan data menggunakan kode bau tua . Lalu bagaimana kita memastikan bahwa kami selalu menggunakan versi terbaru dan terbaik dari pengolahan script kita?

Ada beberapa cara sederhana yang sangat mudah kita bisa melakukan hal ini, trik, bagaimanapun, adalah untuk mengurangi kekuatan pemrosesan dan lalu lintas jaringan dalam mencapai hal ini. Mari kita mulai dengan paling sederhana solusi dan memperbaikinya perlahan-lahan selama beberapa iterasi.

Metode pertama adalah dengan hanya terhubung ke server kendali kami pekerjaan (melalui samba, FTP, atau semacam itu) dan tarik ke bawah versi terbaru kode. Tidak sangat efisien, tetapi akan melakukan pekerjaan. Mari memperbaiki yang agak, bagaimana menciptakan sebuah script rsync dan menggunakan bahwa setiap kali saja? Atau apa tentang menempatkan script terbaru pengolahan kami menjadi subversi memeriksa kode pada awalnya dan kemudian hanya memperbarui kode kita pada setiap run ( update svn )?

Pada akhirnya kita bisa berakhir dengan script bash (disebut oleh cron setiap 10 menit) yang tampak sederhana seperti ini:

  #! / Bin / sh
 jika ps ax | grep-v grep | grep php > / dev / null
 kemudian
     echo "Ayub saat ini pengolahan, keluar"
 lain
     echo "Ayub tidak berjalan, mulai sekarang"
     cd / path / ke / kerja / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Sekarang kita bisa yakin bahwa dengan menjalankan setiap kami sungguh-sungguh menjalankan kode terbaru. Kami memastikan hal ini dengan memperbarui basis kode kita masing-masing dan setiap kali kita melakukan lari dan mengurangi lalu lintas jaringan dengan hanya mentransfer file perbedaan di seluruh jaringan kami.

Dalam konfigurasi demonstrasi saya, saya melakukan persis seperti di atas. Subversion dipasang di server pengolahan saya kerja dan saya hanya menarik kode terbaru dari cabang 'pekerja' menggunakan 'svn update'. Saya juga menambahkan tag nomor versi untuk memproses naskah saya yang dikembalikan ke database sebagai bagian dari mengembalikan hasil. Dengan cara ini aku bisa melihat bahwa kode saya sedang diperbarui setiap kali saya disalin bagasi saya ke cabang, yaitu pekerja bahwa saya benar-benar menjalankan skrip pemrosesan terbaru.

Menggunakan data terbaru

Jika proses pekerjaan Anda memanfaatkan sumber data kemudian di beberapa titik ini akan diperbarui. Kecuali Anda menelepon sumber data Anda pada dasar yang sangat jarang terjadi Anda akan membanjiri jaringan dengan lalu lintas segera setelah pekerja Anda mulai berjalan membawa segala sesuatu untuk berhenti. Untuk solusi saya, saya memutuskan bahwa saya ingin memindahkan sumber data saya sekitar dengan VM saya.

Tahan kau kuda di sana! Bagaimana jika sumber data saya BESAR? Nah ini benar-benar adalah kasus berapa banyak data yang kita bicarakan? Ini mungkin biaya yang lebih efektif untuk menginstal sebuah hard drive tambahan yang lebih besar ke mesin masing-masing daripada membeli server pengolahan tambahan. Ini adalah masalah anggaran dan terserah bisnis untuk memutuskan. Ini mungkin bahwa sumber data Anda yang begitu besar yang tidak layak yang hanya untuk menjaga jumlah data pada mesin pekerja Anda. Dalam hal itu apa yang akan Anda lakukan? Yah kita bisa melihat memanggil server data lokal, tetapi ini dapat menyebabkan masalah dengan jaringan. Dalam hal ini suatu sistem grid seperti ini dapat menjadi tidak realistis untuk memasukkan di lingkungan kantor Anda. Ini mungkin juga bahwa Anda dapat melihat ke dalam strategi berjalan alternatif, misalnya hanya memanggil pekerja Anda 08:00-6:00 setiap malam dan / atau data throttling permintaan sumber.

Bergerak pada katakanlah data kami jumlah sumber untuk 100GB data. Nah ya itu cukup sedikit data untuk bergerak di sekitar jaringan pada pembaruan. Bagaimana kita memastikan bahwa kita memiliki salinan terbaru dari data dalam kasus ini? Rsync kemungkinan, tapi secara pribadi saya pikir dengan menjalankan sumber data terbaru Anda pada server pemrosesan Anda kerja dan pengaturan ini sebagai master dalam replikasi (dengan log bin yang bagus panjang) mungkin cara untuk pergi:

replikasi Dengan menetapkan setiap pekerja Anda sebagai budak pembaruan pekerjaan kontrol server untuk sumber data Anda akan menetes ke bawah baik untuk pekerja Anda tanpa peningkatan yang sangat besar dalam aktivitas jaringan (yaitu kecuali jika Anda melakukan update data besar dan seluruh pekerja Anda menendang sekaligus). Ini memiliki keunggulan dibandingkan rsync karena Anda tidak akan mendapatkan jeda lama sebelum setiap pekerjaan, seperti update database, mysql daemon pada pekerja Anda akan terus memperbarui data sementara pengolahan terus.

Ini adalah bagaimana cara mengkonfigurasi server demonstrasi saya. Untuk mengatur replikasi saya mengikuti panduan di situs mySQL ( Menyiapkan replikasi ) dan dalam 20 menit aku pekerja inital saya mereplikasi kontrol pekerjaan dataset server. Untuk setiap pekerja tambahan pengaturan replikasi dan proses bekerja setiap kali ketika VM itu disalin.

Ringkasan

Dalam bagian dari artikel yang kita telah melihat bagaimana mudah dan tanpa rasa sakit itu adalah untuk menjaga kode pengolahan Anda up to date dengan rsync using atau subverion (SVN) untuk melakukan pekerjaan dan mengurangi lalu lintas jaringan di time. sama Kami juga membahas bagaimana untuk menyimpan informasi data sumber Anda up-to-date dengan memungkinkan untuk menetes ke bawah untuk masing-masing pekerja Anda. Jadi kita daerah memastikan bahwa kita tetap dengan logika bisnis dan informasi dalam sistem grid kantor kami. Tidak jelas akan alternatif yang tak terhitung jumlahnya akan melakukan tugas-tugas ini, tapi di sini ada dua contoh sederhana untuk menunjukkan betapa mudahnya solusi akan datang dengan.

Lain kali

Pada bagian akhir seri ini, aptly bernama Bagian 5 , kita akan membicarakan menyebarkan sistem ini. Aku akan meringkas apa yang telah dipelajari dan apa yang saya berhasil menciptakan.

Kantor Grid Computing menggunakan lingkungan Virtual - Bagian 3

Dengan Watkin Lloyd Steven , 4 Desember 2009 23:37 Jumat

Pengantar

Saya bekerja di sebuah perusahaan di mana kita menjalankan banyak pekerjaan batch processing jutaan catatan data setiap hari dan saya sudah berpikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita bisa menggunakan mesin-mesin untuk meningkatkan kekuatan pemrosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat mempekerjakan kantor grid menggunakan lingkungan virtualised.

Pada bagian 2 kita melihat pekerjaan server akan berjalan, dan bagaimana pekerjaan harus dikonfigurasi untuk mencapai jumlah terbesar sementara proses memastikan bahwa setiap pekerjaan diproses tanpa gagal.

Menyiapkan pekerja Anda - atau server Limp

Langkah berikutnya dalam proses ini adalah untuk mengatur pekerja virtual Anda. Untuk ini saya akan menggunakan instalasi CentOS menggunakan VirtualBox. Aku akan menginstal mySQL dan PHP pada server, juga dikenal sebagai pincang (Li Nux, m ySQL, P HP) Server (saya mungkin telah membuat nama itu atas).

  • Instal VirtualBox pada mesin windows anda (ikuti link)
  • Download dan install CentOS (versi 5.3) dalam mesin virtual yang dibuat

Tidak ada gunanya saya terus ini ada kemungkinan 's / d 1.000 tutorial besar di luar sana (ok, ini satu: Membuat dan Managing mesin virtual CentOS bawah virtualbox ). Poin penting untuk diperhatikan saya kira adalah bahwa saya disebut GridMachine mesin virtual saya.

Sejauh pilihan saya klien virtualisasi dan sistem operasi pergi ke sana ada alasan kuat besar bagi masing-masing pilihan. VirtualBox adalah sesuatu yang saya gunakan di komputer rumah saya dan didukung oleh tiga sistem operasi utama. Saya memilih CentOS sebagai OS nya stabil baik dan saya gunakan di server web sendiri. Saya sangat percaya pada alat yang tepat untuk pekerjaan (walaupun aku menerapkan 'menggunakan tercepat dan termudah untuk Anda' mentalitas di sini), jadi jika sistem operasi X menjalankan kode Anda lebih cepat dan lebih efisien menggunakannya sebagai gantinya:)

Yang penting pastikan bahwa VM Anda menggunakan DHCP, dinyatakan untuk setiap mesin virtual baru akan harus dikonfigurasi secara terpisah yang merupakan sesuatu yang kita tidak want.By menggunakan DHCP kita tidak perlu mengkonfigurasi pengaturan jaringan secara individual untuk mesin pekerja, DHCP akan tangan keluar IP untuk Anda. Karena itu anda dapat menyalin mesin virtual Anda tentang kantor tanpa khawatir tentang pengaturan masing-masing Facebook (ini meningkatkan skalabilitas dan mengurangi administrasi pekerja).

Proses Anda harus berusaha untuk mencapai adalah untuk mendapatkan sebuah mesin fisik baru, instal VirtualBox, dan kemudian cukup banyak menyebarkan gambar virtual tanpa banyak lagi. Mungkin bijaksana untuk setup semua pekerja Anda pada subnet yang berbeda sehingga Anda setidaknya bisa melihat berapa banyak mesin berjalan. Anda juga harus menyiapkan mesin Anda pada sewa panjang atau DHCP sewa terbatas.

Bagaimana menjalankan Jobs pada pekerja

Ini adalah area yang menarik dan ada beberapa metode yang valid untuk pekerjaan pengolahan pada pekerja. Di sini saya hanya akan membahas dua yang paling jelas:

  • Menerus menjalankan script: script A, baik itu shell script, atau script PHP dieksekusi sekali pada pekerja dan berjalan sebagai bagian dari sebuah loop tak terbatas. Saya sudah diskon metode ini sebagai salah satu kecelakaan naskah dan berpotensi pekerja Anda akan berhenti berjalan tanpa semacam intervensi.
  • Cron eksekusi script berdasarkan: Setiap menit X cron daemon kicks off panggilan ke skrip Anda untuk mendapatkan hal yang terjadi. Tanpa memeriksa beberapa hal ini dapat menyebabkan banyak salinan banyak script pekerja Anda berjalan.

Keputusan saya adalah pergi dengan cron yang kicks off shell script setiap 10 minutes. shell script saya melakukan kegiatan sebagai berikut:

  1. Dapatkan daftar proses dan grep ini untuk 'php'. Jika tidak ditemukan maka melanjutkan.
  2. Panggil kode pekerjaan Anda, dalam kasus saya ini akan menjadi sesuatu yang berbasis PHP
  3. Pekerja script selesai menjalankan perusahaan
  4. Siap untuk pergi lagi pada panggilan yang sesuai berikutnya

bash script saya terlihat seperti berikut:

  #! / Bin / sh
 jika ps ax | grep-v grep |> grep php / dev / null
 kemudian
     echo "Ayub saat ini pengolahan, keluar"
 lain
     echo "Ayub tidak berjalan, mulai sekarang"
     php yourJobProcessingScript.php
 fi 

Catatan: echo adalah hampir sama sekali tidak ada gunanya, tetapi dapat membantu orang berikutnya yang datang untuk mencoba dan mengeditnya.

Yang menyimpulkan set up dari pekerja mesin virtual, cepat, sederhana, dan mudah untuk copy ke setiap bagian hardware baru yang diterima. 'Kepintaran' The sistem grid benar-benar tidak di OS divisualisasikan, yang semua dilakukan dengan kode dibuat untuk pekerjaan proses, konfigurasi pekerjaan, dan dalam memastikan bahwa pekerjaan berjalan saat yang tepat (yaitu ketika tuan rumah itu idle ).

Menyiapkan Windows untuk Menginisialisasinya Pekerja

Tugas pertama adalah untuk bekerja di luar perintah yang diperlukan untuk menjalankan mesin virtual dari baris perintah windows. Jika anda telah menginstal VirtualBox di lokasi default dan Anda sudah bernama GridMachine pekerja Anda maka perintah yang diperlukan untuk memuat pekerja Anda adalah:

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

Namun untuk menjalankan skrip dalam keadaan 'tanpa kepala' kita perlu menggunakan:

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

Ini akan memulai mesin virtual tanpa GUI dan memungkinkan untuk menyelamatkan negara dengan anggun. Argumen kedua mematikan RDP sehingga tidak bertentangan dengan windows RDP, atau memberikan pesan tentang mendengarkan pada port 3389. Nama mesin virtual adalah kasus sensitif!

Berikutnya, kita akan perlu untuk mengatur jendela Facebook untuk memulai VM pekerja kita sekali mesin sudah idle. Untuk melakukan hal ini (pada Windows XP) Anda harus pergi Start -> All Programs - Accessories -> System Tools -> Jadwal Tugas sebagai berikut:

jadwal tugas

Selanjutnya klik pada 'Tambahkan Scheduled Task' diikuti dengan menelusuri menambahkan program kustom. Arahkan ke script VBoxManage Anda dan klik ok. Jadwal tugas Anda untuk salah satu pilihan (kita akan perubahan ini dalam satu menit) dan lanjutkan. Setelah melewati jendela layar berikutnya akan meminta Anda yang Anda ingin menjalankan tugas ini, saya sarankan baik 'Administrator' atau membuat pengguna istimewa baru. Ingat kita tidak ingin mengganggu akun staf standar pada mesin pada titik apapun. Klik pilihan acara berikutnya dan periksa lanjutan untuk tugas ini.

Untuk akhir textbox menjalankan menambahkan string 'startvm GridMachine' kami dan memastikan bahwa hanya berjalan ketika login dibiarkan unticked. Kunjungi tugas jadwal berikutnya dan mengubah jadwal drop ke pilihan 'saat menganggur', memilih jumlah waktu yang Anda ingin mesin untuk idle sebelum pindah ke tab berikutnya.

Akhirnya untick opsi yang menyatakan menghentikan tugas jika telah menjalankan X jumlah waktu, tapi jangan centang opsi untuk menghentikan tugas jika mesin tidak lagi menganggur.

jadwal

Itu saja kemudian untuk host setup windows!

Ringkasan

Pada bagian ini kami telah menetapkan suatu mesin virtual untuk bertindak sebagai seorang pekerja, serta cara yang kita sebut dan melaksanakan tugas kita skrip pengolahan (untuk diriku sendiri script PHP). Dari sini kita melihat cara membuat salinan kita jendela untuk memulai mesin virtual dalam modus tanpa kepala ketika komputer menjadi siaga, dan simpan negaranya ketika pengguna kembali penggunaan mesin. Semoga pada saat ini Anda melihat betapa sederhananya adalah untuk mengatur sistem tersebut dan gatal untuk mendapatkan beberapa percobaan pergi sendiri!

Lain kali

Di Bagian 4 kita akan melihat menggunakan alat-alat untuk memastikan bahwa Anda menjalankan versi terbaru dan kode sumber data sehingga hasil yang diperoleh selalu up-to-date dengan informasi bisnis terbaru dan logika.

Kantor Grid Computing menggunakan lingkungan Virtual - Bagian 1

Dengan Watkin Lloyd Steven , 4 Desember 2009 23:23 Jumat

Pengantar

Saya bekerja di sebuah perusahaan di mana kita menjalankan banyak pekerjaan batch processing jutaan catatan data setiap hari dan saya sudah berpikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita bisa menggunakan mesin-mesin untuk meningkatkan kekuatan pemrosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat mempekerjakan kantor grid menggunakan lingkungan virtualised.

Sebagai seorang PHP developer saya akan menggunakan tools yang saya gunakan setiap hari yaitu, Linux, mySQL , PHP, VirtualBox dan subversi (SVN). Namun saya berharap panduan ini akan beradaptasi dengan bahasa lain dan teknologi baik begitu.

Solusi yang saya berikan akan sangat longgar didasarkan pada jenis pengolahan kami butuhkan untuk mencapai namun hal ini tidak mungkin benar melalui seluruh artikel yang saya akan mengubah sesuatu untuk kesederhanaan, atau untuk menghasilkan skenario penggunaan lebih menarik.

Virtualised lingkungan ini akan berjalan di mesin windows karena ini adalah apa yang sebagian besar kantor dijalankan. Pengolahan bahwa mesin kantor tidak boleh mengganggu dengan staf menggunakan mesin-mesin, seharusnya tidak memerlukan perawatan di mesin, dan mudah deployable untuk mesin baru saat tersedia. Selain itu, mesin virtual yang baru seharusnya tidak memerlukan konfigurasi tambahan karena hal ini sangat mengurangi skalabilitas dan kemudahan di mana sistem grid dapat diperpanjang.

Mengapa Menyebarkan sebuah Grid Computing Kantor?

Pertama anda mungkin berpikir, mengapa tidak hanya menggunakan sumber daya komputasi awan seperti Amazon EC2 platform ? Yah bisa beberapa alasan, misalnya:

  • Anda tidak akan mempercayakan data tertentu untuk sebuah lingkungan komputasi awan
  • Anda tidak dapat menempatkan data tertentu ke sebuah lingkungan komputasi awan untuk alasan hukum (misalnya data meninggalkan negara), berpotensi karena alasan hukum, misalnya catatan NHS.
  • Anda ingin menyimpan unit pengolahan Anda dekat dan memiliki kendali penuh atas hardware terlalu
  • Anda tidak memiliki dana proyek untuk menjalankan contoh awan
  • kantor Anda tidak memiliki koneksi ke internet dan karena itu yang tidak mungkin untuk menggunakan sumber daya awan
  • Anda tidak seperti hujan, awan menyarankan hujan, karena itu Anda tetap cukup jauh

Aku yakin daftar itu bisa terus, tapi saya berpikir bahwa cukup untuk saat ini.

Keuntungan dari Grid Computing Kantor

Yah, mari kita melakukan beberapa matematika (dan dalam gaya fisika benar memungkinkan membuat beberapa asumsi sweeping). Bayangkan Anda memiliki server pengolahan besar berdaging menjalankan 100 pekerjaan per hari. Di kantor Anda, Anda memiliki 50 mesin yang idle 16 jam sehari, masing-masing mesin adalah 10% sekuat pengolahan berdaging Anda memutuskan. (Semua hasil di sini adalah bulat untuk meningkatkan kinerja meremehkan).

Jadi, 1 mesin * 10% * power 2 / 3 waktu = 0,067 yaitu 1 pengolahan desktop di waktu idle dapat memproses 6 pekerjaan penuh per hari.

Jika Anda sekarang skala ini Facebook dibutuhkan 15 desktop siaga untuk proses sebagai banyak pekerjaan per hari sebagai server pemrosesan utama Anda tidak.

Jadi di kantor pura-pura kita 50 mesin kita bisa meningkatkan kekuatan pemrosesan kami dari 1 server sampai dengan 4 server pengolahan penuh, atau kita bisa memproses 400 pekerjaan per hari bukan 100.

Perhatikan, karena tidak ada investasi perangkat keras baru perusahaan Anda baru saja meningkatkan kapasitas pemrosesan batch 4 kali! Anda akan berpotensi untuk meningkatkan penggunaan kekuatan Anda tapi dari lingkungan kantor paling saya pernah ke mesin umumnya tersisa pada semalam, jadi Anda bisa melihat ini sebagai sebuah inisiatif hijau.

Keuntungan lain juga berarti bahwa investasi baru (atau diperbarui) server pengolahan dapat ditunda jika mesin kantor Anda sudah cukup dan bahwa Anda meningkatkan kekuatan mesin kantor Anda grid kantor Anda menjadi lebih kuat secara otomatis.

Technologies

Apa yang anda butuhkan? (Atau lebih tepatnya apa yang saya gunakan):

  • Idle Mesin kantor (dalam kasus saya laptop windows XP lama cadang)
  • VirtualBox (atau software klien virtualisasi)
  • Sebuah mesin virtual dengan PHP, mySQL running menjalankan ditebang OS, aku memanggil Limp ini saya server:)
  • Pekerjaan untuk menjalankan
  • Ayub server (bisa mesin virtual lain di suatu tempat)

Khas Pekerjaan

Jenis-jenis pekerjaan yang sistem ini dirancang untuk menjalankan adalah sebagai berikut:

  • Sistem menerima daftar data atas mana kita harus mencocokkan dan mengembalikan hasil
  • Pencocokan melibatkan pemeriksaan / mencari beberapa (cukup statis) sumber data
  • Hasil dari sumber data mungkin memerlukan validasi lebih lanjut, penggabungan, memeriksa sumber data tambahan dalam menanggapi hasil
  • Data kembali dengan catatan yang cocok, sepenuhnya divalidasi dan diproses
  • Setiap catatan dalam pekerjaan adalah independen dari sisanya

Jadi pada dasarnya kita cari dalam menjalankan pekerjaan yang memerlukan campuran pencarian database dan beberapa angka-angka, sebuah skenario yang cukup khas dalam lingkungan bisnis.

Grid solusi tidak hanya menguntungkan untuk memproses pekerjaan jenis ini. Pada dasarnya, setiap proses yang dapat dibagi menjadi unit yang independen dapat dijalankan secara paralel. Lihat wikipedia ini untuk contoh dan informasi lebih lanjut: Grid Computing , namun beberapa contoh terkenal adalah Seti @ Home dan BIONC . Ada kerangka kerja untuk menjalankan komputasi grid, dan ini layak melihat ke dalam.

Apa yang akan kita capai?

Pada akhir artikel ini saya berharap dapat menunjukkan bahwa pengerahan grid kantor tidak perlu mahal atau sangat memakan waktu. Aku akan membahas:

  • Menyiapkan sistem kontrol pekerjaan, konfigurasi pekerjaan
  • Membuat mesin virtual yang sesuai pengolahan
  • Cara setup sistem pada mesin windows
  • Memastikan Anda menggunakan kode terbaru dan data
  • Deployment dan benchmarking
  • Ke depan

Aku akan membangun (ok yang saya bangun, lalu menulis ini) contoh aplikasi untuk menguji konsep-konsep pada mesin lokal dengan menggunakan windows XP dan mesin virtual 'GridMachine' saya. Server saya kontrol pekerjaan akan menjadi mesin utama saya yang menjalankan Fedora 11 .

Ini sama sekali tidak dimaksudkan untuk menunjukkan sistem yang handal bekerja sepenuhnya, yang berarti lebih dari demonstrasi dan mendiskusikan menunjukkan bahwa hal-hal ini dapat dicapai dalam ruang yang cukup singkat dan dengan biaya sedikit. Silahkan kirim komentar, koreksi, atau perbaikan dan saya akan melakukan yang terbaik untuk menjaga artikel ini diperbarui untuk mencocokkan.

Lain kali

Pada bagian 2 Aku akan mulai dengan melihat pada sistem kontrol pekerjaan, dan melihat bagaimana pekerjaan harus dikonfigurasi untuk mencapai jumlah terbesar sementara proses memastikan bahwa setiap pekerjaan diproses tanpa gagal.

Kantor Grid Computing menggunakan lingkungan Virtual - Bagian 2

Dengan Watkin Lloyd Steven , 4 Desember 2009 23:23 Jumat

Pengantar

Saya bekerja di sebuah perusahaan di mana kita menjalankan banyak pekerjaan batch processing jutaan catatan data setiap hari dan saya sudah berpikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita bisa menggunakan mesin-mesin untuk meningkatkan kekuatan pemrosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat mempekerjakan kantor grid menggunakan lingkungan virtualised.

Dalam Bagian 1 saya memberi gambaran dari sistem dan teknologi saya akan menggunakan juga dibahas beberapa kemungkinan alasan mengapa Anda ingin membuat grid kantor.

Job Control

Jika Anda akan menjalankan pekerjaan maka Anda akan memerlukan beberapa cara untuk mengatur mereka. sistem kontrol pekerjaan yang Anda (di server pekerjaan Anda) harus benar-benar dipikirkan dengan baik bahkan sebelum mencoba untuk menjalankan sebuah jaringan kantor. Jadi pertama, apa tugas untuk sistem kontrol pekerjaan:

  • Bagikan pekerjaan atas permintaan dari pekerja
  • Beritahu pekerja apa jenis pekerjaan untuk menjalankan
  • Track pekerjaan
  • Pastikan bahwa pekerjaan hanya berjalan sekali
  • Menyediakan data pekerjaan untuk para pekerja, atau setidaknya memberitahu mereka di mana mendapatkannya

Sistem ini juga perlu diperluas, solusi yang bekerja untuk saat ini dalam satu kasus dapat diperpanjang untuk menjalankan beberapa jenis pekerjaan sebagai bisnis melihat berharga dalam larutan grid. Misalnya, pekerjaan bisa mendapatkan prioritas, lebih dari satu jenis pekerjaan mungkin ada (yaitu kode basis beberapa), akhirnya Anda bahkan dapat menjalankan mesin beberapa pekerja yang berbeda yang dioptimalkan untuk setiap jenis pekerjaan (walaupun yang bergerak menjauh dari 'pekerja generik 'ide). Selalu mencoba untuk berpikir tentang masa depan ketika sistem berkembang, visi jangka pendek dapat menyebabkan frustrasi jangka panjang dan waktu pengembangan meningkat.

Ayub Server

Kita akan membutuhkan tempat untuk mengendalikan pekerjaan kita dari, ini harus menjadi sistem hanya dalam grid Anda yang memiliki resource locator tetap, adalah bahwa alamat IP, nama host, URL (menggunakan DNS internal), dll Ini adalah karena pekerja perlu tahu di mana untuk mencari pekerjaan, pekerja harus mencari sistem kerja kontrol (bukan sistem kontrol pekerjaan menemukan pekerja).

Server pekerjaan itu sendiri tidak benar-benar memiliki tugas yang rumit (dalam bagaimanapun sistem dasar), perlu untuk menyimpan daftar pekerjaan, pekerjaan tangan keluar, menerima hasil, dan kemudian menyimpannya untuk pengambilan nanti. Bagaimana bagian-bagian ('tangan dari pekerjaan' seperti) yang ditetapkan bisa sangat dasar. Kemudian kita dapat memperluas sistem untuk menyertakan sebuah antarmuka administrasi untuk menambah, mengedit, menghapus, menunda pekerjaan tapi ini di luar latihan ini.

Tidak ada alasan apapun maka pekerjaan bahwa server Anda tidak bisa menjadi mesin virtual yang berjalan dalam server pemrosesan utama Anda asalkan tidak terlalu banyak menguras sumber daya dari itu. Server pekerjaan namun tidak ketersediaan kebutuhan yang tinggi, jika turun pada Jumat malam Anda akan kehilangan seluruh akhir pekan pengolahan, berpotensi biaya Anda beberapa minggu senilai waktu proses (jika dibandingkan dengan server utama pemrosesan Anda sendiri) . Anda mungkin ingin mempertimbangkan untuk menempatkan server pekerjaan Anda di lingkungan yang seimbang beban untuk ketersediaan tinggi.

Basic Setup

Konfigurasi dasar untuk server pekerjaan kami akan terdiri dari apa yang saya menelepon salah satu dari Limp server saya (yaitu Li Nux, ySql m, P HP). Kode berjalan pada pekerja Thea benar-benar akan bekerja apa pekerjaan dapat berjalan dengan berinteraksi dengan dengan database pekerjaan sistem kontrol. Kemudian kita bisa membuat web service dan benar-benar tangan keluar pekerjaan daripada memiliki pekerja melakukan kerja keras sendiri, tetapi untuk sekarang kita akan terus menggunakan prinsip KISS (Keep it Simple, Stupid!).

Jadi, mari membuat tiga mySQL tabel untuk menangani pekerjaan. Ini akan menjadi `pekerjaan`, `jobRecords`, dan `jobResults`.

pekerjaan tabel Disini Saya menggunakan SQL Buddy alternatif yang sedikit besar untuk phpMyAdmin hanya karena lebih mudah untuk diinstal pada CentOS (untuk orang lain lihat: 10 alternatif Besar ke phpMyAdmin )

Tabel ini terdiri dari 5 bidang yang sederhana,

  • id: Uniknya mengidentifikasi pekerjaan
  • Nama: Bisa jadi referensi klien, atau jumlah pengenal lainnya
  • Status: Anda perlu tahu di mana pekerjaan itu pada, misalnya
    • 0: Belum dimulai
    • 1: Dijemput
    • 2: Selesai
  • started_by: Siapa yang mulai melakukan pekerjaan? Hal ini tidak sepenuhnya dibutuhkan tetapi adalah baik untuk memiliki. Saya sarankan pelacakan pekerja dengan alamat IP pada jaringan Anda
  • started_at: Kapan pekerja memulai pekerjaan? Dengan pelacakan pekerjaan yang belum selesai dalam waktu X jumlah waktu kita tahu kita perlu mengambil pekerjaan sekali lagi dan mulai memproses oleh pekerja lain. Pekerja bisa menghentikan pengolahan / offline untuk sejumlah alasan, listrik mati, kecelakaan, kehilangan jaringan, dll

Sangat mudah bagaimana tabel ini dapat diperpanjang dengan beberapa kolom tambahan untuk memungkinkan untuk statistik pelacakan, kolom waktu selesai untuk melihat berapa lama pekerjaan itu mengambil, sebuah counter untuk melihat berapa banyak pekerja mengambil pekerjaan itu (jelas ini perlu cenderung 1), prioritas pekerjaan, daftar bisa terus dan terus. Dalam skenario pekerjaan yang lebih kompleks akan mungkin untuk menentukan berapa banyak memori pekerja akan membutuhkan akses ke (dan karena itu hanya menggunakan pekerja sesuai), atau bahkan jenis pekerja akan diperlukan.

Mari menambahkan pekerjaan beberapa contoh:

contoh pekerjaan

Tabel berikutnya lagi adalah cukup sederhana untuk memahami, ini adalah catatan pekerjaan kita. Mereka terkait dengan tabel pekerjaan utama dengan sebuah kolom `jobs_id`. Yang membuat tabel ini sangat tergantung pada data yang Anda butuhkan untuk memasok para pekerja Anda, memungkinkan membuat contoh yang sangat sederhana di mana kita memiliki empat kolom:

  • id: ID dari catatan
  • Nama: Nama Orang
  • Alamat: alamat Person
  • jobs_id: ID pekerjaan yang catatan ini terkait dengan

Tabel ketiga dan terakhir terdiri dari tabel hasil, itu telah sama make up sebagaimana tabel catatan kami, dan dengan penambahan beberapa kolom bisa menjadi bagian dari tabel catatan:

  • job_record_id: Link hasilnya ke meja kerja
  • Hasil: Data hasil

... Dan itu semua Anda butuhkan untuk kontrol pekerjaan! (Meskipun pada tingkat yang sangat dasar) Dalam kasus saya, saya menunjuk ke meja tempat data saya untuk memproses berada, tapi ini bisa saja menjadi file, parameter untuk menjalankan kode simulasi, apa saja.

Memilih pekerjaan

Sebagaimana dinyatakan sebelumnya, para pekerja akan melakukan manajemen tugas kita untuk kita untuk saat ini, sehingga semua kita harus benar-benar lakukan adalah mencari pekerjaan yang memerlukan pemrosesan dan mendapatkan informasi. Bagaimana kita melakukan ini? Nah tugas kami memilih kriteria seleksi dan mencari pekerjaan, di SQL saya melakukan hal berikut:

  1. Mengambil pekerjaan yang tidak ditandai sebagai lengkap tapi dari pekerja kami dan ulang mereka (__ME__ gantikan dengan sebuah identifier, termudah akan alamat IP):
      UPDATE `pekerjaan` SET `status` = 0 WHERE `status` = 1 DAN `started_by` = __ME__; 
  2. Menggunakan tugas kita kriteria seleksi, pilih pekerjaan dan kepada sistem kontrol yang pekerja ini berurusan dengan itu:
      UPDATE `pekerjaan` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 OR
     (`Status` = 1 DAN `started_at`> DATE_SUB (NOW (), INTERVAL X JAM)) ORDER BY `id` ASC; 

    Dengan menyambar pekerjaan yang belum kembali hasil sebesar X waktu kami memastikan bahwa semua pekerjaan yang berjalan jika seorang pekerja menabrak atau pergi AWOL.

  3. Selanjutnya ambil rincian pekerjaan diikuti dengan catatan sendiri:
      SELECT * FROM `pekerjaan` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Setelah menyelesaikan pekerjaan kami memasukkan kami hasil catatan dan menandai tugas sebagai selesai. Ingat sebagai pekerjaan dapat menangguhkan / resume kapan saja memungkinkan untuk beberapa kekokohan dalam naskah anda. Mungkin bahwa tugas menghentikan setengah jalan melalui memperbarui sistem kontrol pekerjaan, sehingga memeriksa jumlah record dalam pekerjaan dan jumlah hasil disimpan kembali ke sistem kontrol pekerjaan akan menjadi langkah yang bijak.

Selain itu, sementara ini menunjukkan bagaimana pekerjaan dapat dipilih dan dikelola dari frame-query SQL Anda benar-benar harus mencabut kontrol pekerjaan Anda sehingga jika Anda memutuskan untuk beralih menggunakan layanan web, yang didasarkan sistem file, XML , atau lainnya sejumlah sistem itu tidak akan mempengaruhi kode di atasnya.

Job Konfigurasi

Aspek berikutnya yang perlu dipertimbangkan adalah pekerjaan ukuran dan konfigurasi. Dengan bermain dengan konfigurasi pekerjaan kita bisa menyerang keseimbangan yang sangat baik antara kecepatan, proses replikasi, dan kehandalan. Ambil beberapa OFA skenario:

  1. Pekerjaan mengambil 1 setiap hari untuk menjalankan: Ini berarti bahwa para pekerja Anda butuh 15 hari untuk memproses setiap pekerjaan (ingat 10% dari kekuatan untuk 2/3rds dari waktu). Ini jelas bukan konfigurasi bijak, ukuran pekerjaan Anda terlalu besar! Itu akan mengambil setidaknya dua kali waktu untuk mendapatkan pekerjaan harus diproses pekerja awal pergi AWOL (waktu untuk mengambil bahwa hal itu tidak kembali hasil ditambah waktu pemrosesan kembali). Dalam ideal Anda akan memiliki minimal satu pekerjaan penuh mudah dibersihkan pada akhir setiap periode idle lama, bahwa cara Anda menjaga pekerjaan berdetak lebih dan pada kasus terburuk pekerjaan akan mengambil dua hari untuk memproses harus yang pertama hilang.
  2. Pekerjaan mengambil 1 menit untuk menjalankan: Ini berarti bahwa para pekerja Anda memakan waktu sekitar 15 menit untuk menjalankan setiap pekerjaan. Sementara ini awalnya mungkin tampak ideal, Anda mendapatkan pengolahan pekerjaan tambahan selama waktu makan siang, istirahat kopi, pertemuan, dll skenario ini membuat kerusakan pada area lain dari sistem anda dan memperkenalkan masalah sendiri. Sebagai contoh, pertama setup Anda / pengolahan rasio waktu akan pergi ke kanan bawah, sehingga kehilangan efisiensi sistem. jaringan Anda akan terus-menerus streaming informasi kerja dengan berbagai pekerja staf frustasi yang dong hari mereka untuk bekerja sehari. Anda juga akan menambah beban lebih pada server pemrosesan pekerjaan Anda karena harus mengeluarkan banyak dan banyak potongan-potongan kecil pekerjaan secara teratur. Terakhir, dalam situasi ini jika server pekerjaan Anda turun Anda akan membuat log kembali besar dari pekerjaan yang belum selesai sementara pekerjaan yang lebih besar bisa dari pengolahan lanjutan tidak menyadari bahwa server kerja adalah mengalami kesulitan.

Pada kenyataannya tidak akan ada konfigurasi satu ideal untuk pengaturan grid Anda, banyak tergantung pada sumber daya yang tersedia, jenis pekerjaan, persyaratan kerja waktu turnaround, kemampuan jaringan, dan sebagainya. Namun beberapa pedoman akan menjadi:

  • Ukuran pekerjaan sehingga setiap pekerja bisa melalui setidaknya 3-4 pekerjaan dalam jangka waktu 15 jam (periode waktu terlama mungkin idle)
  • Bermain dengan ukuran pekerjaan sehingga waktu setup menjadi cukup signifikan dibandingkan waktu pemrosesan (mengingat titik di atas).
  • Jika pekerjaan tidak lengkap dalam dua kali lipat jumlah waktu (mungkin kurang) Anda harapkan untuk menyelesaikannya berasumsi bahwa AWOL yang hilang dan mulai memproses dengan pekerja lain. Ini berarti Anda mungkin harus menunggu hingga tiga kali panjang normal pekerjaan sampai selesai (mungkin lebih lama jika pekerjaan berikutnya gagal). Anda mungkin ingin mengurangi saat ini, tapi hati-hati tidak untuk mengurangi terlalu banyak karena Anda mungkin mulai menduplikasi tugas-tugas pengolahan secara teratur.
  • Pekerjaan harus independen dari persyaratan luar sebanyak mungkin. Server pekerjaan, misalnya, hanya harus dihubungi pada awal dan akhir setiap pekerjaan.
  • Jangan jenuh jaringan Anda, ini akan memiliki dua efek negatif, staf siang hari Anda akan menemukan menggunakan jaringan frustasi dan masalah mungkin dialami dengan koneksi waktu keluar masalah yang hanya akan bertambah buruk karena Anda skala grid Anda.
  • Pastikan pekerjaan dapat berjalan pada pekerja Anda. Jika pekerjaan menjadi terlalu memori pekerjaan ruang intensif atau intensif disk akan mulai membatalkan dan satu-satunya adalah Anda akan melihat penurunan jumlah pekerjaan yang telah diproses tanpa alasan mengapa.

Menyerahkan Hasil Pekerjaan yang

Ketika menyerahkan hasil dari pekerjaan adalah penting untuk memeriksa bahwa hasil belum diserahkan oleh pekerja lain, terutama jika pekerja saat ini telah tidak aktif selama beberapa waktu.

Bila hasil disampaikan memastikan bahwa jumlah hasil pertandingan jumlah record dalam pekerjaan.

Sebagaimana dinyatakan sebelumnya, dan tidak bisa lebih ditekankan, membangun toleransi kesalahan ke dalam sistem pengambilan dan penyerahan hasil pekerjaan. Para pekerja dapat (dan kemungkinan besar akan) masuk ke mode Suspend di paling nyaman kali dan ini harus dipenuhi. Juga sekali lagi pergi pengiriman abstrak hasil Anda akan membantu memenuhi untuk perubahan masa depan untuk sistem kendali Anda pekerjaan lebih mudah untuk menangani.

Ringkasan

Dalam section ini kita telah melihat apa server kontrol pekerjaan perlu dilakukan dan bagaimana untuk mendapatkan sistem yang sangat dasar yang mengatur. Kita mendiskusikan bagaimana untuk mengambil pekerjaan dari sistem kontrol dan cara terbaik untuk mengkonfigurasi pekerjaan untuk mendapatkan yang paling kita sistem grid kantor Anda. Untuk menyelesaikan, satu atau dua paragraf di mengirimkan hasilnya kembali ke server kontrol kerja adalah disajikan.

  • Sebuah server kontrol pekerjaan mengelola pekerjaan dan memastikan bahwa semua unit kerja selesai
  • Dengan abstrak pekerjaan Anda pilih / penyampaian hasil yang kita dapat mengubah teknologi dari server kontrol tanpa masalah banyak
  • Konfigurasi pekerjaan Anda untuk memastikan bahwa mereka dijalankan dengan cepat dan efisien tanpa memberi tekanan terlalu banyak pada infrastruktur jaringan Anda, dan tanpa duplikasi tugas pengolahan secara teratur.
  • Pastikan bahwa Anda membangun toleransi kesalahan dan checking kesalahan ke dalam rutinitas Anda, pekerja dapat menunda dan melanjutkan dan yang paling nyaman kali. Ingatlah untuk memeriksa apakah hasil yang telah disampaikan oleh pekerja lain.

Lain kali

Di bagian 3 kita akan menciptakan mesin virtual pengolahan kami dan mengatur jendela kami mesin menjadi idle-time.

Kantor Grid Computing menggunakan lingkungan Virtual - Bagian 5

Dengan Watkin Lloyd Steven , 4 Desember 2009 23:03 Jumat

Pengantar

Saya bekerja di sebuah perusahaan di mana kita menjalankan banyak pekerjaan batch processing jutaan catatan data setiap hari dan saya sudah berpikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita bisa menggunakan mesin-mesin untuk meningkatkan kekuatan pemrosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat mempekerjakan kantor grid menggunakan lingkungan virtualised.

Di Bagian 4 kita melihat menggunakan alat untuk memastikan bahwa kami menjalankan versi terbaru dan kode sumber data sehingga hasil yang diperoleh selalu up-to-date dengan informasi bisnis terbaru dan logika.

Pre-Deployment

Sebelum menyebarkan sistem grid Anda jika ada satu hal yang Anda lakukan dan satu hal saja itu benchmark sistem Anda saat ini! Tidak peduli apa yang Anda katakan rekan tentang berapa banyak pekerjaan tambahan sistem anda akan lakukan apabila Anda mempunyai beberapa nomor untuk mendukung hal ini menjamin Anda apa-apa. Jadi,

  • berapa banyak catatan yang dapat Anda proses saat ini? Per Hari? Per Jam?
  • Berapa lama biasanya waktu yang diperlukan untuk berbalik pekerjaan?
  • Berapa banyak lagi kapasitas yang Anda miliki?

Ada juga pertanyaan tambahan:

  • Jika server memproses Anda (atau salah satu server pengolahan Anda) turun bagaimana ini akan mempengaruhi kemampuan Anda, Anda akan lumpuh?
  • Apa keuntungan yang Anda harapkan / mengharapkan untuk mendapatkan dari suatu sistem grid?
  • Apakah mesin kantor Anda mampu menjalankan pekerjaan?
  • Apakah Anda (atau bisa Anda pekerjaan dikonversi) untuk bekerja dalam gaya berjalan?

Titik besar terakhir adalah untuk mengambil waktu Anda pada setiap perubahan besar seperti ini. Update kode pengolahan Anda untuk bekerja dengan menggunakan metodologi baru, patokan lagi. Mungkin proses menyiapkan server Anda untuk menjalankan mesin virtual, setelah semua proses server Anda hanya akan menjadi pekerja lain (hanya satu yang sangat kuat relatif). Biarkan proses baru untuk menetap.

Penyebaran

Saran saya akan pop ke akhir pekan satu kantor melakukan semua instalasi dan setup. Lakukan ini sebelum dua minggu libur dan cuti miskin laki-laki lain sehingga untuk berurusan dengan konsekuensi ... mungkin tidak ...

Penyebaran untuk sistem seperti ini harus lambat. Meskipun itu menjadi relatif sederhana untuk mengatur sistem ini akan mempengaruhi seluruh kantor Anda infrastruktur (baik satu digital). Pertama, roll ke beberapa mesin sekaligus, memonitor lalu lintas jaringan, bagaimana host pekerja melakukan atas dasar sehari-hari. Anda mungkin perlu mengubah konfigurasi pekerjaan Anda dalam menanggapi temuan-temuan Anda.

Setelah sistem telah diselesaikan dengan beberapa mesin (katakanlah 10% dari semua mesin kantor, yaitu 5) terus memonitor lalu lintas jaringan dan host mesin benchmark performance. Next lagi, Anda sekarang harus memproses pekerjaan 33% lebih dari benchmark pertama Anda. Periksa ini begitu, atau bahwa Anda setidaknya dalam ballpark ini. Jika tidak, menyelidiki apa yang terjadi sebelum pindah. Ulangi siklus ini sampai Anda bahagia memiliki semua mesin kantor berjalan tanpa membunuh kinerja mesin penggiling individu atau jaringan Anda untuk berhenti.

Pada setiap waktu terus pembandingan, bahkan setelah semua penyebaran dilakukan. Periksa bagaimana pembaruan kode baru mempengaruhi kecepatan sistem Anda, periksa semua pekerja pelaporan dan pekerjaan pengolahan. Perlahan (sangat lambat) kenaikan konfigurasi pekerjaan Anda untuk mendapatkan yang terbaik dari pekerja Anda dan jaringan.

Stop!

Bagaimana jika Anda ingin menghentikan pekerja Anda dari berjalan pada beberapa waktu? Mereka semua ada berjalan, regenerasi, dan mencoba yang terbaik untuk memproses data seperti serangga lapar. Jawabannya mungkin tampak jelas tapi nilainya menambahkan hanya dalam kasus yang diabaikan. Cukup mengedit script pengolahan Anda dengan exit (0) atau mati () atau beberapa pernyataan lain untuk membunuh pekerjaan pengolahan Anda. Sebuah alasan penting mengapa kita selalu mencoba untuk update ke skrip pemrosesan terbaru sebelum menjalankan!

Sistem Demonstrasi

Dalam rangka untuk menulis artikel ini set pendek saya membuat sebuah kotak yang sangat kecil untuk mendemonstrasikan teknologi dan metodologi. Saya membaca banyak artikel, tutorial, dan digunakan berbagai alat untuk setup dan memonitor apa yang terjadi. Dengan tidak berarti aku pergi keluar dan jenuh kantor keseluruhan dengan lalu lintas dan juga tidak pernah saya memiliki akses ke PC anggota staf biasa untuk melihat bagaimana kinerja host terpengaruh.

demonstrasi sistem saya sangat sederhana memang. Saya menggunakan desktop biasa saya set sebagai server kontrol pekerjaan. Pada ini saya telah terinstal mySQL server terinstal ditetapkan sebagai master dalam replikasi, PHP , Â dan SVN dihubungkan melalui apache (untuk akses melalui pekerja VM).

Saya kemudian membuat sebuah mesin pekerja CentOS pada VirtualBox pada laptop berusia 6 tahun windows XP. Aku setup dijadwalkan tugas sebagaimana ditentukan setelah menyalin VM ke mesin dan membiarkannya pergi.

Mesin virtual didirikan dengan PHP, subversi, dan mySQL. Aku memeriksa cabang bernama 'pekerja' dari server repositori kontrol pekerjaan saya dan membuat yakin itu dapat diperbarui dengan menggunakan 'svn update'. Berikutnya setup Aku mySQL sebagai budak dan memeriksa bahwa data replikasi dari mySQL di server kontrol pekerjaan ke VM pekerja. Setelah semua ini saya setup script bash dan cron job.

pengolahan script pada dasarnya saya pergi sepanjang garis ini (hal yang sangat sederhana):

  • Baca di bidang nama
  • Menghitung jumlah nama yang mirip dalam tabel dari sumber data yang diadakan pada VM
  • Menghitung jumlah nama-nama seperti di atas tapi membelah nama dengan spasi (nama kecil, yaitu tengah, nama keluarga)
  • Mengulangi proses ini 1.000 kali

Setiap pekerjaan waktu sekitar 20 menit untuk menjalankan. Pada satu titik saya membuka beberapa salinan dari VM pekerja pada laptop jendela dan mengawasi pekerjaan diperiksa off oleh masing-masing alamat IP pekerja. Pada titik ini saya juga menegaskan replikasi yang secara otomatis restart.

Meninggalkan laptop untuk idle menghasilkan pekerja mulai proses pekerjaan dari server kontrol pekerjaan. Ketika melanjutkan penggunaan laptop ada penundaan dari sekitar 30-60 detik, ini adalah cukup banyak waktu dan staf akan perlu dibuat sadar bahwa mesin mereka dapat menghentikan untuk sementara waktu ketika kembali ke mesin. mesin yang lebih baru mungkin tidak memiliki jeda selama ini. Manfaat dari jumlah pengolahan yang dilakukan oleh mesin-mesin selama periode idle akan lebih yang lebih besar daripada anggota staf harus menunggu jangka waktu singkat (katakanlah 1 menit) pada mesin mereka tiba di suatu pagi (aku sering menunggu lebih lama bahwa ini untuk Windows Defender update untuk mengambil tempat) asalkan mereka dibuat sadar kali ini (berguna untuk mengambil kopi pagi!).

Semuanya saya merasa yakin bahwa saya telah menunjukkan teknologi yang dapat digunakan untuk membuat sistem tersebut. Saya telah menunjukkan bahwa sistem seperti ini tidak bekerja pada skala (sangat) kecil dan lebih bereksperimen dengan beberapa bisa ditingkatkan memanfaatkan sumber daya dari mesin-mesin kantor itu. Jika saya tidak bisa sampai ke titik melakukan hal ini saya akan sangat tertarik untuk mengetahui / melihat bila orang lain tidak.

Kesimpulan / Evaluasi

Langkah pasti yang berikutnya adalah untuk benar-benar mendapatkan contoh dunia nyata dan mulai untuk menggelar sebuah sistem seperti ini dalam lingkungan kantor dan melihat apa yang terjadi. Meminta bisnis untuk melakukan ini tanpa sebuah perusahaan jejak menyala untuk membuktikan teknologi dan efektivitas mungkin sedikit sulit. Grid / komputasi terdistribusi yang sangat populer adalah beberapa kalangan dan memiliki beberapa aplikasi besar (BIONC, SETI @ Home, Folding @ Home, dll). Aku tidak, bagaimanapun, menemukan skala yang lebih kecil dan sistem sederhana seperti ini dalam pencarian saya yang dapat diluncurkan dalam lingkungan kantor.

Saya menciptakan sistem pada dasarnya bebas menggunakan perangkat lunak sumber terbuka dan sebagian besar alat yang tersedia di hampir setiap kantor. Teknologi pada dasarnya menunjukkan dan menunjukkan untuk melakukan dan bekerja seperti yang diharapkan. Mudah-mudahan saya telah menunjukkan bahwa dengan tidak bekerja banyak dan dengan setup yang sangat sederhana Anda bisa menyebarkan sebuah sistem komputasi grid kantor yang sangat kuat, murah, Â dan scalable semua pada waktu yang sama.

Setelah sebuah sistem dan berjalan hampir tidak ada akhir untuk jumlah penyesuaian dan perbaikan Anda dapat membuat. Untuk statistik contoh / benchmarking dengan mudah dapat ditambahkan menunjukkan nilai dari sistem tersebut setiap hari. mesin baru dapat ditambahkan dengan cepat dan mudah dan ketika mereka tiba dengan upgrade ke hardware yang ada memperkuat daya proses Anda.

Saya harap Anda menikmati membaca rangkaian artikel dan yang memberi Anda makanan untuk berpikir untuk menjalankan sistem grid kantor. Solusi yang disajikan di sini tidak akan selalu bekerja dalam segala situasi tetapi harus disesuaikan untuk memungkinkan Anda untuk mendapatkan pengolahan data dilakukan dengan menggunakan solusi sendiri.

Silahkan kirim komentar, koreksi, atau perbaikan dan saya akan melakukan yang terbaik untuk menjaga artikel ini diperbarui untuk mencocokkan.













Panorama Tema oleh Themocracy

5 pengunjung online sekarang
2 tamu, 3 bots, 0 anggota
Max pengunjung hari ini: 11 jam 12:56 UTC
Bulan ini: 22 jam 2011/08/06 12:30 UTC
Tahun ini: 130 pada 28-03-2011 10:40 UTC
Sepanjang waktu: 130 pada 28-03-2011 10:40 UTC