Car-tech

YouTube skaluje MySQL z kodem Go

Уроки C# .NET Windows Forms / #3 - Подключение MySQL и создание базы данных

Уроки C# .NET Windows Forms / #3 - Подключение MySQL и создание базы данных
Anonim

Inżynierowie YouTube opracowują zestaw oprogramowania o nazwie Vitess, który ułatwi tworzenie baz danych MySQL z otwartym dostępem do kodu źródłowego w bardzo dużych środowiskach produkcyjnych. Aby napisać kod, używają języka programowania Google Go.

YouTube już korzysta z jednego komponentu Vitess, zwanego Vtocc, w celu obsługi filmów wideo dla wszystkich 800 milionów użytkowników miesięcznie usługi. Google przejął serwis YouTube w 2006 roku.

Vtocc "był bardzo stabilny i posiada wszystkie niezbędne narzędzia do pracy w środowisku produkcyjnym", powiedział architekt YouTube Sugu Sougoumarane, który wraz z inżynierem YouTube, Mike Solomon, omówił sprawę Vitessy na konferencji Usenix LISA (Large Installation System Administration), która odbyła się w tym tygodniu w San Diego.

To, że Vitess jest napisana w Go może pomóc w sprawdzeniu, że ten stosunkowo nowy język programowania może być używany w dużych środowiskach produkcyjnych. Google wprowadził wersję 1 Go w marcu.

YouTube obsługuje ponad 4 miliardy godzin filmów każdego miesiąca. Co minutę do serwisu wysyłanych jest około 72 godzin filmów. Podczas gdy YouTube przechowuje wszystkie swoje pliki wideo bezpośrednio w systemie plików, wykorzystuje MySQL do przechowywania wszystkich metadanych potrzebnych do wyświetlenia każdego filmu wideo, takich jak preferencje użytkownika, informacje o reklamie, dostosowania kraju i inne potrzebne informacje.

YouTube lubi korzystać z MySQL za jego niezawodność, powiedział Solomon, jeden z inżynierów, którzy pierwotnie zbudowali tę usługę. Ma dziwactwa, ale te dziwactwa są dobrze znane i można je dość łatwo złagodzić, powiedział. Jednak MySQL ma również problemy ze skalowaniem - co najmniej skalowaniem, aby pomieścić tak dużą usługę jak YouTube.

"Głównym problemem z MySQL jest to, że gdy dojdziesz do pewnego punktu [użycia], wydajesz dużo czas na zarządzanie sprzętem i liczbę instancji - powiedział Solomon. "Chcemy zautomatyzować ten fragment, chcemy podejmować każdą czynność, która jest skomplikowana i podatna na błędy, i sprawić, że sama się wyleczy."

MySQL również nie jest bardzo wydajny, gdy jest używany w dużym wdrożeniu. Zazwyczaj każde połączenie z MySQL wymaga własnego wątku na serwerze. Takie podejście nie jest jednak możliwe w skali działalności YouTube. "Uruchomienie dziesiątek tysięcy połączeń nie jest opłacalne" - powiedział Solomon.

Jednak inżynierowie firmy niechętnie próbowali zmienić główny kod MySQL, zauważając, że wprowadzanie zmian w złożonym i nieco trudnym - kod rozpoznawania może często powodować nieoczekiwane efekty. "To nie jest proste, kiedy myślisz, że wiesz, co robisz, wtedy zaczynasz wpadać w tarapaty" - powiedział Solomon.

Więc Vitess został stworzony, by działać w połączeniu z MySQL, aby zaoferować dodatkowe możliwości zarządzania. Komponent Vtocc na przykład konsoliduje tysiące przychodzących zapytań SQL na mniejszą liczbę partii, aby MySQL mógł pobierać mniej zasobów spełniających te żądania. Vtocc analizuje także kwerendy, dzięki czemu można je wydajniej wykonywać, i zmniejsza liczbę powielonych zapytań, wykorzystując wyniki z jednego zapytania, aby spełnić inne identyczne żądania.

Korzystanie z Go pozwoliło twórcom YouTube osiągnąć większą produktywność niż oni używali bardziej tradycyjnego języka, powiedział Sougoumarane.

Kod go szybko się komplikuje, powiedział. 30 000 linii kodu w systemie Vitess można skompilować w pliki binarne w około 30 sekund. A dzięki bogatemu zestawowi bibliotek wiele zadań nie wymaga tak dużego programowania. Na przykład, Sougoumarane napisał 105-liniową procedurę, która okresowo przycina pliki dziennika, funkcje, które nie mogły zostać zapisane w kilku liniach przy użyciu C lub C ++.

"Tak właśnie ekspresywne jest Go," powiedział Sougoumarane. "Funkcje językowe są przemyślane i pomagają komponować rzeczy w znacznie bardziej elegancki sposób niż tradycyjne języki". Sougoumarane docenił również wsparcie dla współbieżności Go, niezbędne do użycia w procesorach wielordzeniowych. "Nie musisz się martwić o zarządzanie wątkami. Idź nimi zarządzaj", powiedział.

Język ma również pewne wady, przyznał Sougoumarane. Obsługa błędów może zostać ulepszona, na przykład. Planowanie i odśmiecanie mogą również przydać się do pracy.

Solomon powiedział, że z biegiem czasu, Vitess podejmie dodatkowe obowiązki, takie jak replikacja bazy danych i automatyczne dzielenie, więc baza danych może rosnąć na wielu serwerach bez interwencji ze strony administratorów.

Joab Jackson omawia oprogramowanie dla przedsiębiorstw i ogólne nowości technologiczne dla News Service IDG. Śledź Joaba na Twitterze na @Joab_Jackson. Adres e-mail Joaba to [email protected]