Kategori: PHP

Rute permintaan sitemap.xml ke controller kustom / tindakan

Dengan , Rabu 6 Januari 2010 12:13

Dalam rangka permintaan langsung / sitemap.xml ke controller kustom dan tindakan dalam Anda Zend Framework aplikasi hanya menambahkan berikut di application.ini Anda atau file konfigurasi alternatif (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 controller yang sesuai (misalnya sitemap saya terletak pada controller indeks, sitemap tindakan):

 < php
 class IndexController
     meluas Zend_Controller_Action
 {
     / **
      * Merender sitemap didasarkan pada setup Zend_Navigation
      * /
     fungsi publik sitemapAction ()
     {
    	 echo $ this-> view-> navigasi () -> sitemap ();
    	 $ This-> view-> tata letak () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

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

Zend Framework Per-Modul pengaturan berdasarkan

Dengan , Jumat 1 Januari 2010 10:40

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

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

  / Aplikasi
     / Pengendali
         ...
     / Model
     / Modul
         / Default
             / Pengendali
             / Tata letak
                 / 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 / script"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modul / default / layouts / script"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / anggota / layouts / script"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / afiliasi / layouts / script" 
  2. Buat Helper Tindakan Anda:
      <? 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 tata letak berdasarkan modul
          * /
         fungsi publik preDispatch ()
         {
        	 $ Modul = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('bootstrap')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ modul] ['sumber'] ['tata letak'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  [Modul $] $ config ['sumber'] ['tata letak'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('tata letak')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Dan terakhir boostrap helper tindakan:
      ...
         / **
          * Mengatur tata letak script pada basis per-modul
          * /
         dilindungi fungsi _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         baru Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Ajaran: DateTime standar NOW ()

Dengan , Rabu 30 Desember 2009 06:30

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

Dalam skema Anda YAML file hanya lakukan hal berikut:

 Pesan:
   actAs:
     Timestampable:
       dibuat:
         Nama: created_at
         Jenis: timestamp
         Format: Ymd H: i: s
       diperbarui:
         Nama: last_updated
         Jenis: timestamp
         Format: Ymd H: i: s
   kolom:
     id:
       Jenis: integer
       utama: true
       autoincrement: true
     nama: string (255)
     email: string (300)
     pesan: string (2000)

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

 Pesan:
   actAs:
     Timestampable:
       dibuat:
         Nama: created_at
         Jenis: timestamp
         Format: Ymd H: i: s
       diperbarui:
         dinonaktifkan: true
   kolom:
     id:
       Jenis: integer
       utama: true
       autoincrement: true
     nama: string (255)
     email: string (300)
     pesan: string (2000)

PHP Pola Desain - Pola Observer

Dengan , Selasa 29 Desember 2009 10:02

Saya telah membaca Pola Desain Pertama Kepala 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 dari Pola Observer adalah:

Pola pengamat (subset dari asynchronous yang mempublikasikan / berlangganan pola ) adalah sebuah perangkat lunak desain pola di mana sebuah objek , yang disebut subjek, memelihara daftar tanggungan, yang disebut pengamat, dan memberitahukan mereka secara otomatis dari setiap perubahan negara, biasanya dengan memanggil salah satu dari mereka metode . Hal ini terutama digunakan untuk melaksanakan sistem penanganan event terdistribusi.

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

Lanjutkan membaca 'Pola PHP Desain - Pola Observer' »

Kantor Grid Computing menggunakan lingkungan virtual - Bagian 4

Dengan , Jumat 4 Desember 2009 23:59

Pengenalan

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

Di bagian 3 kita buat mesin pengolahan virtual kami dan mengatur jendela mesin menjadi idle-waktu pekerja.

Menjalankan kode terbaru

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

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

Metode pertama akan hanya terhubung ke server kontrol pekerjaan kami (melalui samba, FTP, atau serupa) dan tarik ke bawah versi terbaru kode. Tidak sangat efisien, tetapi akan melakukan pekerjaan. Mari kita memperbaiki yang agak, bagaimana menciptakan sebuah script rsync dan menggunakan bahwa setiap kali bukan? Atau apa tentang menempatkan skrip processing mutakhir kita menjadi subversi memeriksa kode awalnya dan kemudian hanya memperbarui kode kita di masing-masing berjalan ( svn update )?

Pada akhirnya kita bisa berakhir dengan bash script (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 sedang diproses, keluar"
 lain
     echo "Ayub tidak berjalan, mulai sekarang"
     cd / path / ke / bekerja / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Sekarang kita dapat yakin bahwa dengan menjalankan setiap kami pasti menjalankan kode terbaru. Kami memastikan ini dengan memperbarui basis kode kita setiap kali kita melakukan menjalankan dan mengurangi lalu lintas jaringan dengan hanya mentransfer perbedaan file di seluruh jaringan kami.

Dalam setup demonstrasi saya, saya melakukan persis seperti di atas. Subversi diinstal pada server pemrosesan pekerjaan saya dan saya hanya menarik kode terbaru dari cabang 'pekerja' menggunakan 'svn update'. Saya juga menambahkan tag nomor versi untuk script pengolahan saya yang dikembalikan ke database sebagai bagian dari hasil. Dengan cara ini aku bisa melihat bahwa kode saya sedang diperbarui setiap kali saya disalin bagasi ke cabang yaitu pekerja bahwa saya benar-benar menjalankan script processing mutakhir.

Menggunakan data terbaru

Jika pekerjaan Anda pengolahan yang menggunakan sumber data kemudian di beberapa titik ini akan diperbarui. Kecuali Anda menelepon data Anda sumber atas dasar yang sangat jarang terjadi Anda akan membanjiri jaringan dengan lalu lintas secepat pekerja Anda mulai berjalan membawa semuanya macet. Untuk solusi saya, saya memutuskan bahwa saya ingin memindahkan sumber data saya sekitar dengan VMs saya.

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

Pindah katakanlah data kami jumlah sumber untuk 100GB data. Nah ya itu sedikit data untuk bergerak di sekitar jaringan pada pembaruan. Bagaimana kita memastikan bahwa kita memiliki salinan terbaru dari data dalam kasus ini? Rsync adalah suatu 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 panjang dan bagus) mungkin cara untuk pergi:

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

Ini adalah bagaimana saya menyiapkan server demonstrasi saya. Untuk mengatur replikasi Aku 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 disalin.

Ringkasan

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

Berikutnya waktu

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

Kantor Grid Computing menggunakan lingkungan virtual - Bagian 3

Dengan , Jumat 4 Desember 2009 11:37

Pengenalan

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

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

Menyiapkan pekerja Anda - atau server lemas

Langkah selanjutnya 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 (Li nux, m ySQL, P HP) lemas Servera (Saya mungkin telah membuat nama atas).

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

Tidak ada gunanya aku pergi ke ini mungkin ada 1.000 's tutorial besar di luar sana (ok, ini satu: Membuat dan Managing CentOS mesin virtual bawah virtualbox ). Yang penting untuk dicatat saya kira adalah bahwa saya disebut mesin virtual saya GridMachine.

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

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

Proses Anda harus bertujuan untuk mencapai adalah untuk mendapatkan sebuah mesin fisik baru, menginstal VirtualBox, dan kemudian cukup banyak menyebarkan citra virtual tanpa banyak lagi. Mungkin bijaksana untuk setup semua pekerja Anda pada subnet yang berbeda sehingga Anda dapat setidaknya melihat berapa banyak mesin yang menjalankan. Anda juga harus menyiapkan mesin Anda pada sewa jangka panjang atau terbatas sewa DHCP.

Bagaimana menjalankan Jobs pada pekerja

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

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

Keputusan saya untuk pergi dengan cron yang kicks off shell script setiap 10 minutes. shell script saya melakukan tugas-tugas 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 skrip selesai menjalankan nya
  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 sedang diproses, keluar"
 lain
     echo "Ayub tidak berjalan, mulai sekarang"
     php yourJobProcessingScript.php
 fi 

Catatan: echo adalah hampir sepenuhnya sia-sia, tetapi mungkin membantu orang berikutnya yang datang untuk mencoba dan mengeditnya.

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

Menyiapkan Windows untuk Menginisialisasinya Pekerja

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

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

Namun untuk menjalankan script 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 anggun. Argumen kedua mematikan RDP sehingga tidak bertentangan dengan jendela RDP, atau memberikan pesan tentang mendengarkan pada port 3389. Nama mesin virtual adalah case sensitive!

Selanjutnya, kita harus mengatur jendela sampai untuk memulai VM buruh kita setelah mesin telah menganggur. Untuk melakukan hal ini (pada Windows XP) Anda akan perlu pergi Start -> All Programs -> Accessories -> System Tools -> Scheduled Tasks sebagai berikut:

dijadwalkan tugas

Selanjutnya klik pada 'Add Scheduled Task' diikuti dengan isi untuk menambahkan program kustom. Arahkan ke script VBoxManage Anda dan klik ok. Jadwal tugas Anda untuk setiap pilihan (kita akan perubahan ini dalam satu menit) dan terus. Setelah melewatkan jendela layar berikutnya akan meminta Anda yang Anda ingin menjalankan tugas ini, saya sarankan baik 'Administrator' atau membuat user dengan privilege baru. Ingat kita tidak ingin mengganggu dengan account staf standar pada mesin pada titik apapun. Klik berikutnya dan memeriksa menunjukkan opsi lanjutan untuk tugas ini.

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

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

jadwal

Itu maka untuk pengaturan host jendela!

Ringkasan

Pada bagian ini kita telah menetapkan suatu mesin virtual untuk bertindak sebagai pekerja, serta cara yang kita sebut dan melaksanakan tugas kami skrip pengolahan (untuk diri saya sendiri script PHP). Dari sini kita melihat bagaimana menyiapkan salinan kita jendela untuk memulai mesin virtual dalam modus tanpa kepala ketika komputer menjadi idle, dan menyelamatkan negara ketika pengguna resume penggunaan mesin. Mudah-mudahan pada saat ini Anda melihat betapa sederhananya adalah untuk mengatur sistem seperti dan gatal untuk mendapatkan beberapa eksperimen pergi sendiri!

Berikutnya waktu

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

Kantor Grid Computing menggunakan lingkungan virtual - Bagian 1

Dengan , Jumat 4 Desember 2009 11:23

Pengenalan

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

Sebagai PHP pengembang Saya akan menggunakan alat-alat yang saya gunakan setiap hari yaitu, Linux, mySQL , PHP, VirtualBox dan subversi (SVN). Namun saya harap panduan ini akan beradaptasi dengan bahasa lain dan teknologi baik begitu.

Solusi yang saya berikan akan sangat longgar didasarkan pada jenis pengolahan kami perlu 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.

Lingkungan ini virtualised akan berjalan di jendela mesin karena ini adalah apa yang mayoritas kantor berjalan. Pengolahan bahwa mesin kantor tidak boleh mengganggu dengan staf menggunakan mesin-mesin, seharusnya tidak memerlukan perawatan di mesin, dan mudah deployable untuk mesin baru mereka menjadi tersedia. Juga, baru mesin virtual seharusnya tidak memerlukan konfigurasi tambahan karena hal ini sangat mengurangi skalabilitas dan kemudahan di mana sistem grid dapat diperpanjang.

Mengapa Menyebarkan Grid Computing Kantor?

Pertama Anda mungkin berpikir, mengapa tidak hanya menggunakan sumber daya komputasi awan seperti Amazon EC2 Platform ? Nah alasan bisa beberapa, misalnya:

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

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

Keuntungan dari Grid Computing Kantor

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

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

Jika Anda sekarang skala ini dibutuhkan 15 desktop idle untuk memproses pekerjaan sebagai banyak per hari sebagai server pengolahan utama Anda tidak.

Jadi di kantor pura-pura kita 50 mesin kita dapat 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 di hardware baru perusahaan Anda baru saja meningkatkan kapasitas pemrosesan batch nya 4 kali! Anda akan berpotensi untuk meningkatkan penggunaan kekuatan Anda tapi dari lingkungan kantor yang paling aku pernah berkunjung ke mesin umumnya dibiarkan menyala sepanjang malam, jadi Anda bisa melihat ini sebagai sebuah inisiatif hijau.

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

Teknologi

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

  • Menganggur mesin kantor (dalam kasus saya berumur cadang laptop windows XP)
  • VirtualBox (atau lain virtualisasi perangkat lunak klien)
  • Sebuah mesin virtual dengan PHP, mySQL running menjalankan menebang OS, aku menelepon server ini lemas saya:)
  • Pekerjaan untuk menjalankan
  • Ayub server (bisa mesin virtual lain di suatu tempat)

Khas Pekerjaan

Jenis pekerjaan bahwa sistem ini dirancang untuk menjalankan adalah sebagai berikut:

  • Sistem menerima data pada saat daftar yang kita butuhkan untuk mencocokkan dan memberikan hasil
  • Pencocokan melibatkan memeriksa / mencari beberapa (cukup statis) sumber data
  • Hasil dari sumber data mungkin membutuhkan validasi lebih lanjut, penggabungan, memeriksa sumber data tambahan dalam menanggapi hasil
  • Data dikembalikan dengan catatan pencocokan, sepenuhnya divalidasi dan diproses
  • Setiap record dalam pekerjaan adalah independen dari sisanya

Jadi pada dasarnya kita sedang melihat menjalankan pekerjaan yang memerlukan campuran lookup database dan beberapa angka-angka, skenario yang cukup khas dalam lingkungan bisnis.

Solusi grid tidak hanya menguntungkan untuk pengolahan pekerjaan jenis ini. Pada dasarnya, setiap proses yang dapat dipecah menjadi unit independen dapat dijalankan secara paralel. Lihat ini wikipedia 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 untuk menunjukkan bahwa penggelaran jaringan kantor tidak perlu memakan sangat mahal atau waktu. Saya akan membahas:

  • Menyiapkan sistem kontrol pekerjaan, pekerjaan konfigurasi
  • Membuat mesin pengolahan yang tepat maya
  • Bagaimana men-setup sistem pada mesin windows
  • Memastikan Anda menggunakan kode terbaru dan data
  • Penyebaran dan pembandingan
  • Ke depan

Aku akan membangun (ok saya dibangun, kemudian menulis ini) contoh aplikasi untuk menguji konsep-konsep pada mesin lokal dengan menggunakan windows XP dan 'GridMachine' saya mesin virtual. Pekerjaan server DNS saya akan menjadi mesin utama saya yang menjalankan Fedora 11 .

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

Berikutnya waktu

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

Kantor Grid Computing menggunakan lingkungan virtual - Bagian 2

Dengan , Jumat 4 Desember 2009 11:23

Pengenalan

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

Pada Bagian 1 saya berikan gambaran dari sistem dan teknologi saya akan menggunakan serta membahas beberapa kemungkinan alasan mengapa Anda ingin membuat jaringan kantor.

Kontrol Ayub

Jika Anda akan menjalankan pekerjaan maka Anda akan memerlukan beberapa cara untuk mengelolanya. Kontrol pekerjaan Anda sistem (pada 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
  • Melacak pekerjaan
  • Pastikan bahwa pekerjaan hanya berjalan sekali
  • Menyediakan data pekerjaan untuk pekerja, atau setidaknya memberitahu mereka di mana untuk mendapatkannya

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

Ayub Server

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

Server pekerjaan itu sendiri tidak benar-benar memiliki tugas yang rumit (dalam sistem dasar Anyhow), perlu untuk menyimpan daftar pekerjaan, tangan keluar pekerjaan, menerima hasil, dan kemudian menyimpannya untuk nanti pengambilan. Bagaimana bagian-bagian ini ('menyerahkan pekerjaan' seperti) didefinisikan bisa sangat dasar. Kemudian kita dapat memperpanjang sistem untuk mencakup antarmuka administrasi untuk menambah, mengedit, menghapus, menangguhkan pekerjaan tapi ini adalah di luar latihan ini.

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

Dasar Pengaturan

Konfigurasi dasar untuk server pekerjaan kita akan terdiri dari apa yang saya memanggil salah satu server lemas saya (yang adalah Li nux, m ySql, P HP). Kode berjalan pada pekerja Thea benar-benar akan bekerja apa pekerjaan dapat berjalan dengan berinteraksi dengan dengan database sistem kontrol pekerjaan. Kemudian kita bisa membuat layanan web 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 kita membuat tiga mySQL tabel untuk menangani pekerjaan. Ini akan `pekerjaan`, `jobRecords`, dan `jobResults`.

pekerjaan tabel Di sini aku menggunakan SQL Buddy alternatif kecil yang hebat 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 di, misalnya
    • 0: Belum dimulai
    • 1: Dipetik up
    • 2: Selesai
  • started_by: Siapa yang mulai melakukan pekerjaan? Hal ini tidak sepenuhnya diperlukan, tetapi adalah baik untuk memiliki. Saya sarankan pekerja pelacakan melalui alamat IP pada jaringan Anda
  • started_at: Kapan pekerja memulai pekerjaan? Dengan pelacakan pekerjaan yang belum diselesaikan dalam jumlah X waktu kita tahu bahwa kita perlu untuk mengambil pekerjaan itu sekali lagi dan mulai memproses oleh pekerja lain. Pekerja dapat menghentikan pengolahan / offline untuk sejumlah alasan, kegagalan daya, kecelakaan, kehilangan jaringan, dll

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

Mari menambahkan beberapa contoh pekerjaan:

contoh pekerjaan

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

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

Tabel ketiga dan terakhir terdiri dari tabel hasil, telah banyak yang sama membuat catatan kami sebagai meja, dan dengan penambahan beberapa kolom bisa menjadi bagian dari tabel catatan:

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

... Dan itu semua Anda butuhkan untuk kontrol pekerjaan! (Walaupun pada tingkat yang sangat dasar) Dalam kasus saya, saya menunjuk ke meja lain di mana data saya untuk memproses berada, tapi ini bisa saja dengan mudah menjadi sebuah file, parameter untuk menjalankan kode simulasi, Anda nama itu.

Memilih pekerjaan

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

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

    Dengan meraih pekerjaan yang belum kembali hasil dalam jumlah X waktu kami memastikan bahwa semua pekerjaan yang dijalankan dalam hal seorang pekerja menabrak atau pergi AWOL.

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

Setelah menyelesaikan pekerjaan kita menyisipkan catatan hasil kami dan menandai pekerjaan sebagai lengkap. Ingat sebagai pekerjaan dapat suspend / resume setiap saat memungkinkan untuk beberapa kekokohan di script Anda. Mungkin bahwa tugas menunda setengah jalan melalui memperbarui sistem kontrol pekerjaan, sehingga memeriksa jumlah record dalam pekerjaan dan jumlah hasil disimpan kembali ke sistem kontrol pekerjaan akan menjadi perpindahan yang bijaksana.

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

Ayub Konfigurasi

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

  1. Jobs mengambil 1 setiap hari untuk menjalankan: Ini berarti bahwa para pekerja Anda perlu 15 hari untuk memproses setiap pekerjaan (ingat 10% dari kekuatan untuk 2/3rds dari waktu). Ini jelas bukan konfigurasi yang bijaksana, ukuran pekerjaan Anda terlalu besar! Ini akan mengambil setidaknya dua kali waktu untuk mendapatkan pekerjaan harus diproses pekerja awal pergi AWOL (waktu untuk mengambil yang tidak kembali hasil daur ulang ditambah waktu). Dalam ideal Anda akan memiliki minimal satu pekerjaan penuh mudah dibersihkan pada akhir setiap periode lama menganggur, bahwa cara Anda menjaga pekerjaan berdetak lebih dan pada kasus terburuk pekerjaan akan mengambil dua hari untuk proses harus pertama hilang.
  2. Jobs 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 pekerjaan pengolahan tambahan selama waktu makan siang, rehat kopi, pertemuan, dll skenario ini menempatkan tekanan pada daerah lain dari sistem anda dan memperkenalkan masalah sendiri. Misalnya, pertama setup / proses rasio waktu Anda akan pergi kanan bawah, oleh karena itu kehilangan efisiensi sistem. Jaringan anda akan terus mengalir informasi pekerjaan untuk staf berbagai pekerja frustasi yang dong hari mereka untuk bekerja sehari. Anda juga akan menempatkan beban lebih pada server pengolahan pekerjaan Anda karena harus mengeluarkan banyak dan banyak potongan-potongan kecil bekerja secara teratur. Terakhir, dalam situasi ini jika server pekerjaan Anda turun Anda akan membuat login kembali besar pekerjaan yang belum selesai sementara pekerjaan yang lebih besar bisa dari pengolahan terus tak sadar bahwa server mengalami kesulitan pekerjaan.

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

  • Ukuran pekerjaan sehingga setiap pekerja bisa mendapatkan pekerjaan melalui setidaknya 3-4 dalam periode 15 jam (periode waktu terlama kemungkinan idle)
  • Bermain dengan ukuran pekerjaan sehingga waktu setup menjadi cukup signifikan dibandingkan dengan waktu proses (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 waktu ini, tapi hati-hati untuk tidak mengurangi terlalu banyak karena Anda dapat mulai duplikasi tugas pengolahan secara teratur.
  • Pekerjaan harus independen dari persyaratan luar sebanyak mungkin. Server pekerjaan, misalnya, hanya harus dihubungi pada awal dan akhir setiap pekerjaan.
  • Tidak 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 sebagai Anda skala grid Anda.
  • Pastikan pekerjaan dapat berjalan pada pekerja Anda. Jika pekerjaan menjadi terlalu memori pekerjaan ruang intensif atau disk yang intensif akan mulai membatalkan dan satu-satunya hal yang akan Anda perhatikan adalah penurunan jumlah pekerjaan yang diproses dengan tidak ada alasan sebenarnya mengapa.

Menyerahkan Hasil Pekerjaan

Ketika mengirimkan hasil pekerjaan penting untuk memeriksa bahwa hasilnya belum diserahkan oleh pekerja yang lain, terutama jika pekerja saat ini telah terbengkalai selama beberapa waktu.

Ketika hasilnya diserahkan memastikan bahwa jumlah hasil sesuai dengan jumlah record dalam pekerjaan.

Seperti yang dinyatakan sebelumnya, dan tidak bisa terlalu ditekankan, membangun toleransi kesalahan dalam pengambilan dan penyerahan hasil pekerjaan. Para pekerja dapat (dan kemungkinan besar akan) masuk ke mode Suspend pada yang paling nyaman kali dan ini harus dipenuhi. Juga sekali lagi pergi penyerahan abstrak hasil Anda akan membantu memenuhi untuk perubahan masa depan untuk sistem kontrol pekerjaan Anda jauh 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 mengatur. Kami membahas bagaimana untuk mengambil pekerjaan dari sistem kontrol dan bagaimana cara terbaik untuk mengkonfigurasi pekerjaan untuk mendapatkan yang paling kami sistem grid kantor Anda. Untuk menyelesaikan, satu atau dua paragraf tentang cara mengirimkan hasilnya kembali ke server kontrol pekerjaan disajikan.

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

Berikutnya waktu

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

Kantor Grid Computing menggunakan lingkungan virtual - Bagian 5

Dengan , Jumat 4 Desember 2009 11:03

Pengenalan

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

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

Pra-Deployment

Sebelum menggelar sistem grid Anda jika ada satu hal yang Anda lakukan dan satu hal saja itu patokan sistem Anda saat ini! Tidak peduli apa yang Anda memberitahu rekan-rekan tentang berapa banyak bekerja ekstra sistem anda akan melakukan kecuali jika Anda memiliki nomor untuk kembali ini up jaminan anda apa-apa. Jadi,

  • berapa banyak catatan yang dapat Anda proses yang sedang? Per Hari? Per Jam?
  • Berapa lama biasanya diperlukan untuk berbalik pekerjaan?
  • Berapa banyak kapasitas lebih yang Anda miliki?

Ada juga pertanyaan tambahan:

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

Titik besar terakhir adalah untuk mengambil waktu Anda setiap perubahan besar seperti ini. Perbarui kode pengolahan Anda untuk bekerja dengan menggunakan metodologi patokan, baru lagi. Mungkin menyiapkan server pengolahan Anda untuk menjalankan mesin virtual, setelah semua server pengolahan Anda hanya akan 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 liburan dua minggu dan meninggalkan begitu miskin lainnya chap untuk berurusan dengan konsekuensi ... mungkin tidak ...

Penyebaran untuk sistem seperti ini perlu menjadi lambat. Meskipun itu menjadi relatif sederhana untuk mengatur sistem ini akan mempengaruhi seluruh kantor Anda infrastruktur (baik yang digital). Pertama, roll ke beberapa mesin pada satu waktu, memonitor lalu lintas jaringan, bagaimana pekerja melakukan host pada 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 memantau lalu lintas jaringan dan mesin host performance. patokan Next lagi, Anda sekarang harus memproses pekerjaan 33% lebih dari benchmark pertama Anda. Periksa ini begitu, atau bahwa Anda setidaknya di stadion baseball 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 saat menjaga pembandingan, bahkan setelah semua penyebaran dibuat. Periksa bagaimana update kode baru mempengaruhi kecepatan sistem Anda, periksa semua pekerja pelaporan dan pengolahan pekerjaan. Perlahan-lahan (sangat lambat) peningkatan 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 berjalan di luar sana, regenerasi, dan mencoba yang terbaik untuk memproses data seperti serangga lapar. Jawabannya mungkin tampak jelas tapi nilainya hanya menambahkan dalam kasus ini diabaikan. Cukup mengedit script pengolahan Anda dengan exit (0) atau mati () atau beberapa pernyataan lain untuk membunuh proses pekerjaan Anda. Sebuah alasan penting mengapa kita selalu mencoba untuk update ke script processing mutakhir sebelum menjalankan apapun!

Demonstrasi Sistem

Dalam rangka untuk menulis artikel pendek set saya membuat grid yang sangat kecil untuk menunjukkan teknologi dan metodologi. Saya membaca banyak artikel, tutorial, dan digunakan berbagai alat untuk setup dan memonitor apa yang sedang terjadi. Dengan tidak berarti aku pergi keluar dan jenuh dengan seluruh kantor dengan lalu lintas dan aku juga belum memiliki akses ke PC anggota staf teratur untuk melihat bagaimana kinerja tuan terpengaruh.

Sistem demonstrasi saya sangat sederhana memang. Saya menggunakan desktop biasa saya set sebagai server kontrol pekerjaan. Pada 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 tua 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 repositori kontrol pekerjaan saya server dan membuat yakin itu bisa diperbarui menggunakan 'svn update'. Berikutnya saya setup mySQL sebagai budak dan memeriksa bahwa data replikasi dari mySQL di server kontrol pekerjaan ke VM pekerja. Setelah semua ini saya setup bash script dan cron job.

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

  • Baca di kolom nama
  • Menghitung jumlah nama yang sama dalam tabel dari sumber data yang diselenggarakan pada VM
  • Menghitung jumlah nama-nama seperti di atas tapi membelah nama dengan spasi (misalnya nama depan, tengah, nama keluarga)
  • Mengulangi proses ini 1.000 kali

Setiap pekerjaan membutuhkan waktu sekitar 20 menit untuk menjalankan. Pada satu titik aku membuka beberapa salinan dari VM pekerja pada laptop jendela dan menyaksikan pekerjaan akan diperiksa oleh masing-masing alamat IP pekerja. Pada titik ini saya juga menegaskan bahwa replikasi otomatis restart.

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

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

Kesimpulan / Evaluasi

Langkah jelas berikutnya akan benar-benar mendapatkan contoh dunia nyata dan mulai menyebarkan sistem seperti ini dalam lingkungan kantor dan melihat apa yang terjadi. Meminta bisnis untuk melakukan ini tanpa sebuah perusahaan jejak menyala untuk membuktikan efektifitas teknologi dan mungkin sedikit sulit. Grid / Distributed computing adalah sangat populer adalah beberapa lingkaran 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-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 pekerjaan tidak banyak dan dengan setup yang sangat sederhana Anda dapat menyebarkan grid kantor sistem komputasi yang kuat, murah, Â dan terukur semua pada waktu yang sama.

Begitu sebuah sistem dan berjalan hampir tidak ada akhir untuk jumlah kustomisasi dan perbaikan Anda dapat membuat. Misalnya statistik / pembandingan dengan mudah dapat ditambahkan untuk menunjukkan nilai dari sistem tersebut setiap hari. Mesin baru dapat ditambahkan dengan cepat dan mudah dan ketika mereka datang dengan upgrade ke hardware yang ada memperkuat kekuatan pemrosesan Anda.

Saya harap Anda menikmati membaca seri artikel ini dan yang memberikan Anda makanan untuk pemikiran pada menjalankan sistem grid kantor. Solusi disajikan di sini tidak akan selalu bekerja dalam segala situasi tetapi harus beradaptasi untuk memungkinkan Anda untuk mendapatkan pengolahan data dilakukan dengan menggunakan solusi Anda sendiri.

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

Zend Framework: Fundamental - Review

Dengan , Sabtu 28 November 2009 10:42

Majikan saya baru-baru dibayar untuk kelompok kami pengembang untuk mengambil Zend Framework: Fundamentals saja, di sini saya akan meringkas pikiran dan pendapat tentang kursus untuk orang lain. Bagi mereka yang ingin menghemat waktu, inilah ringkasan saya:

Untuk pengembang yang tidak memiliki waktu untuk melihat Zend Framework ini saja (Zend Framework: Fundamental) menawarkan gambar secara keseluruhan baik dari kerangka memperkenalkan Anda ke bidang-bidang kunci dan memberikan informasi yang cukup untuk melanjutkan. Bagi mereka yang telah menghabiskan waktu melihat kerangka dan telah mengikuti satu atau dua tutorial kursus ini tidak menawarkan lebih jauh.

Latar belakang

Aku sudah menjadi PHP pengembang untuk sekitar 5-6 tahun, dan telah mulai bekerja dengan Zend Framework berdasarkan komponen selama 6 bulan terakhir. Saya telah mengembangkan dan / atau menjadi pengembang pada beberapa kecil Zend Framework MVC sites. Saya akan jujur, saya tidak memiliki sejumlah besar paparan framework lain dari sudut pandang pengkodean tetapi menghabiskan beberapa jam meneliti situs proyek dan mengevaluasi them. Kerangka dan masyarakat sekitar Zend Framework itu cukup menarik dan tampaknya ada kemungkinan besar di mana mereka pergi.

Tentang Kursus

Program ini disampaikan lebih dari 9 jam dua sesi WebEx (dengan istirahat 10 menit di tengah). Waktu yang dihabiskan akan melalui serangkaian slide yang disediakan oleh Zend dengan diskusi setiap saat. Anda dapat menggunakan mikrofon untuk berbicara dengan instruktur, tapi sejujurnya saya tidak melihat ada yang menggunakan sesuatu yang lebih dari jendela obrolan. Selain sebuah VMWare mesin Ubuntu disediakan yang memiliki contoh kode dan proyek mendirikan sebuah versi percobaan dari Zend Studio. Pembicaraan Pemimpin tentu saja untuk peserta baik melalui solusi VoIP yang terintegrasi, atau Anda dapat memanggil dalam menggunakan salah satu dari dial di seluruh dunia dalam jumlah banyak.

Selama kursus materi terdiri dari gambaran singkat dari Framework dan pola MVC sebelum menuju ke contoh aplikasi buku tamu. Diskusi menunjukkan bootstrap, Zend_Application, Db Tabel, akses database, Formulir, Penyaringan, ACL, Validasi, dll, dll Pada dasarnya mencakup semua topik yang Anda akan membutuhkan untuk mendapatkan situs dasar sampai semua waktu menjalankan memberikan Anda alat untuk pergi dan mendapatkan lebih maju dalam kerangka kerja (meskipun hal ini jumlah yang 'Lihat situs' banyak waktu).

Waktu yang diberikan untuk kode beberapa contoh, dan untuk mengembangkan 'buku tamu' dan aplikasi sederhana 'wiki'. Secara pribadi saya merasa bahwa menyediakan kode atau aplikasi masing-masing dan kemudian meminta kami untuk mengembangkan apa yang pada dasarnya salinan bersama tidak benar-benar memberikan pengalaman belajar yang baik. Saya lebih suka untuk mengembangkan aplikasi serupa, tapi tidak identik. untuk contoh aplikasi dengan manfaat dari memiliki panduan untuk merujuk ke. Atau membangun aplikasi dari awal dengan demonstran akan dari mungkin menimbulkan pertanyaan lebih lanjut tentang mengapa dan bagaimana, sehingga memberikan pemahaman yang lebih baik dari kerangka, setelah semua yang Anda dapat mencari spesifik setelah kursus.

Kuliah terakhir terdiri dari bekerja pada aplikasi wiki dengan bantuan / bimbingan dari instruktur. Setelah umpan balik saja diambil, itu ditekankan beberapa kali melalui kursus yang memakan umpan balik Zend sangat serius, pada kenyataannya ternyata versi kami tentu saja masih baru. Beberapa pengembang lain dalam perusahaan akan mengambil kursus segera sehingga akan menarik untuk melihat apakah ini telah terjadi.

Gaya tentu saja informal, diperbolehkan untuk umpan balik dan kolaborasi antara peserta dan instruktur. Pemimpin tentu saja ramah, didekati (alamat email yang bersama untuk pertanyaan), dan sementara presentasi dari slide agak gemetar tampak sepenuhnya kompeten dalam rangka. Dia jelas-jelas seseorang yang digunakan pada kerangka kerja secara teratur daripada orang yang diajarkan untuk mengajar kursus, saya menyukai pengalaman 'dunia nyata' dalam hal ini.

Merasa keseluruhan

Dalam beberapa hal saya menemukan kursus buang-buang waktu, orang lain itu sangat berguna. Mudah-mudahan saya akan mendapatkan alasan saya dengan jelas, dan mungkin menyediakan beberapa makanan untuk pikiran atau umpan balik yang berguna (saya tahu ini tidak mungkin!).

Bagi saya sendiri tentu saja ini ditujukan pada tingkat terlalu rendah. Setelah melewati panduan quickstart, membaca Rob Allen Zend Framework in Action, dan bekerja dengan kerangka sedikit saya tidak benar-benar mendapatkan sesuatu yang terlalu banyak. Saya akan dari menyukai saja untuk mengambil dari akhir quickstart dan mengembangkan keterampilan tambahan.

Yang mengatakan, judul saja tidak jelas menyatakan "Zend Framework: Fundamental" dan dalam aspek bahwa program studi mencapai apa set keluar untuk melakukan. Anggota lain dari tim pembangunan yang tidak menghabiskan waktu melihat ke dalam kerangka kerja selesai setiap sesi dengan antusias dan mengajukan pertanyaan yang benar-benar bagus untuk melihat.

Semua itu tidak hilang, itu baik untuk menghabiskan waktu mengkonfirmasikan rincian dasar kerangka dan mengajukan beberapa pertanyaan di daerah di mana saya tidak 100%. Itu juga waktu itu saya harus duduk setiap hari dan berpikir tentang pengkodean menggunakan kerangka dan proyek-proyek masa depan, sesuatu yang saya tidak akan dari mampu untuk melakukan sebaliknya (bisa Anda bayangkan perusahaan Anda menyetujui bahwa:?)). Last but not least Anda juga mendapatkan sertifikat yang bagus dari Zend untuk mengatakan bahwa Anda menghadiri kursus (meskipun melalui email).

Zend Framework Sertifikasi

Ini adalah satu pertanyaan yang terus berdatangan ke pikiran selama kursus, apakah itu mempersiapkan saya untuk sertifikasi? , Cepat mudah adalah Tidak gemilang. Instruktur tentu saja cukup jelas pada dengan saran tambahan bahwa untuk sertifikasi Anda benar-benar harus menggunakan kerangka kerja pada hari ke hari dan merasa sangat nyaman dan percaya diri dalam penggunaannya dan metodologi.

Ringkasan

Mengingat semua yang saya tulis di atas, saya akan meringkas semuanya dalam dua poin-poin mudah:

  • Baru untuk Zend Framework: Kursus ini tidak persis apa yang Anda harapkan, memberikan Anda sebuah pengenalan yang bagus untuk kerangka dan landasan yang baik pada dasar-dasar dari mana Anda dapat membangun. Kursus ini tampaknya membangkitkan minat dan antusiasme untuk kerangka antara pengembang.
  • Menggunakan Zend Framework: Sementara itu bagus untuk menopang beberapa dasar-dasar yang sangat saya rasakan waktu, tenaga, dan dana untuk mengambil kursus bisa dari lebih baik dihabiskan di tempat lain. Ini akan bagus untuk see Zend menciptakan program tingkat baru yang lebih tinggi untuk mengambil pengembang untuk tingkat berikutnya -. Setidaknya dengan standar sertifikasi dan melampaui Untuk itu saya akan mendaftar segera.












Panorama Didukung oleh Themocracy

7 pengunjung online sekarang
6 tamu, 1 bot, 0 anggota
Max pengunjung hari ini: 11 at 12:00 am UTC
Bulan ini: 19 di 19-08-2011 06:09 UTC
Tahun ini: 130 pada 28-03-2011 10:40 UTC
Semua waktu: 130 pada 28-03-2011 10:40 UTC