Примечание редактора: эта статья написана лектором из Alibaba Хе Цзянем, который поделился и организовал мероприятие «Лекция о китайско-американских технических талантах в Кремниевой долине | JTalk Nuggets Offline Event 6», организованное сообществом Nuggets Technology Community. На данный момент Nuggets JTalk провел 6 сессий, и каждая сессия JTalk приглашает выдающихся инженеров из вертикальных отраслей поделиться своим превосходным практическим опытом, навыками и методами. Он направлен на то, чтобы предоставить разработчикам возможность автономного технического обмена и взаимодействия, а также помочь разработчикам расти.
Хэ Цзянь, старший технический эксперт Alibaba, работающий в группе системы планирования Sigma. Ранее работал в Hortonworks, был одним из первых разработчиков команды YARN, и отвечал за разработку нескольких важных функций в сообществе Hadoop YARN, Hadoop Committer и PMC, уделяя особое внимание системам управления ресурсами, исследованиям систем планирования и окончил Университет Брауна. со степенью магистра.
Многие люди, возможно, слышали многие из этих терминов: Kubernetes, YARN, Mesos, Docker Swarm, Borg, Sigma. На сегодняшний день это самые популярные системы планирования ресурсов в отрасли. Что именно они делают и в чем разница между ними? В этом выступлении я расскажу об этих системах диспетчеризации, а также покажу, как диспетчерская система Alibaba Sigma поддерживает огромный объем Double 11. Сегодня я расскажу вам, что такое система планирования и сценарии ее применения. Система планирования по-прежнему остается областью относительно низкого уровня.Позвольте представиться. В настоящее время я работаю в группе Sigma компании Alibaba. Sigma является продуктом нашей группы. Она отвечает за все кластеры и планирование в Alibaba. Раньше я работал в компании Hortonworks, занимающейся большими данными, и уже 5 лет занимаюсь Hadoop.что такое контейнер
Контейнеры немного похожи на виртуальные машины (ВМ), но контейнеры легче, чем виртуальные машины, и их можно создавать быстрее, чем виртуальные машины. Контейнеры могут упаковать ваш код, среду выполнения и библиотеки в Bundle, а затем создать образ.Вы можете думать об этом образе как о файле, хранящемся на диске. Вы можете запустить образ через Docker. Контейнер обеспечивает функцию изоляции, то есть приложение, работающее в контейнере, не может видеть информацию приложения вне контейнера.Что такое докер
Позвольте мне кратко представить Docker, Docker был запущен в 2013. Он основан на механизме изоляции ресурсов контрольных групп в ядре Linux и пространстве имен ядра Linux для создания независимых программных контейнеров. Как видно из рисунка, контейнер содержит несколько различных приложений, таких как Tomcat, некоторые среды выполнения Java и небольшие ОС, такие как Debian, которые упакованы как контейнер. Здесь также есть контейнер PHP+MySQL+Ubuntu, а нижний слой двух контейнеров — это ядро ОС.Это изображение представляет собой сравнение между контейнером и виртуальной машиной.Самая большая разница в том, что у виртуальной машины есть гипервизор, который имеет большой вес, в то время как контейнер соответствует демону Docker.Когда пользователь отправляет запрос, демон Docker помогает Например, вы сообщаете Docker, что вам нужен контейнер, а демон Docker отвечает за принятие запроса и помощь в запуске контейнера Docker. ##Что такое планирование- Планирование позволяет быстро размещать контейнеры на кластерных машинах.
- Распределяйте контейнеры по разным машинам на основе запросов пользователей
- Ограничьте вместимость контейнеров и обеспечьте справедливость контейнеров
- Улучшите использование ресурсов, назначив простаивающие машины там, где они необходимы.
- Помогите перезапустить сервер, который висит по ошибкеСамая старая из популярных систем планирования в отрасли — Google Borg, которая выполняет большинство задач Google и некоторые серверные службы. Kubernetes также исходит от Google, Docker Swarm — это система планирования, написанная самим Docker, а Yarn — это подпроект Hadoop. Системы планирования в Alibaba — это Sigma и Fuxi.Позвольте мне сначала кратко представить, что такое Kubernetes. Впервые он был открыт Google. Он получил широкую огласку за последние два года, и все больше и больше людей его понимают. Kubernetes теперь берет на себя большую часть контейнерных рабочих нагрузок и сервисов.Это общая архитектура Kubernetes.Пользователь отправляет запрос на сервер API, а сервер API перенаправляет запрос мастеру Kubernetes, что является логикой планирования. В кластере каждой крупной компании обязательно будет задача, которая будет выделять пользователям какие-то контейнеры на узлах.Преимущество Kubernetes в том, что он абстрагирует несколько контейнеров в поды, которыми пользователям удобно управлять.Вот пример, который представляет собой процесс, когда пользователь развертывает веб-приложение. Как показано на анимации, например, пользователь хочет развернуть веб-приложение «Hello World» на веб-странице, пользователь указывает, что ему нужна реплика, планировщик выделяет модуль на узле 1, и модуль запускает Приложение Hello World Контейнер. После того, как планировщик получит этот запрос, он реплицирует контейнер веб-сервера в трех копиях и запустит одну и ту же копию реплики на узле 1/2/3. Если однажды узел зависнет, планировщик не сможет удовлетворить исходные три запроса реплики. Таким образом, планировщик подаст заявку на другой модуль в существующем узле, чтобы удовлетворить запрос пользователя.
Sigma
Только что я в основном представил некоторые проекты с открытым исходным кодом и проекты в отрасли.Теперь я представлю Sigma. Sigma разрабатывалась в Alibaba несколько лет, претерпела ряд апгрейдов и изменений, а также вобрала в себя некоторые передовые идеи отрасли.Позвольте мне сначала представить некоторые проблемы, существующие в исходной системе планирования Али.T4Это контейнер, разработанный Alibaba внутри компании. Группа T4 представляет собой небольшой кластер. В прошлом у Али было много маленьких кластеров, каждый из которых был независимым, и мог работать только в каждом маленьком кластере в одиночку, и не мог работать на других кластерах, что приводило к фрагментации ресурсов. Когда вы развертываете приложение, ваше приложение ограничено фиксированным небольшим кластером и не может использовать ресурсы других простаивающих кластеров. Во время Double Eleven мы обнаружили, что коэффициент использования некоторых кластеров, связанных с бизнесом Double Eleven, будет очень высоким, достигая 45-50%, но некоторые кластеры, выполняющие простые задачи, очень простаивают, пустая трата ресурсов.Ситуация, вызвавшая такую трату ресурсов, связана с историей Али. В первые дни каждое бизнес-подразделение (сокращенно BU) в Alibaba самостоятельно разрабатывало эксклюзивную систему планирования, что приводило к пустой трате ресурсов. Предположим, БУ купил 10 000 машин, и сейчас работает только половина из них, а другая половина простаивает и не может быть вызвана другими БЕ; при этом другой БЕ может закупить меньше серверных ресурсов из-за нехватки средств, но потому что планировщик не является унифицированным, он не может заимствовать ресурсы у других БЕ.Поэтому самое важное, что мы делаем, — это открываем пул ресурсов BU и подключаем все машины к одному и тому же пулу ресурсов.Преимущество этого в том, что мы можем использовать планировщик для планирования ресурсов всех пулов ресурсов. Например, я хочу запустить приложение. Раньше я мог быть ограничен ресурсами своего собственного пула ресурсов, но теперь я могу использовать все ресурсы всей группы Alibaba. Особенно во время Double Eleven это будет очень эффективно, потому что Double Eleven использует много ресурсов только в этот день или неделю, и скорость использования ресурсов будет быстро снижаться после этого времени. Мы не можем купить много машин на неделю Double 11, а потом ждать окончания Double 11, чтобы простаивать эти машины.На картинке показано использование ресурсов серверами Double Eleven, о которых я только что упоминал.При покупке большого количества машин почти все ресурсы будут потрачены впустую в непиковый период на картинке. Поэтому на данный момент мы будем динамически заимствовать некоторые виртуальные машины из Alibaba Cloud для развертывания некоторых новых приложений в пиковый день или неделю. По истечении времени мы вернем ресурсы в Alibaba Cloud. Преимущество этого заключается в том, что нам не нужно покупать машинные ресурсы, которые мы мало используем в течение года в эти дни.Архитектура Sigma в основном разделена на четыре уровня: нижний уровень — это инфраструктура, включая построение IDC и сетевую архитектуру. Сигма существует в форме мозга и выполняет некоторые функции, такие как планирование и интеллектуальное планирование, о которых я только что упомянул. Он будет предсказывать, сколько машин вам нужно купить в будущем, и формулировать стратегии на основе вашего исторического использования ресурсов; бизнес-сценарий будет более сложным. Например, когда пользователь развертывает приложение, в этом месяце ему может потребоваться развернуть только 100 ресурсов. Когда потребность возрастет в следующем месяце, она динамически расширится до 200 ресурсов. Это гибкое расширение/уменьшение, поддерживаемое Sigma. , есть некоторая бизнес-логика, такая как база данных и транзакции Alibaba, Ant Financial, а также все поисковые системы и планирование, работающие на нашей платформе планирования Sigma.У Alibaba есть два планировщика ресурсов, один называется Sigma, а другой Fuxi, и их логика все же немного отличается. Sigma отвечает за бизнес-подразделения, связанные с электронной коммерцией, транзакциями и поиском, аналогичные долгосрочным службам, а Fuxi отвечает за бизнес-логику, связанную с расчетами.В настоящее время два бизнес-пула все еще находятся в состоянии разделения. Сейчас мы прилагаем некоторые усилия, чтобы открыть ресурсы двух планировщиков.По этой причине мы добавили «принимающего решения» в середине, который может заимствовать ресурсы на Sigma для Fuxi.Когда есть свободное время на Fuxi side Он также может быть позаимствован у Sigma при использовании ресурсов, и мы можем реализовать гибкое повторное использование ресурсов с помощью этих двух планировщиков.На картинке простой пример, когда Sigma не работает с Fuxi, видно, что Sigma относительно простаивает ночью, потому что меньше пользователей делают покупки в середине ночи, а с дневного времени до 8 вечера трафик Taobao и Tmall относительно высоки, Sigma также поддерживает высокую степень использования ресурсов.Эта картина аналогична: в день Double 11 коэффициент использования Sigma был особенно высоким, но коэффициент использования ресурсов был относительно низким до и после Double 11. Наша идея состоит в том, чтобы позаимствовать неиспользуемые ресурсы Sigma в другие периоды времени для Fuxi, потому что Fuxi не выполняет логику, связанную с транзакциями, он в основном выполняет некоторые автономные задания.На приведенном выше рисунке показано, что Sigma и Fuxi совместно используют ресурсы в разные периоды времени, чтобы максимизировать коэффициент использования ресурсов.Только что я в основном говорил о планировщиках, а теперь давайте представим направление развития контейнеров в Alibaba. Али также разработал контейнер, похожий на Docker, под названием Pouch. Pouch стартовал в 2017 году и разрабатывался на базе Linux Containers.К 2017 году все веб-приложения и логические приложения, связанные с электронной коммерцией, поиском и т. д., будут Pouched, то есть контейнеризированными, что позволит упаковать все онлайн-приложения в один контейнер, и использовать концепцию контейнеров для развертывания этих приложений.Инкубация Pouch началась в октябре 2017 г., официальное открытие проекта Pouch состоялось в ноябре того же года, а в марте 2018 г. мы выпустили первую официальную версию Pouch.Вот краткое введение в сценарии применения Pouch в Ali.Объем транзакций в 168,2 млрд в ноябре 2017 года означает, что 100% онлайн-бизнеса осуществляется с помощью Pouch. А «масштаб контейнеров достигает уровня в один миллион» означает, что у нас есть почти миллион контейнеров Pouch, поддерживающих различные сценарии электронной коммерции и поиска. По сути, все ежедневные сценарии приложений Ali Group развертываются с помощью Pouch.Помимо приложений электронной коммерции, он также охватывает базу данных развертывания и так далее.На этом рисунке показано, что Ali's Pouch совместим со всей экосистемой контейнеров, а также с некоторыми распространенными интерфейсами в сообществе, такими как Container Network Interface (CNI) и Container Storage Interface (CSI).Только что я упомянул, что изображение, соответствующее контейнеру, можно представить как файл изображения на диске.В огромном сценарии Alibaba распространение самого файла является очень сложным процессом.Мы разработали проект распространения изображения под названием Dragonfly.Для этого Например, мы используем BitTorrent для загрузки некоторых файлов и используем режим P2P для загрузки файлов на разные хосты/узлы.В настоящее время у Pouch есть несколько последователей дома и за рубежом, более 2000 звезд на GitHub и более 50 участников из разных компаний.«Лекционный зал Силиконовой долины технических талантов Китая и США | Офлайн-мероприятия JTalk Nuggets, этап 6» Коллекция обмена и сортировки
Запуск новых функций Android P — Ли Цзичао | JTalk Issue 6
Секрет системы планирования Alibaba Black Technology — Хэ Цзянь | JTalk Issue 6