Car-tech

YouTube cân bằng MySQL với mã Go

Làm thế nào để cài đặt MySQL trên Windows 10

Làm thế nào để cài đặt MySQL trên Windows 10
Anonim

Các kỹ sư của YouTube đang phát triển một bộ phần mềm, được gọi là Vitess, sẽ giúp các cơ sở dữ liệu MySQL nguồn mở hoạt động hiệu quả hơn trong môi trường sản xuất rất lớn. Để viết mã, họ đang sử dụng ngôn ngữ lập trình của Google Go.

YouTube đã sử dụng một thành phần Vitess, được gọi là Vtocc, để giúp phân phát video cho tất cả 800 triệu người dùng hàng tháng của dịch vụ. Google mua lại YouTube vào năm 2006.

Vtocc "rất ổn định và có tất cả các công cụ cần thiết để bạn sử dụng trong môi trường sản xuất", kiến ​​trúc sư YouTube Sugu Sougoumarane, người cùng với kỹ sư YouTube Mike Solomon, đã thảo luận về Vitess tại hội nghị Usenix LISA (Quản trị hệ thống cài đặt lớn), được tổ chức tuần này tại San Diego.

Vitess được viết bằng Go có thể giúp xác nhận ý tưởng rằng ngôn ngữ lập trình tương đối mới này có thể được sử dụng trong môi trường sản xuất quy mô lớn. Google giới thiệu phiên bản 1 của Go vào tháng 3.

YouTube phục vụ hơn 4 tỷ giờ video mỗi tháng. Khoảng 72 giờ video được tải lên dịch vụ mỗi phút. Trong khi YouTube lưu trữ tất cả các video trực tiếp trên hệ thống tệp, YouTube sử dụng MySQL để lưu trữ tất cả siêu dữ liệu cần thiết để phân phát từng video, chẳng hạn như tùy chọn người dùng, thông tin quảng cáo, tùy chỉnh quốc gia và các thông tin cần thiết khác.

YouTube thích sử dụng MySQL về độ tin cậy của nó, Solomon, một trong những kỹ sư ban đầu xây dựng dịch vụ cho biết. Nó có quirks, nhưng những quirks là nổi tiếng và có thể được giảm nhẹ khá dễ dàng, ông nói. Tuy nhiên, MySQL cũng có vấn đề với việc mở rộng quy mô - ít nhất là mở rộng để chứa một dịch vụ lớn như YouTube.

"Vấn đề lớn với MySQL là khi bạn đạt đến một điểm nhất định thời gian quản lý phần cứng và bao nhiêu trường hợp bạn có, "Solomon nói. "Chúng tôi muốn tự động hóa đoạn đó. Chúng tôi muốn thực hiện mọi hành động phức tạp và dễ bị lỗi và tự sửa chữa nó."

MySQL cũng không hiệu quả lắm khi được sử dụng trong một triển khai lớn. Thông thường, mỗi kết nối tới MySQL yêu cầu chủ đề riêng của nó trên máy chủ. Tuy nhiên, phương pháp này không khả thi ở quy mô hoạt động của YouTube. "Chạy hàng chục nghìn kết nối không thực sự khả thi," Solomon nói.

Các kỹ sư của công ty, đã miễn cưỡng cố gắng thay đổi mã MySQL chính, lưu ý rằng việc thay đổi phức tạp và hơi khó để mã-hiểu được thường có thể dẫn đến các hiệu ứng bất ngờ. "Nó không đơn giản. Chỉ khi bạn nghĩ bạn biết bạn đang làm gì, đó là khi bạn bắt đầu gặp rắc rối," Solomon nói.

Vì vậy Vitess được tạo ra để chạy cùng với MySQL để cung cấp khả năng quản lý bổ sung. Thành phần Vtocc, ví dụ, hợp nhất hàng nghìn truy vấn SQL đến vào một số lô nhỏ hơn để MySQL có thể mất ít tài nguyên hơn để đáp ứng các yêu cầu này. Vtocc cũng phân tích cú pháp các truy vấn để chúng có thể được thực hiện hiệu quả hơn, và giảm công việc do các truy vấn trùng lặp gây ra bằng cách sử dụng lại các kết quả từ một truy vấn để đáp ứng các yêu cầu giống nhau khác.

Sử dụng Go đã cho phép các nhà phát triển YouTube làm việc hiệu quả hơn Sougoumarane cho biết, đã sử dụng một ngôn ngữ truyền thống hơn. 30.000 dòng mã trong Vitess có thể được biên dịch thành nhị phân trong khoảng 30 giây. Và, nhờ vào một bộ thư viện phong phú, nhiều tác vụ không đòi hỏi nhiều lập trình. Ví dụ, Sougoumarane đã viết một thói quen 105 dòng định kỳ cắt các tệp nhật ký, chức năng không thể được viết bằng vài dòng bằng cách sử dụng C hoặc C ++.

"Đó là cách diễn đạt của Go," Sougoumarane nói. "Các tính năng ngôn ngữ được suy nghĩ tốt. Chúng giúp bạn sáng tác mọi thứ theo cách tao nhã hơn các ngôn ngữ truyền thống". Sougoumarane cũng ca ngợi sự hỗ trợ đồng thời của Go, rất quan trọng để sử dụng trong các bộ xử lý đa lõi. "Bạn không phải lo lắng về việc quản lý chủ đề. Hãy quản lý chúng cho bạn", anh nói.Ngôn ngữ cũng có một số nhược điểm, Sougoumarane thừa nhận. Ví dụ: xử lý lỗi có thể được cải thiện. Theo Solomon, theo thời gian, Vitess sẽ đảm nhiệm các nhiệm vụ bổ sung, chẳng hạn như nhân rộng cơ sở dữ liệu và tự động sharding, vì vậy cơ sở dữ liệu có thể phát triển trên nhiều máy chủ mà không có sự can thiệp của quản trị viên.

Joab Jackson bao gồm phần mềm doanh nghiệp và tin tức công nghệ chung cho

Dịch vụ tin tức IDG

. Theo dõi Joab trên Twitter tại @Joab_Jackson. Địa chỉ email của Joab là [email protected]