Coding Challenge #149: Tic Tac Toe
Insinyur YouTube sedang mengembangkan seperangkat perangkat lunak, yang disebut Vitess, yang akan membantu database MySQL sumber terbuka bekerja lebih efisien dalam lingkungan produksi berskala sangat besar. Untuk menulis kode, mereka menggunakan bahasa pemrograman Google.
YouTube sudah menggunakan satu komponen Vitess, yang disebut Vtocc, untuk membantu menyajikan video ke semua 800 juta pengguna bulanan layanan. Google mengakuisisi YouTube pada tahun 2006.
Vtocc telah "sangat stabil, dan memiliki semua alat yang diperlukan untuk Anda gunakan dalam lingkungan produksi," kata arsitek YouTube Sugu Sougoumarane, yang, bersama dengan insinyur YouTube Mike Solomon, membahas Vitess pada konferensi Usenix LISA (Administrasi Sistem Instalasi Besar), yang diadakan minggu ini di San Diego.
Vitess yang ditulis dalam Go dapat membantu memvalidasi gagasan bahwa bahasa pemrograman yang relatif baru ini dapat digunakan dalam lingkungan produksi berskala besar. Google memperkenalkan Go versi 1 pada bulan Maret.
YouTube menyajikan lebih dari 4 miliar jam video setiap bulan. Sekitar 72 jam video diunggah ke layanan setiap menit. Meskipun YouTube menyimpan semua videonya secara langsung pada sistem file, ia menggunakan MySQL untuk menyimpan semua metadata yang dibutuhkan untuk melayani setiap video, seperti preferensi pengguna, informasi iklan, penyesuaian negara dan informasi lain yang dibutuhkan.
Suka YouTube menggunakan MySQL untuk keandalannya, kata Solomon, salah satu insinyur yang awalnya membangun layanan tersebut. Ini memiliki kebiasaan, tetapi kebiasaan itu terkenal dan dapat dikurangi dengan mudah, katanya. Namun, MySQL juga memiliki masalah dengan skala - setidaknya skala untuk mengakomodasi layanan sebesar YouTube.
"Masalah utama dengan MySQL adalah bahwa begitu Anda sampai ke titik tertentu [penggunaan], Anda menghabiskan banyak waktu mengelola perangkat keras dan berapa banyak contoh yang Anda miliki, "kata Salomo. "Kami ingin mengotomatisasi bongkahan itu. Kami ingin mengambil setiap tindakan yang rumit dan rawan kesalahan dan membuatnya sembuh sendiri."
MySQL juga tidak terlalu efisien ketika digunakan dalam penyebaran besar. Biasanya, setiap koneksi ke MySQL memerlukan utasnya sendiri di server. Pendekatan ini tidak layak pada skala operasi YouTube. "Menjalankan puluhan ribu koneksi tidak benar-benar layak," kata Solomon.
Para insinyur perusahaan, bagaimanapun, telah enggan untuk mencoba mengubah kode inti MySQL itu sendiri, mencatat bahwa membuat perubahan pada kompleks dan agak sulit-untuk -pahami kode sering dapat mengakibatkan efek yang tak terduga. "Ini tidak mudah. Hanya ketika Anda berpikir Anda tahu apa yang Anda lakukan, saat itulah Anda mulai mendapat masalah," kata Solomon.
Jadi Vitess diciptakan untuk berjalan bersama dengan MySQL untuk menawarkan kemampuan manajemen tambahan. Komponen Vtocc, misalnya, mengkonsolidasikan ribuan pertanyaan SQL yang masuk ke dalam sejumlah batch yang lebih kecil sehingga MySQL dapat mengambil lebih sedikit sumber daya yang memenuhi permintaan ini. Vtocc juga mem-parsing queries sehingga mereka dapat dieksekusi lebih efisien, dan mengurangi pekerjaan yang disebabkan oleh duplikasi query dengan menggunakan kembali hasil dari satu query untuk memenuhi permintaan identik lainnya.
Menggunakan Go telah memungkinkan pengembang YouTube untuk menjadi lebih produktif daripada yang mereka lakukan. telah menggunakan bahasa yang lebih tradisional, kata Sougoumarane.
Kompilasi kode Go dengan cepat, katanya. 30.000 baris kode di Vitess dapat dikompilasi menjadi binari dalam waktu sekitar 30 detik. Dan, berkat kumpulan pustaka yang kaya, banyak tugas yang tidak membutuhkan banyak pemrograman. Misalnya, Sougoumarane menulis rutin 105-baris yang secara berkala memangkas file-file log, fungsionalitas yang tidak bisa ditulis dalam beberapa baris dengan menggunakan C atau C ++.
"Begitulah cara Go ekspresif," kata Sougoumarane. "Fitur bahasanya dipikirkan dengan baik. Mereka membantu Anda menyusun hal-hal dengan cara yang jauh lebih elegan daripada bahasa tradisional." Sougoumarane juga memuji dukungan konkurensi Go, yang penting untuk digunakan dalam prosesor multicore. "Anda tidak perlu khawatir tentang mengelola benang. Pergi mengaturnya untuk Anda," katanya.
Bahasa juga memiliki beberapa kelemahan, juga, Sougoumarane mengakui. Penanganan kesalahan dapat ditingkatkan, misalnya. Penjadwalan dan pengumpulan sampah dapat menggunakan beberapa pekerjaan juga.
Solomon mengatakan bahwa, seiring berjalannya waktu, Vitess akan mengambil tugas tambahan, seperti replikasi database dan sharding otomatis, sehingga database dapat tumbuh di banyak server tanpa intervensi dari administrator.
Joab Jackson mencakup perangkat lunak perusahaan dan berita teknologi umum untuk The IDG News Service. Ikuti Joab di Twitter di @Joab_Jackson. Alamat e-mail Joab adalah [email protected]
Nvidia Kemungkinan untuk Mengkonfirmasi Skala Masalah Chip Segera
Skala masalah kemasan-chip Nvidia seharusnya menjadi nyata ketika perusahaan merilis hasil keuangannya.
Perangkat lunak Isilon OneFS untuk memperluas cakupan skala skala EMC
EMC akan terus memperluas sistem operasi penyimpanan terpasang jaringan Isilon OneFS untuk kasus penggunaan baru akhir tahun ini, penambahan deduplikasi, audit kepatuhan, dan fitur penyimpanan objek.
Perbaiki: Kode Penyedia Dasar VDS Kode kesalahan 490 @ 01010004 di Peraga Peristiwa pada Windows 7
Kegagalan tak terduga. Kode kesalahan: 490 @ 01010004 kesalahan? Jika Anda menjalankan sistem operasi tamu Hyper-V (vds penyedia dasar) pada Windows 7 dan memiliki disk yang terhubung ke kontroler SCSI ...