Car-tech

YouTube วัดระดับ MySQL ด้วยรหัส Go

Реклама подобрана на основе следующей информации:

Реклама подобрана на основе следующей информации:
Anonim

วิศวกร YouTube กำลังพัฒนาชุดซอฟต์แวร์ที่เรียกว่า Vitess ซึ่งจะช่วยให้ฐานข้อมูล MySQL โอเพนซอร์สทำงานได้อย่างมีประสิทธิภาพในสภาพแวดล้อมการผลิตที่มีขนาดใหญ่มาก ในการเขียนโค้ดพวกเขาใช้ภาษาการเขียนโปรแกรมของ Google Go

YouTube ใช้คอมโพเนนต์ Vitess หนึ่งตัวที่เรียกว่า Vtocc เพื่อช่วยให้บริการวิดีโอแก่ผู้ใช้รายเดือนทั้งหมด 800 ล้านราย Google ได้ซื้อกิจการ YouTube ในปี 2549

Vtocc มีความ "มั่นคงมากและมีเครื่องมือที่จำเป็นสำหรับคุณในการใช้งานในสภาพแวดล้อมการผลิต" สถาปนิก YouTube Sugu Sougoumarane กล่าวพร้อมกับวิศวกรของ YouTube Mike Solomon กล่าวถึง Vitess ในการประชุม Usenix LISA (Large Installation System Administration) ซึ่งจัดขึ้นในสัปดาห์นี้ที่เมืองซานดิเอโก

Vitess นั้นเขียนขึ้นใน Go อาจช่วยในการตรวจสอบความถูกต้องว่าภาษาเขียนโปรแกรมใหม่นี้สามารถใช้ในสภาพแวดล้อมการผลิตขนาดใหญ่ได้ Google เปิดตัว Go 1 มีนาคมในเดือนมีนาคม

YouTube ให้บริการวิดีโอมากกว่า 4 พันล้านชั่วโมงต่อเดือน มีการอัปโหลดวิดีโอประมาณ 72 ชั่วโมงไปยังบริการทุกๆนาที ในขณะที่ YouTube จัดเก็บวิดีโอทั้งหมดไว้ในระบบไฟล์โดยตรงจะใช้ MySQL ในการจัดเก็บข้อมูลเมตาทั้งหมดที่จำเป็นในการให้บริการวิดีโอแต่ละประเภทเช่นการกำหนดลักษณะผู้ใช้ข้อมูลการโฆษณาการกำหนดประเทศและข้อมูลที่จำเป็นอื่น ๆ

YouTube ชอบใช้ MySQL โซโลมอนซึ่งเป็นหนึ่งในวิศวกรที่สร้างสรรค์บริการนี้กล่าว มีนิสัยขี้เถ้า แต่คนที่เป็นที่รู้จักกันดีและสามารถบรรเทาได้ง่ายพอสมควรเขากล่าว อย่างไรก็ตาม MySQL ยังมีปัญหาเกี่ยวกับการปรับขนาดอย่างน้อยปรับขนาดเพื่อรองรับบริการที่มีขนาดใหญ่เช่นเดียวกับ YouTube

"ปัญหาใหญ่ ๆ เกี่ยวกับ MySQL คือเมื่อคุณเข้าสู่จุดหนึ่งแล้วในการใช้งานคุณใช้จ่ายเป็นจำนวนมาก โซโลมอนกล่าวว่าเวลาในการจัดการฮาร์ดแวร์และจำนวนครั้งที่คุณมีอยู่ "เราต้องการให้ระบบอัตโนมัติทำงานได้อย่างคล่องตัวเราต้องการดำเนินการทุกอย่างที่มีความซับซ้อนและเกิดข้อผิดพลาดและทำให้สามารถรักษาตัวเองได้"

MySQL ยังไม่ได้มีประสิทธิภาพมากเมื่อใช้ในการใช้งานขนาดใหญ่ โดยปกติการเชื่อมต่อกับ MySQL จะต้องใช้เธรดของตัวเองบนเซิร์ฟเวอร์ วิธีนี้ไม่สามารถทำได้ในระดับของการดำเนินงานของ YouTube อย่างไรก็ตาม โซโลมอนกล่าวว่า "การใช้งานการเชื่อมต่อนับหมื่นนับเป็นเรื่องที่ไม่สามารถทำงานได้จริงๆ" โซโลมอนกล่าวว่า

วิศวกรของ บริษัท ไม่เต็มใจที่จะพยายามเปลี่ยนรหัสหลักของ MySQL โดยสังเกตว่าการเปลี่ยนแปลงที่ซับซ้อนและค่อนข้างยาก เข้าใจรหัสมักจะทำให้เกิดผลกระทบที่ไม่คาดคิด "มันไม่ง่ายเลยที่เมื่อคุณคิดว่าคุณรู้ว่ากำลังทำอะไรอยู่นั่นคือเมื่อคุณเริ่มประสบปัญหา" โซโลมอนกล่าวว่า

So Vitess ถูกสร้างขึ้นเพื่อทำงานร่วมกับ MySQL เพื่อให้สามารถจัดการเพิ่มเติมได้ คอมโพเนนต์ Vtocc ตัวอย่างเช่นรวบรวมนับพันคำสั่ง SQL ที่เข้ามาเข้าไว้ในแบทช์จำนวนน้อยดังนั้น MySQL จึงสามารถใช้ทรัพยากรน้อยลงในการตอบสนองคำขอเหล่านี้ได้ นอกจากนี้ Vtocc ยังประมวลผลคำค้นหาเพื่อให้สามารถทำงานได้อย่างมีประสิทธิภาพมากขึ้นและลดงานที่เกิดจากการสอบถามซ้ำกันโดยการนำผลจากการค้นหาหนึ่งครั้งมาใช้เพื่อตอบสนองคำขออื่น ๆ ที่เหมือนกัน

การใช้ Go ช่วยให้นักพัฒนาซอฟต์แวร์ YouTube มีประสิทธิผลมากขึ้นกว่าที่พวกเขาต้องการ ได้ใช้ภาษาแบบดั้งเดิมมากขึ้น Sougoumarane กล่าวว่า

Go รหัสคอมไพล์ได้อย่างรวดเร็วเขากล่าวว่า บรรทัดรหัส 30,000 บรรทัดใน Vitess สามารถรวบรวมลงในไบนารีได้ภายใน 30 วินาที และด้วยชุดห้องสมุดที่อุดมไปด้วยงานหลายอย่างไม่จำเป็นต้องมีการเขียนโปรแกรมมากนัก ตัวอย่างเช่น Sougoumarane เขียนข้อความประจำบรรทัด 105 ซึ่งทำหน้าที่บันทึกไฟล์เป็นระยะ ๆ ฟังก์ชันที่ไม่สามารถเขียนได้ในไม่กี่บรรทัดโดยใช้ C หรือ C ++

"นั่นเป็นวิธีที่แสดงถึงความเป็นไป" Sougoumarane กล่าว "คุณลักษณะทางภาษามีความคิดที่ดีพวกเขาช่วยให้คุณแต่งสิ่งต่างๆได้อย่างงดงามกว่าภาษาดั้งเดิม" Sougoumarane ยังชื่นชมการสนับสนุนที่มาพร้อมกันของ Go ซึ่งสำคัญสำหรับการใช้งานในโปรเซสเซอร์แบบมัลติคอร์ "คุณไม่ต้องเป็นห่วงเรื่องการจัดการกระทู้ไปจัดการพวกเขาให้กับคุณ" เขากล่าว "

ภาษายังมีข้อเสียบางอย่างเช่น Sougoumarane ยอมรับ ตัวอย่างเช่นอาจมีการปรับปรุงข้อผิดพลาดในการจัดการ การจัดตารางเวลาและการเก็บขยะอาจใช้ผลงานบางอย่างได้เช่นกัน

โซโลมอนกล่าวว่าเมื่อเวลาผ่านไป Vitess จะทำหน้าที่เพิ่มเติมเช่นการจำลองแบบฐานข้อมูลและการ sharding อัตโนมัติเพื่อให้ฐานข้อมูลสามารถเติบโตได้ทั่วทั้งเซิร์ฟเวอร์หลายเครื่องโดยไม่มีการแทรกแซงจากผู้ดูแลระบบ

Joab Jackson ครอบคลุมซอฟต์แวร์องค์กรและข่าวด่วนสำหรับเทคโนโลยีทั่วไป

IDG News Service ติดตาม Joab ทางทวิตเตอร์ที่ @Joab_Jackson ที่อยู่อีเมลของ Joab คือ [email protected]