Убер подключение водителей: как устроиться водителем, условия подключения
Онлайн подключение к Убер такси (Uber), работа на своем авто – The Cab
Подключение к Убер такси онлайн — самый простой и удобный способ начать работу в Uber, крупнейшем сервисе такси в мире. Связь между клиентами и водителем происходит через мобильное приложение. Оповещение о новом заказе в Убер поступает онлайн — водитель берет заявку, отвозит клиента к месту назначения и сразу же может принять следующий вызов.
Убер распределяет заказы по простому принципу — заявку получает тот водитель, который находятся ближе всего к клиенту (в радиусе 5 км). Сервис автоматически создает цепочки вызовов, чтобы свести количество простоев к минимуму.
Как получить работу в Uber онлайн
Для онлайн регистрации введите данные водительского удостоверения, а также самого автомобиля. Введите данные в форму ниже и оставьте свои контакты.
О результатах регистрации в Убер мы сообщим в ближайшее время.
Подключение к Uber через прямого партнера
Компания Убер напрямую не работает с водителями, которые не оформлены в качестве ИП или ООО. Работа с физическими лицами осуществляется только через авторизованных партнеров.
Компания The Cab является прямым представителем Убер в России и предлагает только официальное трудоустройство.
Почему партнер The Cab?
Обеспечиваем юридическую защиту, заключаем договор, выдаем квитанции.
Работаем с 2014 года. Выплачиваем вовремя и в полном объеме.
Скидка на топливо до 7%, скидки на запчасти и мойку.
Условия подключения к Убер
Требования к водителю
Права категории В- Стаж вождения от 1 года
- Возраст от 21 года
Требования к автомобилю
- Минимальный год выпуска — 2004
- Количество дверей не менее 4
- Не подходят: Chevrolet Lanos, Hyundai Getz, Daewoo Matiz / Nexia, TagAZ, Niva, Chevrolet Niva, Lada Priora, Lada Samara, ВАЗ «классика»
- Подключиться можно на своем авто, на машине компании или на автомобиле в аренде
Посчитайте свой доход с Uber
После онлайн подключения к Убер вы сможете брать в работу неограниченное количество заказов в сутки. Ваш общий доход будет состоять из суммы выполненных заказов минус комиссия партнера (5%) и комиссия Убер (20%), плюс бонусы (комиссией не облагаются). В среднем водители зарабатывают от 400 р./час
Выплаты по безналичным заказам мы переводим вам на карту в течении 5 минут, после выполнения. Наличные вы сразу оставляете себе.
Есть вопросы
Если у вас остались вопросы, заполните заявку, и мы как можно быстрее дадим вам исчерпывающие ответы:
Подключение к Uber в России. Работа водителем, подключение к Убер (Юбер) | партнер Uberlin
Какие преимущества при сотрудничестве с Uber Partner – «UBERLIN»?
Мы являемся крупнейшим международными партнерами UBER в России и СНГ, и работаем 3-х странах по всем городам России в том числе являемся партнерами Uber в вашем городе и имеем 3-х летний опыт сотрудничества с Uber. У нас все максимально прозрачно и честно, поэтому мы не скрываем истинный заработок водителей, в отличии от других партнеров.С партнером Uberlin — вы сможете увеличить свой доход так как мы не забираем себе бонусы и не повышаем комиссию, в отличии от других посредников. Работая с Uberlin вы забираете себе абсолютно все прибавки и бонусы от убера — например за работу в пики, надбавки за количество выполненных поездок, мы берем самую низкую партнерскую комиссию на рынке — 4% от вашей платежной ведомости, доступной в приложении- все честно, прозрачно и легко проверяемо. Никаких скрытых, минимальных или фиксированных комиссия за «обслуживание или ведение аккаунта».
Водитель такси Uber также как и пользователи может оставлять отзывы на клиентов. Убер следит за качеством клиентов, и недобросовестные клиенты отключаются от системы, впрочем также как и недобросовестные водители. В убер вы сами устанавливаете себе график — будь это весь рабочий день на линии, или вы сможете пользоваться uber такси для подработки. Заработок за предыдущую неделю выплачивается в период среда-пятница, мы берем только 4% без скрытых платежей и комиссий — все честно и прозрачно. Простаивать Водителям Uber не придется — заказов очень много, также есть даже заявки «влет» для «бесшовной» поездки!
Для того чтобы подключиться к uber, Вам достаточно отправить заявку на нашем сайте, дождаться звонка оператора и вам будет назначена встреча в офисе, где нужно будет пройти регистрацию, после чего Ваш аккаунт будет активирован в системе. Наша команда первоклассных специалистов помогла начать зарабатывать более 13000 человек на своём автомобиле. Поможем и Вам! Присоединяйтесь! Начать подключение к UBER Вы можете прямо сейчас на сайте — просто оставьте заявку.
Подключение к Uber: выбор таксопарка, необходимые документы
Как все прекрасно знают, Убер это одна из самых первых фирм, из области предоставления таксомоторных услуг с таким функционалом, которая появилась в России. Всего на сегодняшний день, на российских дорог можно встретить двойку лидеров рынка – это американская Убер и российская Яндекс такси. С недавних пор, было принято решение объединиться в единую структуру, когда именно произойдет полное слияние, пока не известно. Причинами столь не ожидаемых потрясений, в обеих компаниях, называют, общий упадок уровня такси в России. Понятно, что у отечественного гиганта изначально было больше шансов, поэтому в наших реалиях «американец» не смог трудиться на полную.
Но, сегодня речь в нашей статье пойдет не о будущих перспективах, а о том, каким образом ныне можно подключиться к этому ресурсу обычному водителю. Какие новшества и изменения будут ожидать в 2018 году подключение к Убер.
Какие документы нужны для подключения к Убер?
Прежде чем начать работать в совместной среде большинства таксистов, необходимо оформить специальную заявку. Требования к автомобилю Убер стандартные. По-прежнему существует правило использования автомобилей, возраст которых не превышает 10 лет. При условии того, что он полностью исправен и никаких технических неполадок не произойдет.
Документы для подключения к службе Uber такси
Регистрация в системе Убер и последующие подключение выполняется через офис компании и приложение. Что от вас требуется, подробно расписано на официальном сайте сервиса. Но, для уточнения приводим пример, какие требования на претендента возлагаются:
- Возраст от 23 лет.
- Гражданство РФ либо СНГ.
- Свидетельство о регистрации.
- Регистрация ИП.
- «Страховка».
- Отсутствие судимостей.
Финансовые условия работы в Убер
Что касается выплат, то сервис гарантирует стабильный заработок. Выплаты могут производиться любым для вас способом (безнал). Сроки оплаты можно выбирать самостоятельно. Кроме того, с ежедневной выплатой у вас есть возможность получать даже определенные бонусы от компании. С моментальными выплатами много нюансов, на данный момент они доступны в крупных городах.
Обговаривая дальнейшие условия по финансовому обеспечению, хотелось бы еще уточнить, что выплаты ни в коем случае не зависят от ранга и уровня машины. То есть водитель имеет четкое представление о фиксированной сумме подачи машины, простоя и оплаты за каждый километр, по стандартному для всех тарифу.
Подключение водителей
Подключение водителей может производиться несколькими способами, как уже говорилось, непосредственно через офис компании или воспользовавшись меню приложения. Давайте разберем некоторые условия подключения на своем авто:
- Машина должна соответствовать требованиям компании, то есть в первую очередь обладать допустимым возрастом.
- Марка автомобиля играет не меньшую роль. Ныне в сервисе учтены пожелания клиентов, которые хотят видеть автомобили бюджетного класса иностранного производства. К примеру, первыми в списке допустимых к работе, числятся Киа Рио, Солярисы, Шкоды, Короллы.
Рассчитывать на подключение к Убер Блек имеют право только владельцы премиальных авто и бизнес-класса. К ним принято относить Камри, различные модели от Ауди последних лет, БМВ, Мерседесы, Инфинити, Хонды и другие из подобной линейки. Помимо этого, на автомобиле категорически запрещены любые символы, картинки и реклама. На такой машине не должно быть никаких свидетельств того, что она находится в службе такси.
Что касается возраста подключаемых авто, то в каждом отдельном случае, данный вопрос можно рассмотреть индивидуально. В зависимости от марки и года выпуска и соответствующих технических характеристик.
Кроме того, для таких автомобилей значительно выше ставятся условия по техническому состоянию и состоянию салона. Только опрятный внешний вид, как водителя, так и машины. Автомобили должны быть всегда чистыми и ухоженными.
Подключение в Москве и Санкт-Петербурге
Помимо различных посредников, подключение может происходить к Убер и напрямую, без каких-либо проволочек. Что для вас потребуется – это, безусловно, явиться в офис, либо через приложение подать все необходимые документы.
Вообще, зачастую многие водители выбирают для себя надежного партнёра, особенно в крупных городах. С ним, никогда не бывает проблем с получением заказов. Кроме того, доступны всевозможные бонусы, помимо классических акций от компании Убер. Как правило, комиссия на партнера может составлять до 6% процентов, в некоторых случаях и больше. Все зависит от того, какой класс авто вы представляете. Более подробная информация обо всех условиях для каждого региона доступна на официальном сайте компании.
Понравилась статья?
ДаНет
▷ Подключение к Убер такси, работа водителем в Uber – официальный партнер The Cab
Uber — сервис такси №1 в мире. Вместе с ним зарабатывают миллионы людей в 66 странах на 5 континентах. И сегодня работа в «Убер» доступна в Москве, Санкт-Петербурге, Новосибирске, Уфе и других крупных городах России.
Принцип работы в Uber
Принцип работы в Uber прост — взаимодействие между водителем и пассажиром происходит через мобильное приложение. Нужно пройти процедуру подключения водителей к «Убер» и в тот же день можно принять свой первый заказ.
Все доступные заказы вы будете видеть через специальное приложение для водителей. Приоритет компании — скорость подачи авто, поэтому заказ отдаётся ближайшему кандидату, который находится в радиусе 5 км.
Начать на своем авто Начать на авто компании
Как присоединиться
The Cab — официальный партнер такси Uber в Санкт-Петербурге, Самаре, Москве, Уфе, Перми, Омске, Ижевске и Красноярске.
Подключение к Uber, через нашу компанию — бесплатное.
Требования для работы в Uber
Требования к водителю
- Права категории В
- Стаж вождения от 3 лет
- Возраст от 21 года
Требования к автомобилю
- Эконом класс от 2008 года выпуска (в зависимости от модели)
- Комфорт класс от 2012 года выпуска
- Бизнес класс от 2013 года выпуска
- 4 двери и больше
- Подключиться можно на своем авто или на арендованном
Сколько вы заработаете
Доход водителя после регистрации будет состоять из суммы выполненных заказов, минус 20% (комиссия Uber). Показать тарифы
Эконом | Комфорт | Комфорт+ | Бизнес | |
---|---|---|---|---|
79 ₽ | 149 ₽ | 249 ₽ | 419 ₽ | |
Тариф по городу | 13 ₽/км + 5 ₽/мин | 18 ₽/км + 5 ₽/мин | 20 ₽/км + 8 ₽/мин | 20 ₽/км + 16 ₽/мин |
Тарифы служб такси могут отличаться. Указана максимальная стоимость услуг без учета коэффициента «Горячие часы».
Как происходят выплаты
Работа в такси «Убер» оплачивается за каждый заказ. Наличные водитель оставляет себе, а безнал перечисляется вам на карту моментально, ежедневно или еженедельно по понедельникам.
За 5 лет работы партнером Uber мы разработали оптимальные планы выплат, что б нашим водителем было удобно. Вы можете выбрать план для себя:
Моментальные выплаты
Деньги приходят на вашу банковскую карту сразу по завершению поездки, автоматически.
Узнать подробнее- Подключение: бесплатно
- Партнерская комиссия: 10₽ с заказа
- Обслуживание 100 ₽ в месяц
разработано совместно с
Ежедневные выплаты
Мы отправляем вам деньги каждый день на вашу карту, без напоминаний и дополнительных заявок.
Узнать подробнее- Подключение: бесплатно
- Партнерская комиссия: 10₽ с заказа
Еженедельные выплаты
Мы переводим вам заработаные деньги за неделю каждый следующий вторник на карту.
Узнать подробнее- Подключение: бесплатно
- Партнерская комиссия: 10₽ с заказа
Почему партнер The Cab?
Подключиться к сервису напрямую без создания ИП или ООО невозможно. Для физических лиц регистрация доступна только через партнеров. Компания The Cab — официальный партнер Убер и работает по всей России. С нами работает более 3000 водителей.
Обеспечиваем юридическую защиту, заключаем договор, выдаем квитанции.
Работаем с 2014 года. Выплачиваем вовремя и в полном объеме.
Скидка на топливо до 7%, скидки на запчасти и мойку.
Как начать работать:
-
Оставьте заявку
Для подключения к Убер заполните форму или позвоните по телефону: +7 (812) 603-47-45. А также вы можете приехать к нам в офис: Санкт-Петербург, Лиговский пр., д. 50, кор. 13, офис 19 .
-
Уточним детали
Мы зададим вам несколько вопросов про вас и автомобиль, ответим на все ваши вопросы и внесем в базу заказов
-
Принимайте свой первый заказ
Как стать партнером Убер и подключать водителей
Многие, кто хочет подключиться к Убер, сталкиваются с проблемой оформления сотрудничества. Однако достаточно знать имеющиеся особенности. Чтобы стать партнером Убер и подключать дополнительно водителей для увеличения дохода, требуется соблюдать четкий порядок действий.
Варианты сотрудничества с Uber
Стать партнером Убер и подключать водителей, несмотря на наличие подробной инструкции, весьма сложно. Во многом это связано с многочисленными нюансами.
В частности, необходимо будет выбрать для себя один из немногочисленных налоговых статусов:
Только после этого можно рассчитывать на партнерство с Убер и ощутить на себе все преимущества от этого.
Важно! Приглашение на работу новых водителей полностью ложится на ваши плечи, при этом вовсе необязательно кого-то приглашать, можно работать самому. По большому счету, именно так поступают многие водители.
Если кого-то и приглашают, так, это часто родители, братья, друзья и родственники.
Как стать партнером: подробное руководство
Открыть такси Убер в своем городе можно, следуя нескольким этапам, которые заключаются в следующем:
- Изначально нужно выбрать для себя форму регистрации партнера: ИП либо же ООО. От этого зависит дальнейшая разновидность налогообложения.
- На следующей стадии требуется открыть текущий счет в одном из банков.
- Обращение в один из офисов представительства компании с целью подписания договора о сотрудничестве.
- Открытие разных профилей для различных населенных пунктов – чтобы подробно ознакомиться с условиями работы Uber, установленными для конкретного региона.
- Формирование системы регистрации новых водителей для работы в такси.
- На следующем этапе остается только приступить к ведению базы водителей и системы учета поощрения.
В течение месяца с момента активации в статусе партнера требуется оформить лицензию на осуществление пассажирских перевозок легковыми автомобилями.
Посещение центра поддержки клиентов
Чтобы стать полноценным партнером Uber, необходимо обязательно обратиться в официальное представительство компании и подписать соглашение о взаимовыгодном сотрудничестве. При себе нужно иметь паспорт и документы, подтверждающие открытие ИП или ООО.
Выбор удобной схемы партнерства
Как отмечалось ранее, перед подачей заявки о сотрудничестве в обязательном порядке необходимо оформить статус юридического лица или индивидуального предпринимателя.
В данном случае все просто:
- Нужно обратиться в уполномоченный государственный орган.
- Написать заявление.
- Получить положительный ответ и зарегистрироваться.
Крайне важно понимать, что будет лучше открыть:
Первый вариант наиболее популярен, поскольку предоставляет возможность набирать в свой штат до 15 наемных рабочих, ООО – наиболее крупная система налогообложения, в которой размер сбора исчисляется пропорционально получаемому размеру доходов.
Наиболее оптимальным вариантом на начальном этапе станет открытие ИП, поскольку в таком случае требуется уплачивать налоги в наименьшем размере.
Подготовка и отправка документов
Для возможности обрести желаемое партнерство следует зарегистрироваться на официальном портале Убер и загрузить организационные документы. Именно они подтверждают обретенный статус для дальнейшей работы.
Благодаря наличию интуитивно понятного интерфейса, в процедуре загрузки документации нет ничего сложного.
Главное помнить: бумаги должны быть хорошего качества, расплывчивость недопустима.
Загрузка реквизитов своего счета
В процессе регистрации граждане вынуждены указывать исключительно юридический счет – реквизиты, которые зарегистрированы на имя предпринимателя.
Для совершения любых финансовых операций в качестве партнера сервиса нужен счет, оформленный на ИП или ООО. Применение банковской карты физического лица запрещается.
При необходимости изменить реквизиты требуется:
- Зарегистрироваться на официальном ресурсе.
- В поле обращения к службе поддержки сформировать соответствующий запрос.
- Поставить в известность о смене статуса.
На следующем этапе требуется предоставить документы, которые на официальном уровне подтверждают статус обратившегося лица. Бумаги необходимы также с целью перечисления налоговых сборов.
В большинстве случаев, смена статуса по времени не занимает более 2 недель, беря во внимание тот факт, что на процесс загрузки документов требуется всего несколько минут.
Одновременно с этим, завершающим этапом перехода на новый статус принято считать завершение проверки предоставленной на рассмотрение документации. Дополнительно возникает необходимость в уплате пошлины, которая включает в себя услуги по регистрации самого банковского счета в компании Убер. Выгодно ли это в данном случае, каждый должен для себя решить самостоятельно.
Однако для многих именно такой вариант считается одним из немногочисленных методов увеличить размер ежемесячного дохода.
Подробно о подключении водителей
Став полноценным партнером, можно работать не только самостоятельно, но и подключать к рассматриваемой системе иных водителей, благодаря чему, существенно увеличивается размер доходов.
Процедура подключения обладает некой схожестью с правилами оформления партнерства, однако некоторые отличия все-таки имеются:
- во-первых, водитель должен тоже оформить для себя статус индивидуального предпринимателя, причем, с подробным указанием того, что его деятельность связана с пассажирскими перевозками, в частности, такси;
- во-вторых, в обязательном порядке после получения положительного ответа на сформированный запрос к подключению водителя последнему требуется представить личные документы (копии) в обучающийся центр. Адрес можно узнать в службе поддержки на официальном сайте Убер.
Стать частью команды может любой водитель, который отвечает минимальным требованиям. Достаточно ознакомиться с ними на официальном сайте.
В целом алгоритм действий следующий:
- Подтверждение соответствия заявленным условиям.
- Проверка личного транспорта на предмет его соответствия с требованиями.
- Регистрация личного кабинета в системе.
- Загрузка копий всех необходимых документов.
- Установка мобильного приложения на свой смартфон (обязательно нужно обеспечить беспрепятственный доступ к интернету).
- Соблюдать установленные правила – при нарушениях водителя исключают из базы.
Среди основных требований к водителям выделяют:
- возраст – от 21 года;
- наличие водительского удостоверения с открытой категорией «B»;
- стаж вождения – от 3 лет;
- отсутствие судимости;
- отсутствие непогашенных штрафов по нарушениям ПДД.
В случае с машиной, основные требования заключаются в следующем:
- автомобиль является четырехдверным, пассажирским;
- отличное техническое состояние;
- ухоженный салон;
- отсутствие вмятин и царапин на кузове;
- отсутствие посторонних запахов в салоне автомобиля.
Необходимо обращать внимание на то, что автомобиль может быть отнесен к категории «Премиум-класса» только в случае, если его год выпуска от 2005 года.
В случае соблюдения всех перечисленных требований, следует приступить к процедуре регистрации личного кабинета на официальном портале компании Убер.
В обязательном порядке при регистрации указываются:
- достоверные личные данные;
- актуальный адрес электронной почты;
- актуальный номер мобильного телефона для возможности обратной связи.
В своем профиле после этого необходимо перейти в соответствующий раздел и загрузить копии личных документов – сделать это нужно в максимально сжатые сроки.
О проблеме присутствия Uber в небольших городах и регионах
Беря во внимание тот факт, что сейчас идет активная фаза слияния с системой Яндекс.Такси, достигшее ранее развитие во многих российских регионах, начинает сворачиваться.
С недавнего времени подключить водителей в малонаселенных районах можно к Яндекс.Такси, Убер не предоставляет подобных услуг. Ознакомиться городами, в которых еще можно воспользоваться последним шансом, можно на официальном сайте компании.
Стоит ли начинать партнерство и на какой доход можно рассчитывать
Рассчитывая потенциально возможный доход от партнерства, необходимо помнить, что компания забирает себе 20% от полученного ежемесячного дохода, причем отчисления осуществляются исключительно по НДС, остальные сборы уплачиваются партнером. Именно по причине наличия подобного статуса ответственность по перечислению средств ложится на вас.
Учитывая тот факт, что вам оплата начисляется в полном объеме, за исключением указанных 20%, процент налоговых сборов нужно рассчитывать из суммарного размера прибыли (учитываются 20%).
Иными словами, деньги, которые забирает себе Убер, учитываются при определении размера налоговых взносов.
Несмотря на это, анализируя отзывы партнеров, можно сделать вывод, что зарабатывать можно, но для этого нужно иметь хорошо наработанную клиентскую базу – без постоянных клиентов не будет стабильного дохода.
SMART | Работа в такси Убер Главная, Как стать водителем Убер Главная, Официальное подключение к Uber Главная, Подключение к Убер Главная
НЕМНОГО ОБ UBER
UBER-SMART является официальным представителем UBER-такси в России.
Водители на личных иномарках могут подключиться к сервису для того, чтобы принимать заказы и неплохо зарабатывать на этом. Доход варьируется в зависимости от того, сколько
времени уделять работе в сервисе.
В среднем водитель UBER-SMART зарабатывает от 40 до 100 тысяч в месяц.
Для того чтобы стать водителем UBER-SMART, необходимо пройти регистрацию в системе. Если у Вас возникли какие-либо вопросы относительно работы в UBER оставьте заявку и наш менеджер свяжется с Вами.
Мы всегда окажем Вам поддержку и консультации по любым вопросам связанных с работой в UBER.
Работая с компанией, вы получаете не только комфортные условия, свободный график работы и своевременные выплаты, но и большое количество заказов, а UBER, в свою очередь, награждает активных водителей, которые совершают большое количество поездок в неделю.
Приятным плюсом является наличие так называемых бонусов за поездку – при повышенном количестве запросов на поездки в определенных районах города UBER выплачивает дополнительное денежное вознаграждение за каждую поездку в этих областях. В мобильном приложении такие области выделяются оранжевым или красным цветом – их несложно заметить.
Для оформления и принятия на работу не нужно платить никаких денег, от вас требуется только предоставить документы и вы можете приступать к поездкам!
Оформление происходит очень быстро, в течении одного-двух дней после подачи документов вы становитесь официальным партнером UBER со всеми
преимуществами!
Клиенты нашего приложения – это всегда вежливые и аккуратные люди. Добиться такого контингента позволяет специальная система рейтинга, введенная в UBER.
Вы всегда можете поставить пассажиру отрицательную оценку, если он был груб с вами или нарушил другие морально-этические нормы приличия.
Таким образом, если такое повторяется часто, у него больше не будет возможности заказать UBER-такси.
Это является гарантией спокойной работы и дружественной атмосферы в компании UBER, что высоко ценят все наши водители.
Помимо этого, наша компания занимается оформлением лицензий на такси, так что вам не придется заниматься этим самому. Всего через 35-40 дней вы станете
обладателем лицензии сроком на 5 лет.
Также, наши водители получают бесплатную юридическую консультацию и, при необходимости, помощь в заполнении и сдаче декларации о доходах в ФНС.
Но и это еще не все: благодаря максимальному покрытию сервиса, UBER-SMART предлагает своим водителям скидки на автомойках, магазинах автозапчастей, автосервисах,
супермаркетах, кафе, автозаправках и Cash Back до 10% в мес.
Подробнее об этих и других услугах вы узнаете от вашего персонального менеджера.
Как новое приложение для водителей Uber преодолевает сетевое отставание
Эта статья — третья в серии статей о том, как команда мобильных инженеров Uber разработала новейшую версию нашего приложения для водителей под кодовым названием Carbon, которое является основным компонентом нашего бизнеса по организации поездок. Среди других новых функций, приложение позволяет нашему населению, насчитывающему более трех миллионов водителей-партнеров, находить тарифы, прокладывать маршруты и отслеживать свои доходы. Мы начали разрабатывать новое приложение с учетом отзывов наших партнеров-водителей в 2017 году и начали выпускать его в производство в сентябре 2018 года.
Конкуренция между городской архитектурой и технологиями беспроводной передачи данных означает отсутствие покрытия — темные пятна в городах, где наши телефоны не работают. Поездка по городским ландшафтам означает обнаружение большего количества этих темных пятен, что приводит к частым изменениям качества сети и уровней загруженности. Эти пробелы в освещении особенно сильно влияют на партнеров-водителей Uber, когда они пытаются подобрать или высадить пассажиров.
Болевые точки здесь лучше всего можно продемонстрировать на примере.Предположим, водитель заканчивает поездку в переполненном аэропорту Бангалора. Водитель хочет заплатить наличными, а водителю необходимо завершить поездку в приложении, чтобы увидеть окончательный тариф. Подъезжая к обочине в аэропорту, телефон водителя не может подключиться к Интернету. Пассажира спешат на рейс, но отсутствие связи означает, что водитель не может завершить поездку в приложении и узнать окончательную стоимость. Водитель может проехать дальше по терминалу, что займет дополнительное время, потенциально может продлить поездку и вызвать разочарование как у водителя, так и у водителя.
Чтобы справиться с перебоями в покрытии сети и предотвратить возникновение подобных сценариев, мы разработали оптимистичный режим. Эта новая функция для нашего приложения для водителя позволяет приложению работать в автономном режиме, так что водитель может завершить поездку даже без подключения и получить последнюю оценку цены, полученную с сервера. Оптимистичный режим позволяет приложению работать независимо от состояния сети, обеспечивая больше положительных впечатлений от поездки как для водителя, так и для водителя.
Компоненты оптимистического режима
Мы поддерживали некоторые возможности автономного режима в предыдущем приложении драйвера, собирая неудавшиеся запросы и отправляя их на сервер для консолидации после восстановления подключения.Хотя эта функция помогла предотвратить отображение некоторых ошибок, она не могла разумно обновлять состояние приложения, накладывать несколько действий друг на друга и сохранять состояние между сеансами. Для решения этих проблем мы разработали описанные ниже компоненты для нашего нового приложения-драйвера.
Оптимистичные запросы
Любой компонент приложения драйвера, способный работать оптимистично, начинает поток, отправляя оптимистичный запрос. Оптимистичный запрос может сериализоваться и десериализоваться на диск, что очень похоже на обычный сетевой запрос, и каждый оптимистичный запрос сочетается с оптимистическим преобразованием.
Оптимистические преобразования
Главный компонент, который позволяет работать Оптимистическому режиму, называется преобразованием, другими словами, операции, которые преобразуют текущее состояние объекта в оптимистическое состояние , то есть ожидаемое состояние, которое будет возвращено сетью. Преобразования также можно складывать, применяя их изменения в порядке, в котором объект проходит через каждое преобразование. Чтобы понять преобразования на простом примере, давайте представим класс Counter, у которого есть свойство count.Затем мы можем реализовать преобразование, которое увеличивает свойство count объекта Counter.
Рисунок 1: В этом простом примере преобразование приращения увеличивает свойство count на единицу по мере прохождения объекта Counter.Преобразования могут быть настолько простыми или сложными, насколько это необходимо для наших оптимистичных операций. С каждым оптимистичным запросом связано преобразование. Преобразование выводит оптимистическое состояние , которое соответствует окончательному ответу на оптимистический запрос.Таким образом, пользователь не заметит никаких изменений в приложении, когда ответ вернется из сети, что обеспечит плавный переход.
Когда оптимистичный запрос отправляется клиенту, преобразование, связанное с запросом, применяется немедленно, чтобы перевести приложение в оптимистическое состояние, создавая впечатление, что запрос выполнен. Оптимистичное состояние, выводимое преобразованием, будет сохраняться до тех пор, пока не будет получен ответ от сервера с фактическим состоянием, приложением синхронизации и сервером.
Рисунок 2a: Обычный запрос счетчика не может быть загружен на сервер. Рисунок 2b: Преобразование используется в оптимистическом режиме для немедленного обновления состояния, поэтому рабочий процесс может быть завершен даже без сети, с предположением, что он будет синхронизироваться с сервером в будущем.Оптимистичный поток
Мы используем потоки RX в качестве шины сообщений для передачи данных через приложение. Каждая функция в приложении реагирует на изменения состояния, которые публикуются в потоке данных.Этот механизм позволяет нам использовать один и тот же поток, чтобы легко применять оптимистические преобразования к последнему состоянию объекта. Чтобы получить оптимистичное состояние, мы объединяем последнее известное состояние данных в потоке с доступными преобразованиями для данных. К данным применяется каждое преобразование, прежде чем они будут снова опубликованы в потоке и использованы функцией. Затем функция просто реагирует на оптимистичное состояние данных.
Зависимые запросы
Есть также запросы, зависящие от выполнения оптимистичных запросов.Например, не имеет смысла отправлять запрос на завершение поездки, о которой серверная часть даже не знает, что она началась. Такие зависимые запросы будут помещены в очередь на некоторое время, пока мы ждем завершения оптимистичных запросов. Если этот период слишком длинный, мы не выполняем запрос, уведомляя пользователя сообщением об ошибке сети.
Проблемы проектирования
При разработке этого дизайна мы столкнулись с несколькими проблемами. Мы хотели поддерживать стек оптимистичных запросов, позволяющий выполнять несколько шагов без подключения к сети.Из-за отсутствия синхронизации с сервером нам также необходимо было обрабатывать случаи, когда мы неправильно перешли в оптимистичное состояние и должны вернуться в предыдущее состояние. Для того, чтобы надежно показать драйверу наиболее точное состояние, потребовалось несколько итераций, и мы будем продолжать оптимизировать его по мере продвижения вперед.
Rebasing преобразовывает
При включенном оптимистическом режиме приложение может получать другие сетевые данные до того, как оптимистичный запрос сможет быть завершен.
Рисунок 3: В этом сценарии мы применяем наше оптимистическое преобразование поверх последнего состояния, которое мы получаем от сервера.Например, возьмем пример счетчика, который мы использовали выше. Приложение увеличивает счетчик с помощью преобразований, чтобы получить окончательное значение 2. Однако этот счетчик еще не синхронизирован с сервером. В течение этого периода времени другие полученные сетевые ответы могут иметь устаревшее значение 1. Оптимистический режим использует преобразования для обновления устаревшего состояния и поддержания оптимистического состояния.Это гарантирует, что приложение не будет переключаться между двумя состояниями, избегая путаницы.
Оставшееся приложение перезапускается
Все оптимистичные запросы вместе с последним известным оптимистическим состоянием сохраняются на диск, поэтому они сохраняются при перезапуске приложения. Рассмотрим сценарий, в котором несколько запросов поставлены в очередь для синхронизации с сервером, но пользователь закрывает приложение. При повторном запуске оптимистические запросы и последнее известное оптимистическое состояние загружаются из персистентности.Это позволяет пользователям оставаться в том же состоянии, когда они повторно запускают приложение. Оптимистичные запросы помещаются в очередь для синхронизации с сервером.
Ошибки наплавки
Особая проблема, с которой мы сталкиваемся при использовании этой новой функции, заключается в том, как она выявляет ошибки. Оптимистический режим был разработан для запросов, которые должны завершаться ошибкой только из-за сбоев серверной части и должны иметь предсказуемые ответы, которые можно было бы имитировать. Однако на практике ошибки возникнут. Поскольку мы оптимистично перемещаем пользователя по рабочим процессам приложения, ошибка может быть очень неприятной.Во-первых, состояние приложения возвращается к дооптимистическому состоянию, оставляя пользователя в неожиданном состоянии, в котором следующее действие может быть неочевидным. Во-вторых, для выявления ошибок нам нужно предыдущее состояние для получения сообщений об ошибках, даже если оно уже вышло за рамки. Чтобы справиться с этим, в приложении драйвера мы создаем глобальную структуру обработки ошибок, которую мы внутренне называем платформой предупреждений.
Всегда будет редкий случай, когда сервер возвращает ошибку на запрос.Для часто возникающих ошибок, например, когда поездки слишком короткие, мы реализовали проверки мобильных клиентов, чтобы лучше их обрабатывать.
Экономия времени
Для водителей мы заметили значительную экономию времени, затрачиваемого на начало и конец поездки, которые являются первыми двумя операциями, в которых используется Оптимистический режим. Мы часто видим, что поездка могла продолжаться за несколько минут до фактического завершения сетевой операции. По данным на ноябрь 2018 года, средняя экономия времени на оптимистичную операцию составляет около 13.5 секунд. Даже на этом раннем этапе существования нового приложения для водителя мы в сумме каждый день экономим непрерывное время водителя в течение года.
Будущее оптимистичного режима
Возможность продвигать состояние пользователя без подключения к сети оказалась полезной и для других потоков в приложениях Ubers. Запущенный как способ ускорить начало и конец поездки, он также был интегрирован в функции партнеров по доставке для Uber Eats, что позволяет быстрее возвращать деньги, когда в качестве оплаты используются наличные.Его также можно использовать для функций, которые должны быстро реагировать, но могут синхронизироваться с сервером позже, таких как оценка водителя или пассажира, пометка входящих сообщений как прочитанных или сбор подписей для доставок.
Указатель статей в серии приложений для водителей Uber
- Почему мы решили переписать приложение для водителей Uber
- Создание нового приложения для водителей Uber в RIB
- Как новое приложение для водителей Uber преодолевает сетевое отставание
- Масштабирование денежных выплат в Uber Eats
- Как отправить переписанное приложение без риска для всего бизнеса
- Создание масштабируемого и надежного интерфейса карты для драйверов
- Engineering Uber Beacon: подбор пассажиров и водителей в 24-битных цветах RGB
- Создание безопасной, масштабируемой и управляемой сервером платформы для предпочтений драйверов
- Встраивание счетчика доходов в режиме реального времени в новое приложение для водителей Uber
- Действие / услуга как зависимость: переосмысление архитектуры Android в приложении для нового драйвера Uber
Заинтересованы в разработке мобильных приложений, которыми ежедневно пользуются миллионы людей? Рассмотрите возможность присоединиться к нашей команде в качестве разработчика Android или iOS !
Инженеры Uber, разработавшие Оптимистический режим для нового приложения для водителя, слева направо: Крис МакГрат, Флинн Хоулинг, Крис Фрэнсис, Джатин Лодхия и Йохан Хартанто..Использование протокола QUIC для оптимизации производительности приложений Uber
Uber работает в глобальном масштабе в более чем 600 городах, а наши приложения полностью полагаются на беспроводную связь от более чем 4500 операторов мобильной связи. Чтобы обеспечить производительность в реальном времени, ожидаемую от пользователей Uber, нашим мобильным приложениям требуется низкая задержка и высоконадежное сетевое соединение. К сожалению, стек HTTP / 2 плохо работает в динамических беспроводных сетях с потерями, и мы узнали, что низкая производительность часто может быть напрямую связана с реализациями протокола управления передачей (TCP), скрытыми в ядрах ОС.
Для решения этих проблем мы приняли протокол QUIC, современный транспортный протокол с мультиплексированием потоков, реализованный через UDP, что позволяет нам лучше контролировать производительность транспортного протокола. QUIC в настоящее время стандартизируется Инженерной группой Интернета (IETF) как HTTP / 3.
После тщательного тестирования QUIC мы пришли к выводу, что интеграция QUIC в наши приложения снизит конечные задержки по сравнению с TCP. Мы стали свидетелями сокращения на 10–30 процентов задержек в конце для HTTPS-трафика в наших приложениях для райдеров и водителей.Помимо повышения производительности наших приложений в сетях с низким уровнем подключения, QUIC дает нам сквозной контроль над потоком пакетов в пользовательском пространстве.
В этой статье мы поделимся своим опытом оптимизации производительности TCP для приложений Uber за счет перехода на сетевой стек, поддерживающий протокол QUIC.
Современное состояние: TCP
В современном Интернете TCP является наиболее широко используемым транспортным протоколом для передачи трафика HTTPS. TCP обеспечивает надежный поток байтов, решая сложные проблемы, связанные с перегрузкой сети и потерями на канальном уровне.Широкое использование TCP для HTTPS-трафика в основном связано с его повсеместностью (почти каждая ОС включает TCP), доступностью в широком спектре инфраструктуры, такой как балансировщики нагрузки, HTTPS-прокси и CDN, а также его готовой функциональностью. для большинства платформ и сетей.
Большинство пользователей получают доступ к сервисам Uber на ходу, и конечные задержки наших приложений, работающих по TCP, далеки от удовлетворения требований природы нашего HTTPS-трафика в реальном времени. В частности, пользователи во всем мире отмечали высокие задержки в хвостовой части.На рисунке 1 ниже показаны конечные задержки вызовов нашей сети HTTPS в крупных городах:
Рис. 1. Задержки на конечной стороне варьируются в зависимости от крупных городов, где работает Uber.
Хотя задержки в сетях Индии и Бразилии были хуже, чем в США и Великобритании, конечные задержки значительно выше, чем средние задержки, даже в случае США и Великобритании.
Производительность TCP по беспроводной сети
TCP изначально был разработан для проводных сетей , которые имеют в основном предсказуемые каналы.Однако беспроводные сети имеют уникальные характеристики и проблемы. Во-первых, беспроводные сети подвержены потерям из-за помех и ослабления сигнала. Например, сети Wi-Fi чувствительны к помехам от микроволновых печей, Bluetooth и других типов радиоволн. На сотовые сети влияют потери сигнала (или потери на трассе) из-за отражения / поглощения объектами окружающей среды, такими как здания, и помехи от соседних базовых станций. Это приводит к гораздо более высоким (например,g: 4-10x) и переменное время приема-передачи (RTT) и потери пакетов по сравнению с проводными аналогами.
Для преодоления периодических колебаний пропускной способности и потерь в сотовых сетях обычно используются большие буферы для поглощения всплесков трафика. Большие буферы могут вызвать чрезмерную очередь, вызывая более длительные задержки. TCP часто интерпретирует такую организацию очереди как потерю из-за длительности тайм-аута, поэтому он имеет тенденцию повторно передавать и дополнительно заполнять буфер. Эта проблема, известная как bufferbloat, представляет собой серьезную проблему в современном Интернете.
Наконец, производительность сотовой сети существенно различается в зависимости от оператора связи, региона и времени. На рисунке 2 ниже показаны медианные задержки HTTPS-трафика в приложении Uber для пассажиров в шестиугольниках по 2 километра для двух основных операторов мобильной связи в Дели, Индия. Как видно на рисунке, производительность сети значительно различается в шестиугольниках одного и того же города. Кроме того, производительность двух ведущих перевозчиков существенно различается. Такие факторы, как шаблоны доступа пользователей на основе местоположения и времени, мобильность пользователей и развертывание сети оператора связи на основе плотности вышек и доли типов сетей (LTE, 3G и т. Д.)) вызывают колебания сетевой нагрузки в зависимости от местоположения и операторов связи.
Рисунок 2: График задержек в хвостовой части по двухкилометровым шестиугольникам в Дели, Индия, мы видим существенные различия между двумя разными операторами связи.
Производительность сотовой сети зависит не только от местоположения, но и от времени. Как показано на рисунке 3 ниже, средняя задержка в двухкилометровых шестиугольниках для одного и того же региона в Дели и одного и того же оператора связи колеблется по дням недели. Мы также наблюдали изменения в более мелких временных масштабах, например, в пределах дня и часа.
Приведенные выше характеристики приводят к неэффективности TCP в беспроводных сетях. Однако, прежде чем рассматривать альтернативы TCP, мы хотели получить ключевое представление о проблемном пространстве, оценив следующие соображения:
- Является ли TCP основным источником высоких конечных задержек в наших мобильных приложениях?
- Имеют ли существующие сети значительно большую дисперсию и потери RTT?
- Какое влияние на производительность TCP оказывают высокие RTT и потери?
Анализ производительности TCP
Чтобы лучше понять, как мы анализируем производительность TCP, давайте сначала кратко объясним, как TCP передает данные от отправителя к получателю.Первоначально отправитель устанавливает TCP-соединение, выполняя трехстороннее рукопожатие: отправитель передает пакет SYN, ожидает пакет SYN-ACK от получателя, затем отправляет пакет ACK. На установку TLS-соединения тратятся еще два-три цикла туда и обратно. Каждый пакет данных подтверждается получателем для обеспечения надежной доставки.
В случае потери пакета или ACK отправитель повторно передает пакет после истечения таймаута повторной передачи (RTO). RTO вычисляется динамически на основе различных факторов, таких как оценка RTT между отправителем и получателем.
Рисунок 4: Обмен пакетами TCP / TLS включает механизм повторной передачи потерянных пакетов.
Чтобы определить, как поток TCP работает в наших приложениях, мы собрали трассировки TCP-пакетов с помощью tcpdump для недельного рабочего трафика с пограничных серверов Uber для подключений, исходящих из Индии. Затем мы проанализировали TCP-соединения с помощью tcptrace. Кроме того, мы также создали приложение для Android, которое отправляет эмулируемый трафик на тестовый сервер, точно имитируя реальный трафик. Приложение собирает следы TCP в фоновом режиме и выгружает журналы на внутренний сервер.Телефоны Android с этим приложением были переданы нескольким сотрудникам в Индии, которые собирали логи в течение нескольких дней.
Результаты обоих экспериментов совпадают. Мы стали свидетелями высоких значений RTT, а конечные значения были почти в шесть раз больше медианного значения со средней дисперсией более одной секунды. Кроме того, большинство соединений было с потерями, из-за чего TCP повторно передавал 3,5 процента от общего числа пакетов. В перегруженных местах, например на вокзалах и в аэропортах, мы стали свидетелями того, как сеть отбрасывает до 7% пакетов.Эти результаты ставят под сомнение распространенное мнение о том, что усовершенствованные схемы ретрансляции сотовых сетей значительно сокращают потери на транспортном уровне. Ниже мы приводим наши результаты тестирования нашего макета приложения:
Сетевые показатели | Значения |
RTT в миллисекундах [50%, 75%, 95%, 99%] | [350, 425, 725, 2300] |
Отклонение RTT в секундах | Среднее значение ~ 1.2 секунды |
Скорость потери пакетов в соединениях с потерями | В среднем ~ 3,5% (7% в зонах скопления) |
Почти в половине этих подключений произошла потеря как минимум одного пакета, при этом значительное количество подключений потеряли пакеты SYN и SYN-ACK. Поскольку TCP использует очень консервативные значения RTO для повторной передачи пакетов SYN и SYN-ACK по сравнению с пакетами данных, большинство реализаций TCP используют начальное RTO в одну секунду для пакетов SYN, при этом RTO экспоненциально увеличивается для последующих потерь.Начальное время загрузки приложения может пострадать, поскольку TCP требует больше времени для настройки соединений.
В случае пакетов данных высокие RTO эффективно снижают нагрузку на сеть при наличии временных потерь в беспроводных сетях. Мы обнаружили, что среднее время на повторную передачу составляет около один, , секунды, , а конечное время составляет почти 30 секунд. Эти высокие задержки на уровне TCP приводили к тайм-ауту передачи HTTPS и повторной попытке запроса, что приводило к дальнейшим задержкам и неэффективности сети.
В то время как 75-й процентиль измеренных значений RTT в наших сетях составлял около 425 миллисекунд, 75-й процентиль задержки TCP составлял почти три секунды. Этот результат означает, что из-за потерь TCP будет совершать 7-10-кратные циклы приема-передачи, чтобы фактически успешно передать данные. Это может быть связано с неэффективным вычислением RTO, неспособностью TCP быстро реагировать на потерю нескольких последних пакетов в окне (потеря хвоста) и неэффективностью алгоритма управления перегрузкой, который не различает беспроводные потери и потери из-за сети. скопление.Ниже мы приводим результаты наших тестов на потерю пакетов TCP:
Статистика потери пакетов TCP | Значение |
Процент соединений с потерей как минимум 1 пакета | 45% |
Процент соединений с потерей, которые имеют потерю пакетов во время установления соединения | 30% |
Процент соединений с потерей, потерявших пакеты при обмене данными | 76% |
Распределение задержек при повторной передаче в секундах [50%, 75%, 95%, 99%] | [1, 2.8, 15, 28] |
Распределение количества повторных передач для данного пакета или сегмента TCP | [1,3,6,7] |
Принятие QUIC
Первоначально разработанный Google, QUIC представляет собой современный транспортный протокол с мультиплексированием потоков, реализованный через UDP. В настоящее время QUIC стандартизируется как часть продолжающихся усилий IETF. Как показано на рисунке 5 ниже, QUIC прозрачно находится под HTTP / 3 (HTTP / 2 поверх QUIC стандартизируется как HTTP / 3).Он заменяет части слоев HTTPS и TCP в стеке, используя UDP для кадрирования пакетов. QUIC поддерживает только безопасную передачу данных, поэтому уровень TLS полностью встроен в QUIC.
Рисунок 5: QUIC находится под HTTP / 3, поглощая уровень безопасности TLS, который раньше работал под HTTP / 2.
Ниже мы описываем особенности, которые заставили нас принять QUIC в дополнение к TCP для этого пограничного взаимодействия:
- Установление соединения 0-RTT: QUIC позволяет повторно использовать учетные данные безопасности, установленные в предыдущих соединениях, сокращая накладные расходы на подтверждение установления связи безопасного соединения посредством отправки данных в первом круговом обходе.В будущем TLS1.3 будет поддерживать 0-RTT, но трехстороннее квитирование TCP по-прежнему будет требоваться.
- Преодоление блокировки HoL: HTTP / 2 использует одно TCP-соединение с каждым источником для повышения производительности, но это может привести к блокировке заголовка (HoL). Например, объект B (например, запрос на отключение) может быть заблокирован за другим объектом A (например, запрос на регистрацию), который испытывает потерю. В этом случае доставка B откладывается до тех пор, пока A не сможет оправиться от потери. Однако QUIC облегчает мультиплексирование и доставляет запрос в приложение независимо от других запросов, которыми обмениваются.
- Контроль перегрузки: QUIC находится на уровне приложения, что упрощает обновление основного алгоритма транспортного протокола, который управляет скоростью отправки в зависимости от условий сети, таких как потеря пакетов и RTT. В большинстве развертываний TCP используется алгоритм CUBIC, который не оптимален для трафика, чувствительного к задержкам. Недавно разработанные алгоритмы, такие как BBR, более точно моделируют сеть и оптимизируют задержку. QUIC позволяет нам включать BBR и обновлять алгоритм по мере его развития.
- Восстановление потери: QUIC вызывает два зонда потери хвоста (TLP) перед запуском RTO, даже если потеря еще не завершена, что отличается от некоторых реализаций TCP. TLP по существу повторно передает последний пакет (или новый пакет, если он доступен), чтобы инициировать быстрое восстановление. Обработка хвостовых потерь особенно полезна для шаблонов сетевого трафика Uber, которые состоят из коротких, спорадических передач, чувствительных к задержкам.
- Оптимизированное ACKing: Поскольку каждый пакет несет уникальный порядковый номер, проблема отличия повторной передачи от задержанных пакетов устраняется.Пакеты ACK также содержат время для обработки пакета и генерации ACK на уровне клиента. Эти функции гарантируют, что QUIC более точно оценивает RTT. ACK QUIC поддерживают до 256 диапазонов NACK, помогая отправителю быть более устойчивым к переупорядочению пакетов и обеспечивая меньшее количество байтов в сети. Выборочный ACK (SACK) в TCP не во всех случаях решает эту проблему.
- Миграция соединения: Соединения QUIC идентифицируются 64-битным идентификатором соединения, поэтому, если клиент меняет IP-адреса, он может продолжать использовать старый идентификатор соединения с нового IP-адреса, не прерывая никаких запросов в полете.Это обычное явление в мобильных приложениях, когда пользователь переключается между Wi-Fi и сотовой связью.
Рассмотрены альтернативы QUIC
Прежде чем остановиться на QUIC, мы рассмотрели альтернативные подходы к повышению производительности TCP в наших приложениях.
Сначала мы попытались развернуть точки присутствия TCP (PoP) для завершения TCP-соединений ближе к пользователям. По сути, PoP завершает TCP-соединение с мобильным устройством ближе к сотовой сети и направляет трафик обратно в исходную инфраструктуру.Завершив TCP ближе, мы потенциально можем уменьшить RTT и гарантировать, что TCP будет более реагировать на динамическую беспроводную среду. Однако наши эксперименты доказали, что основная часть RTT и потерь приходится на сотовые сети, а использование PoP не дало значительного улучшения производительности.
Мы также рассмотрели настройку параметров TCP для повышения производительности приложений. Настройка стеков TCP на наших разнородных пограничных серверах была сложной задачей, поскольку TCP имеет разные реализации в разных версиях ОС.Было сложно применить и проверить различные изменения конфигурации в сети. Настройка конфигураций TCP на самих мобильных устройствах была невозможна из-за отсутствия прав. В более фундаментальном плане такие функции, как соединения 0-RTT и лучшая оценка RTT, являются центральными для разработки протокола, и невозможно получить такие преимущества, просто настроив только TCP.
Наконец, мы оценили несколько протоколов на основе UDP, в которых были устранены недостатки потоковой передачи видео, чтобы увидеть, могут ли они быть использованы для нашего случая использования.Однако им не хватает функций безопасности промышленного уровня, и они обычно предполагают наличие дополнительного TCP-соединения для метаданных и управляющей информации.
Насколько нам известно и основано на нашем исследовании, QUIC был одним из очень немногих протоколов, которые решали общую проблему для интернет-трафика, принимая во внимание как безопасность, так и производительность.
Интеграция QUIC на платформе Uber
Для успешной интеграции QUIC и повышения производительности приложений в сетях с низкой связью мы заменили устаревший сетевой стек Uber (HTTP / 2 через TLS / TCP) на протокол QUIC.Мы использовали сетевую библиотеку Cronet® из проектов Chromium, которые реализуют версию протокола QUIC (gQUIC), изначально разработанную Google. Реализация постоянно развивается, чтобы соответствовать последней спецификации IETF.
Мы впервые интегрировали Cronet в наши приложения для Android, чтобы обеспечить поддержку QUIC. Интеграция была произведена таким образом, чтобы гарантировать нулевую стоимость миграции для наших мобильных инженеров. Вместо полной замены устаревшего сетевого стека, который использовал библиотеку OkHttp, мы интегрировали библиотеку Cronet в инфраструктуру OkHttp API.Выполнив интеграцию таким образом, мы избежали изменений уровня API наших сетевых вызовов, которые зависят от Retrofit.
Кроме того, мы также избегали изменения основных сетевых функций, которые выполняют такие задачи, как переключение при отказе, перенаправление и сжатие. Мы использовали механизм перехватчика OkHttp для реализации промежуточного программного обеспечения для беспрепятственного перехвата HTTP-трафика из приложения и отправки трафика в библиотеку Cronet с использованием API Java. Мы по-прежнему используем библиотеку OkHttp в случаях, когда библиотека Cronet не загружается для определенных устройств Android.
Подобно нашему подходу к Android, мы интегрировали Cronet в приложения Uber для iOS, перехватив HTTP-трафик из сетевых API iOS с помощью NSURLProtocol. Эта абстракция, предоставляемая iOS Foundation, обрабатывает загрузку специфичных для протокола данных URL и гарантирует, что мы можем интегрировать Cronet в наши приложения iOS без значительных затрат на миграцию.
Завершение QUIC на балансировщиках нагрузки Google Cloud
На бэкэнде завершение QUIC обеспечивается инфраструктурой балансировки нагрузки Google Cloud, которая поддерживает QUIC с использованием заголовка alt-svc в ответах.По сути, в каждый HTTP-ответ балансировщик нагрузки добавляет заголовок alt-svc, который проверяет поддержку QUIC для этого домена. Когда клиент Cronet получает ответ HTTP с заголовком alt-svc, он использует QUIC для следующих HTTP-запросов, отправленных в этот домен. Как только балансировщик нагрузки завершает работу QUIC, наша инфраструктура прозрачно перенаправляет его через HTTP2 / TCP в наши внутренние центры обработки данных.
Результаты работы
Учитывая, что производительность является основной причиной нашего исследования лучшего транспортного протокола, мы сначала настроили испытательный стенд для эмуляции сети, чтобы изучить, как QUIC работает при различных сетевых профилях в лаборатории.Чтобы проверить прирост производительности QUIC в реальных сетях, мы затем провели дорожные эксперименты в Нью-Дели, используя эмулированный трафик, который точно воспроизводит очень частые сетевые вызовы HTTPS в нашем приложении для райдеров.
Первый эксперимент
Схема эксперимента, описанная ниже, состоит из следующих компонентов:
- Тестовые устройства Android с сетевым стеком OkHttp и Cronet, чтобы убедиться, что мы можем запускать трафик HTTPS через TCP и QUIC соответственно.
- Сервер эмуляции на основе Java, который отправляет заглушенные заголовки ответов HTTPS и полезные данные на клиентские устройства после получения запросов HTTPS.
- Прокси-серверы, размещенные в облачном регионе недалеко от Индии, для завершения соединений TCP и QUIC. Хотя мы использовали обратный прокси NGINX для завершения TCP, было сложно найти открытый обратный прокси для QUIC. Мы создали обратный прокси QUIC самостоятельно, используя основной стек QUIC от Chromium, и вернули его обратно в Chromium в качестве открытого исходного кода.
Рис. 6. Наша экспериментальная установка для тестирования производительности QUIC в сравнении с TCP состояла из устройств Android, на которых запущены стеки OkHttp и Cronet, облачных прокси для завершения соединений и сервера эмуляции.
Результаты этого эксперимента показали, что QUIC последовательно и очень значительно превосходил TCP с точки зрения задержки при загрузке ответов HTTPS на устройства. В частности, мы стали свидетелями 50-процентного сокращения задержек по всем направлениям, с 50-го до 99-го процентиля.
Эксперимент два
После того, как Google сделал QUIC доступным в Google Cloud Load Balancing, мы повторили ту же настройку эксперимента с одной модификацией: вместо использования NGINX мы использовали балансировщики нагрузки Google Cloud для завершения соединений TCP и QUIC от устройств и перенаправления трафика HTTPS на эмулируемый сервер.Эти балансировщики нагрузки распределены по всему миру, при этом ближайший сервер PoP выбирается на основе геолокации устройства.
Рисунок 8: Во второй экспериментальной установке мы хотели сравнить задержку TCP и QUIC, завершающуюся в Google Cloud, с использованием нашего собственного облачного прокси.В ходе второго эксперимента мы обнаружили несколько интересных выводов:
- Завершение PoP улучшило производительность TCP: Поскольку балансировщики нагрузки Google Cloud завершают TCP-соединение ближе к пользователям и хорошо настроены для обеспечения производительности, в результате более низкие значения RTT значительно улучшили производительность TCP.Хотя прирост QUIC был ниже, он все же превзошел TCP примерно на 10–30 процентов сокращения конечной задержки.
- Длинный хвост, на который влияют сотовых / беспроводных переходов : Несмотря на то, что наш внутренний прокси-сервер QUIC находился дальше от устройства (примерно на 50 миллисекунд больше задержки), чем балансировщики нагрузки Google Cloud, он давал аналогичный прирост производительности ( снижение на 15 процентов по сравнению с уменьшением на 20 процентов 99-го процентиля по сравнению с TCP).Эти результаты говорят о том, что сотовый переход последней мили является основным узким местом в сети.
Рис. 7. Результаты двух экспериментов, которые мы проводили при тестировании задержки, показали значительный прирост производительности для QUIC по сравнению с TCP.
Производственный трафик
Воодушевленные предыдущими тестами, мы продолжили добавление поддержки QUIC в наши приложения для Android и iOS. Мы провели A / B-тест между QUIC и TCP, чтобы количественно оценить влияние QUIC на все города, в которых работает Uber.В целом, мы увидели значительное сокращение задержек конечной части по различным параметрам, таким как регион, оператор связи и тип сети.
На рисунке 9 ниже показано процентное улучшение конечных задержек (95-й и 99-й процентили) в различных мегарегионах и типах сетей (включая LTE, 3G и 2G):
Рис. 8. В наших производственных тестах QUIC стабильно превосходил TCP с точки зрения задержки по регионам и типам сетей.
Движение вперед
Мы только начинаем: развертывание QUIC для мобильных приложений в нашем масштабе открыло путь для нескольких интересных способов повышения производительности приложений в сетях как с высокой, так и с низкой связью, в том числе:
Увеличить охват QUIC
На основе анализа фактической производительности протокола в реальном трафике мы заметили, что около 80 процентов сеансов успешно использовали QUIC для всех запросов, а около 15 процентов из них использовали сочетание TCP и QUIC.Наша текущая гипотеза об этом сочетании состоит в том, что библиотека кода Cronet переключается обратно на TCP по истечении времени ожидания, поскольку она не может отличить сбои UDP и фактическое плохое состояние сети. В настоящее время мы работаем над решением этой проблемы, продвигаясь вперед с использованием протокола QUIC.
Оптимизация QUIC
Трафик мобильных приложений Uber обычно чувствителен к задержкам, а не требует использования полосы пропускания. Кроме того, доступ к нашим приложениям в основном осуществляется через сотовые сети.Основываясь на наших экспериментах, конечные задержки все еще выше, несмотря на использование прокси, которые завершают TCP и QUIC рядом с пользователем. Наша команда активно работает над исследованием дальнейших улучшений для контроля перегрузки и улучшения алгоритмов восстановления после потерь для QUIC, чтобы оптимизировать задержку на основе нашего трафика и шаблонов доступа пользователей.
С помощью этих и других улучшений мы планируем еще больше повысить удобство работы пользователей на нашей платформе независимо от сети или региона, сделав удобный и беспроблемный транспорт более доступным на наших глобальных рынках.
Заинтересованы в строительных технологиях для развития сетей будущего? Рассмотрите возможность присоединения к нашей команде.
Благодарности
Особая благодарность Джеймсу Ю, Сивабалану Нараянан, Минь Фам, З. Морли Мао, Дилприт Сингх, Правин Неппалли Нага, Ганеш Сринивасан, Билл Фумерола , Али-Реза Адл-Табатабай и Джатин Лодатабай Лян Ма за их вклад в проект.
¹ Этот продукт включает программное обеспечение, разработанное OpenSSL Project для использования в OpenSSL Toolkit. ( http://www.openssl.org/ ). Этот продукт включает криптографическое программное обеспечение, написанное Эриком Янгом ( [email protected] ).
.Как Uber разработала новую функцию, чтобы отметить водителей
Создание безупречного и приятного опыта для наших пользователей является основой нашего инженерного видения Uber. В рамках этой миссии наша команда постоянно разрабатывает новые способы лучше узнавать и отмечать водителей. Одним из примеров является «Профили водителей», платформа, разработанная для улучшения взаимодействия с Uber за счет освещения историй и достижений водителей в приложении и создания значимых связей с водителями.
С технической точки зрения разработка и отправка профилей водителя казалась простой. Необходимые нам данные — например, имя, количество поездок и отправленная водителем информация — уже были сохранены в существующих микросервисах. Сложность заключалась в том, чтобы запрашивать каждый микросервис и агрегировать их результаты масштабируемым и надежным способом для использования в будущих итерациях не только функции, но и самого приложения для райдера. В этой статье мы даем обзор нового микросервиса, который выполняет каждую из этих целей, демонстрируя основные требования к дизайну и выбранные нами технологии для их выполнения.
Конструкция профиля водителя
Профили водителя разделены на независимые разделы, в каждом из которых отображается отдельная информация о драйвере. Для запуска мы остановились на пяти начальных разделах:
Основные характеристики
Core Stats предоставляет Uber информацию о стажировке водителя (например, количество совершенных поездок, их рейтинг и т. Д.).
Личная информация
Раздел «Персональная информация» позволяет водителям разрешить обмен информацией о себе со своими гонщиками, например о том, на каких языках они говорят, откуда они, рекомендации города (например,г., рестораны, кафе, культурные объекты), их самые памятные поездки и другие интересные факты.
Комплименты всаднику
В разделе «Комплименты гонщикам» представлены такие комплименты, как «Потрясающий ди-джей», «Отличное обслуживание» и «Спасенный день», полученные водителем от предыдущих гонщиков.
Благодарственные письма от райдера
С разрешения водителя мы делимся благодарственными письмами, которые предыдущие гонщики оставили им в нашем разделе «Благодарственные письма».
Достижения водителя
И последнее, но не менее важное: в разделе «Достижения водителя» рассказывается об особых достижениях, которые водитель получил за время работы на платформе Uber. Примеры включают большое количество 5-звездочных поездок или пребывание на платформе более одного года.
Микросервисная архитектура
Первым важным решением, которое мы приняли для нашей микросервисной архитектуры, было использование Go, потому что он прост в использовании и хорошо сочетается с существующим технологическим стеком Uber (большая часть которого поддерживает этот язык).
Нашим вторым ключевым выбором было определение интерфейса для взаимодействия с нашим микросервисом с использованием Thrift, которая также является популярной технологией в Uber.
Третьим важным дизайнерским решением было организовать наш код в виде стандартной компоновки MVCS. Входящие запросы обрабатываются обработчиками, которые направляют их контроллерам для обработки бизнес-логикой. Контроллеры, в свою очередь, используют шлюзы для доступа к любым внешним ресурсам (например, другим микросервисам), необходимым для выполнения их задач.
Каждый компонент нашего микросервиса был абстрагирован за интерфейсом. Сделав это, мы смогли легко создавать макеты с MockGen для каждого. Это упростило тестирование и позволило нам достичь 100-процентного покрытия тестовым кодом всей бизнес-логики. Всегда программируя интерфейс, мы также получили сильно развязанный код, что сделало замену компонентов нашего микросервиса на новые относительно безболезненными. (Необходимо использовать новое хранилище данных? Нет проблем — просто убедитесь, что ваш новый код соответствует существующему интерфейсу базы данных, а остальная часть микросервиса будет легко интегрирована.)
Наконец, микросервис в целом был развернут на контейнерах Docker в двух центрах обработки данных с использованием нашей внутренней службы развертывания uDeploy.
С свежим обзором нашего микросервиса мы теперь рассмотрим поток запросов данных профиля водителя.
Поток запросов
Поток запросов профиля драйвера обрабатывает входящие запросы в виде трех этапов: авторизации, вычисления раздела и агрегирования раздела.Авторизация
Когда в нашу микросервису поступает запрос, первое, что нужно сделать, — это определить, должны ли мы вообще отвечать.Профиль водителя содержит много информации, и мы хотим, чтобы он был доступен только тем гонщикам, которые на самом деле путешествуют с водителем или совершали поездку с водителем в прошлом. Запрос на доступ к профилю водителя содержит UUID для водителя, профиль которого мы хотим получить, а также аутентифицированный UUID, соответствующий водителю, запрашивающему профиль. Эти два UUID используются, чтобы определить, действительно ли сам запрос действителен (то есть: имеет ли проверенный участник доступ к профилю).
Расчет сечения
После того, как мы определили, что запрос на профиль действителен, теперь нам нужно решить, какую информацию мы действительно хотим получить. Ранее мы упоминали, что наш код должен быть максимально масштабируемым и ориентированным на будущее, что включает в себя поддержку новых типов профилей помимо драйверов. В нашем микросервисе запрос профиля фактически включает в себя тип профиля, который пользователь хотел бы получить. Поскольку тип профиля является частью запроса, добавление новых типов профилей в будущем не потребует каких-либо корректировок API.
В наших файлах конфигурации мы указываем список разделов, которые составляют каждый поддерживаемый тип профиля. Для профиля драйвера это означает, что наша конфигурация указывает, что каждый из пяти перечисленных выше разделов связан с ним. Когда получен запрос профиля драйвера, мы изучаем нашу конфигурацию и определяем, что нам нужно получить каждый из пяти указанных разделов. Добавление нового раздела для данного типа профиля в будущем — это просто вопрос добавления нового раздела для этого типа профиля в нашу конфигурацию и добавления соответствующего кода для выборки этого раздела.
Агрегирование секций
После определения, какие разделы нам нужно получить, мы инициируем параллельное разветвление для каждого из нижестоящих микросервисов, содержащего необходимую информацию для каждого раздела. На этом этапе мы используем шаблоны параллелизма Go, чтобы запустить горутину для выборки каждого раздела. Это позволяет нам быстрее получить весь профиль, поскольку нам не нужно ждать, пока будет получен каждый раздел, прежде чем извлекать следующий.
Кроме того, мы устанавливаем тайм-аут для каждой выборки раздела.Если загрузка одного раздела не может быть загружена в течение заданного времени, мы рассматриваем этот раздел как «сбой при загрузке» и переходим к следующему этапу. Это позволяет нам гарантировать, что весь профиль будет возвращен пользователю через определенное время. В случае неудачной выборки мы возвращаем успешно извлеченные разделы. Это очень важно, так как гарантирует, что одна плохая нисходящая зависимость не приведет к отключению всего нашего микросервиса. Нередко происходит сбой нижестоящих зависимостей; из-за этого принудительного тайм-аута наша служба может продолжать движение, возвращая все, что может, для каждой выборки профиля.
После того, как все разделы профиля выбраны (или нет), остается просто объединить результаты в один ответ и вернуть их пользователю. В качестве последнего штриха мы используем небольшую дополнительную бизнес-логику, чтобы убедиться, что разделы упорядочены правильно, прежде чем возвращать их.
Тестирование архитектуры
Перед развертыванием нашего нового микросервиса мы хотели убедиться, что профили драйверов могут обрабатывать большой объем запросов в секунду (QPS), с которыми он может столкнуться в производственной среде.Используя нашу платформу тестирования нагрузки и интеграции Hailstorm, мы выделили около 3000 запросов в секунду на шесть экземпляров Docker (по 500 запросов в секунду каждый), выделенных для нашего сервиса, и смогли справиться с нагрузкой плавно и с минимальным трением.
Со времени тех первых тестов Hailstorm мы значительно расширили масштаб. В настоящее время мы обслуживаем чуть более 100 тыс. Запросов в секунду, и во многом благодаря нашей перспективной архитектуре нам нужно было всего лишь добавить несколько новых машин для поддержки микросервиса.
Профили водителя рассказывают о достижениях водителей и укрепляют связи между водителями и гонщиками, делая поездку более приятной.Помимо профилей водителя
Дизайнерские и архитектурные решения, которые мы приняли при создании профилей драйверов, облегчили нашим пользователям веселую и увлекательную социальную платформу. Что касается технической стороны, мы стремимся и дальше улучшать впечатления от путешествий, создавая больше функций поверх микросервиса.
Отметьте водителей, просмотрев профили водителей во время следующей поездки!
Куртис Нусбаум (Kurtis Nusbaum) — инженер-программист в группе регистрации драйверов Uber, работающей в основном над серверными системами и Android.В свободное время он работает техническим директором в Dev / Mission и любит бегать на длинные дистанции.
.Новое приложение, созданное для драйверов и с ними
US | 10 апреля 2018 г. Автор: Дара Хосровшахи
Сегодня мы объявляем о полном изменении дизайна приложения Driver.
Драйверы — это сердце нашего сервиса. Но по пути мы упустили это из виду. Мы слишком много внимания уделяли росту и недостаточно — людям, которые сделали этот рост возможным. Мы называли водителей «партнерами», но не всегда так поступали. Нам нужно было добиться большего, и 180 дней перемен были первым шагом.
За шесть месяцев мы запустили около 40 новых функций, призванных улучшить впечатления от вождения. Но наша работа только начиналась. Хотя 180 Days были направлены на исправление ошибок прошлого, нам также нужно было думать о долгосрочной перспективе, и очевидным местом для начала было приложение Driver. Он находится в центре внимания водителя, но после редизайна два года назад он уже показал свой возраст.
Мы знали, что не можем использовать тот подход, который использовали в прошлом: переработать приложение в соответствии с тем, что, как мы думали, хотели водители, запустить его, а затем надеяться на лучшее.Вместо этого нам нужно было прислушаться к тому, что водители сказали нам, что им нужно, и вместе с ними разработать новое приложение.
После месяцев разговоров и интервью мы запустили бета-версию приложения с драйверами по всему миру. Мы также создали программу для сбора всех отзывов любым возможным способом: совместные поездки с членами нашей команды и встречи за обедом с другими водителями. Мы даже общались с водителями напрямую через текстовые сообщения.
Водители были щедры на свои отзывы.Их мнение сформировало приложение к лучшему. Они использовали функции так, как мы никогда не ожидали, и предложили идеи, как улучшить их опыт. Четыре месяца спустя, после более чем 100 000 поездок, тысяч разговоров и множества сообщений об ошибках (и исправленных!), Мы рады поделиться продуктом нашего партнерства: новым приложением, созданным для водителей, с водителями 一, разработанным с учетом их потребностей. в каждый момент их путешествия.
Давайте попробуем.
В верхней части экрана находится новый трекер доходов в реальном времени.Это позволяет водителям сразу узнать, сколько они заработали в последней поездке, и позволяет легко отслеживать прогресс в достижении своих целей.
Новая строка состояния предоставляет в реальном времени обновления рыночных условий вокруг них и возможностей для других поездок поблизости. Когда водитель использует возможность, приложение предоставляет дополнительную навигацию в рекомендованную область.
Функция уведомлений позволяет водителям видеть сообщения о предстоящих возможностях заработка, отзывы своих гонщиков и информацию об их учетной записи.
Профиль водителя дает водителям возможность продемонстрировать себя, а также позволяет водителям больше узнать о своем водителе и найти новые способы связи.
Я сам ездил с новым приложением, поэтому знаю, что впечатления могут быть немного пугающими, будь то ваша первая поездка или сотая. Мы решили упростить работу с помощью Driver App Basics — подробного руководства по началу работы с Uber, которое будет доступно водителям в ближайшие месяцы.
Это всего лишь несколько интересных моментов из нового приложения Driver, и путешествие только начинается. В дальнейшем мы будем работать над тем, чтобы вождение было немного проще и менее напряженным. Чтобы убедиться, что все наши драйверы имеют номер
.