Pejabat Pengkomputeran Grid menggunakan persekitaran Maya - Part 4
Pengenalan
Saya bekerja di sebuah syarikat di mana kita menjalankan banyak kerja kelompok pemprosesan berjuta-juta rekod data setiap hari dan saya telah memikirkan tentang semua mesin yang duduk di sekitar setiap hari dan setiap melakukan apa-apa untuk beberapa jam baru-baru ini. Bukankah lebih baik jika kita boleh menggunakan mesin tersebut untuk mengukuhkan kuasa pemprosesan sistem kami? Dalam set rencana-rencana ini, saya akan melihat manfaat yang berpotensi menggajikan pejabat grid yang menggunakan persekitaran virtualised.
Dalam 3 bahagian kita menciptakan mesin pemprosesan maya kami dan menubuhkan tingkap mesin untuk menjadi pekerja yang terbiar masa.
Menjalankan code terbaru
Tidak dapat dielakkan selepas mencipta logik perniagaan pekerja anda akan berubah, pepijat akan didapati, kod lebih cepat lebih cekap akan dihasilkan itu meninggalkan pekerja anda duduk di sekitar memproses data menggunakan kod berbau lama . Bagaimana pula dapat kita memastikan bahawa kita selalu menggunakan versi yang terbaru dan terhebat skrip pemprosesan kami?
Terdapat beberapa cara yang sangat mudah mudah yang boleh kita lakukan ini, muslihat, bagaimanapun, adalah untuk mengurangkan kuasa pemprosesan dan trafik rangkaian dalam mencapai matlamat ini. Mari kita bermula dengan penyelesaian yang paling mudah dan meningkatkan secara perlahan-lahan sepanjang beberapa lelaran.
Kaedah pertama akan hanya menyambung kepada pelayan kawalan tugas kami (melalui samba, FTP, atau yang serupa) dan tarik ke bawah versi terbaru kod. Tidak begitu cekap, tetapi ia akan melakukan pekerjaan. Mari kita memperbaiki bahawa agak, bagaimana pula mewujudkan skrip rsync dan menggunakan bahawa setiap kali, bukan? Alternatif bagaimana meletakkan skrip pemprosesan terbaru kami ke subversif melihat kod mulanya dan kemudian hanya mengemaskini kod kami setiap melarikan ( svn update )?
Akhirnya kita boleh berakhir dengan skrip Bash (dipanggil oleh cron setiap 10 minit) yang kelihatan seperti mudah kerana ini:
#! / Bin / sh jika ps ax | grep-v grep | grep php > / dev / null kemudian echo "Kerja sedang memprosesnya, keluar" lain echo "Kerja tidak berjalan, bermula sekarang" cd / path / to / bekerja / salinan svn update php yourJobProcessingScript.php Wayar
Sekarang kita boleh yakin bahawa dengan jangka setiap kita pasti menjalankan code terbaru. Kami memastikan ini dengan mengemas kini pangkalan kod kami setiap kali dan setiap kita melaksanakan jangka dan mengurangkan trafik rangkaian dengan hanya memindahkan perbezaan fail di seluruh rangkaian kami.
Dalam persediaan demonstrasi saya, saya berjaya melakukannya seperti di atas. Subversif telah dipasang pada pelayan pemprosesan tugas saya dan saya hanya menarik code terbaru dari cawangan 'pekerja' menggunakan 'svn update'. Saya juga menambah tag nombor versi untuk skrip pemprosesan saya yang telah kembali ke pangkalan data sebagai sebahagian pulangan keputusan. Dengan cara ini saya dapat melihat bahawa kod saya sedang dikemaskini setiap kali saya disalin batang saya ke dalam iaitu cawangan pekerja yang saya pasti menjalankan pemprosesan skrip terkini.
Menggunakan data terkini
Jika pemprosesan kerja anda menggunakan sumber data, maka pada satu masa nanti ini akan dikemas kini terlalu. Melainkan anda menyeru sumber data anda atas dasar yang sangat jarang berlaku, anda akan membanjiri rangkaian anda dengan trafik dengan seberapa segera sebagai pekerja anda mula berlari membawa semua terhenti. Untuk penyelesaian saya, saya memutuskan bahawa saya ingin untuk menggerakkan sumber data saya main dengan VMS saya.
Pegang anda kuda di sana! Bagaimana jika sumber data saya adalah BESAR? Baik ini benar-benar adalah satu kes berapa banyak data yang kita bercakap? Ia boleh menjadi lebih berkesan kos untuk memasang tambahan cakera keras yang lebih besar ke dalam setiap mesin daripada membeli pelayan pemprosesan tambahan. Ini adalah persoalan bajet dan perniagaan untuk memutuskan. Ia mungkin bahawa sumber data anda adalah begitu besar sehingga hanya unfeasible untuk memastikan bahawa jumlah data dalam mesin pekerja anda. Dalam hal yang demikian apakah yang akan anda lakukan? Juga kita boleh melihat memanggil pelayan data tempatan, tetapi ini mungkin menyebabkan isu-isu dengan rangkaian. Dalam kes ini, sistem grid seperti ini boleh menjadi tidak realistik untuk termasuk dalam persekitaran pejabat anda. Ia juga mungkin yang anda boleh melihat ke dalam strategi alternatif, contohnya hanya memanggil pekerja anda 20:00-06:00 setiap malam dan / atau pendikitan permintaan sumber data.
Bergerak atas membolehkan berkata jumlah sumber data kami untuk 100GB data. Baik ya yang agak sedikit data untuk bergerak di seluruh rangkaian pada kemas kini. Bagaimana kita akan memastikan bahawa kita mempunyai salinan terbaru data dalam kes ini? Rsync adalah satu kemungkinan, tetapi secara peribadi saya berfikir dengan menjalankan sumber data terkini anda pada pelayan pemprosesan kerja anda dan menetapkan ini sebagai induk dalam replikasi (dengan log nice bin panjang) mungkin menjadi cara untuk pergi:
Dengan setiap pekerja anda sebagai hamba kepada pelayan kawalan update pekerjaan kepada sumber data anda akan dinikmati oleh segenap lapisan baik untuk pekerja anda tanpa peningkatan besar dalam aktiviti rangkaian (yang melainkan anda melakukan kemas kini data yang besar dan semua pekerja anda menendang dalam sekali gus). Ini mempunyai kelebihan lebih rsync yang anda tidak akan mendapat jeda lama sebelum setiap kerja; sebagai kemas kini pangkalan data mysql daemon pada pekerja anda akan sentiasa mengemaskini data manakala pemprosesan berterusan.
Ini adalah bagaimana saya menetapkan pelayan demonstrasi saya. Untuk menubuhkan replikasi saya mengikuti panduan di laman mySQL ( tetapan sehingga replikasi ) dan dalam masa 20 minit, saya mempunyai pekerja awal daripada saya mengulangi dataset kawalan kerja pelayan. Bagi setiap pekerja tambahan tetapan replikasi dan proses bekerja setiap kali apabila VM tersebut telah disalin.
Ringkasan
Dalam seksyen ini rencana kita telah melihat bagaimana mudah dan tidak menyakitkan ia adalah untuk menyimpan kod pemprosesan anda sehingga kini oleh using rsync atau subverion (SVN) untuk melakukan kerja dan mengurangkan trafik rangkaian pada time. yang sama Kami juga membincangkan bagaimana untuk menyimpan maklumat sumber data anda up-to-dengan membenarkan ia untuk dinikmati oleh segenap lapisan kepada setiap pekerja anda. Oleh itu, kita kawasan memastikan bahawa kita menjaga dengan logik perniagaan dan maklumat dalam sistem grid pejabat kami. Jelas akan ada alternatif yang tidak terkira banyaknya untuk melaksanakan tugas-tugas ini, tetapi di sini adalah dua contoh mudah untuk menunjukkan betapa mudahnya penyelesaian diperolehi.
Masa yang akan datang
Di bahagian akhir siri ini, yang dinamakan Bahagian 5 , kami akan membincangkan menggerakkan sistem ini untuk Saya akan meringkaskan apa yang telah dipelajari dan apa yang saya berjaya untuk mencipta.

















































