Привет, меня зовут Всеволод, я разработчик в Yandex Infrastructure рейтинг в такси яндекс клиента команде, которая создаёт платформу для разработчиков Яндекса. Последние 12 лет я занимаюсь внутренним облаком и за это время писал самые разные его компоненты: от базовой инфраструктуры хостов и до Control Plane. Сегодня расскажу про то, как мы организуем для наших пользователей единое управление всей инфраструктурой и как добились на этом пути надёжности, скорости разработки, простоты поддержки и масштабируемости — хоть и нарушили при этом некоторые руководства и лучшие практики Kubernetes.
Исторически у нас в Яндексе много разных и достаточно независимых инфраструктурных систем: несколько облаков, системы управления квотами, сертификатами, мониторингами, базами данных и многим другим.
Как формируется рейтинг
Всё это делалось в разное время, разными людьми, с разными принципами и технологиями. Между этими системами есть разного рода зависимости. И поднятие нового сервиса в современном мире, — как ни странно, не самая тривиальная задача. Вам надо получить квоту, создать для тестинга и прода то, что в облаках сейчас называют security groups, выписать необходимые доступы к другим сетям, поднять базы и поды, потом заказать сертификаты и домены, поднять балансировщики, которые будут смотреть в эти поды, и так далее.Получается куча действий в таком ориентированном графе. Для этого у нас есть Kubernetes. Мы не используем его рейтинг в такси яндекс клиента классического всем знакомого управления контейнерами — для этого у нас есть своё большое облако, которое мы называем Yandex.
- Jul , Из последних оценок и складывается рейтингваш личный показатель качества в сервисе Яндекс Такси. Как мы рассчитываем рейтинг
- Из последних оценок и складывается рейтингваш личный показатель качества в сервисе Яндекс Такси. Как мы рассчитываем рейтинг
- Как увидеть свой рейтинг в приложении Яндекс-такси без регистрации на яндекс-почте?
- В данной статье мы рассказываем как узнать свой рейтинг в Яндекс Такси. Например, распределение заказов такси происходит автоматически с учетом рейтинга
Но мы используем его для описания инфраструктурных систем, включая и спецификации того самого облака. Этот подход часто называют configuration as data или infrastructure as data.
То есть пользователь заливает в наш Kubernetes конфиг, а операторы k8s уже разворачивают необходимые компоненты в других системах и следят, чтобы всё работало. Если говорить о масштабах, то наша система пока довольно молодая, но уже с неплохой рейтинг в такси яндекс клиента и ответственностью. Рейтинг в такси яндекс клиента на днях посмотрел статистику, нашёл пару круглых чисел.
Зачем нужен рейтинг пассажиров?
Если считать именно поднятые через нас контейнеры в системах деплоя, то под нашим управлением находится 1,5 млн ядер.Ещё есть куда расти, но мы стараемся. Как вы знаете, Kubernetes — это не только и не столько механизм выкатки подов, но ещё и база данных для схематизированных документов — объектов — на основе etcd. Плюс, это хорошая рейтинг в такси яндекс клиента, как с этими документами должны работать операторы. Посмотрим на CRD подробнее. В начале разработки у нас встал вопрос, как нам описывать схемы данных.
И тут самое время рассказать, что у нас довольно сложная инфраструктура.
Jul , Посмотреть рейтинг вы можете в своём профиле. Чтобы попасть в него, на главном экране и Яндекс Про нажмите на виджеткнопку с суммой в правом , Водители в конце пути могут поделиться впечатлениями от поездки и поставить оценкутак же, как её оценивают и пассажиры. Высшая оценка , которые произошли в течение первых секунд после назначения водителя; которые произошли в радиусе метров от клиента, если прошло более минут от времени
С нашими моделями всё намного сложнее. Так вот, если его полную схему сконвертировать для Kubernetes в JSON и компактифицировать, она будет занимать больше мегабайта. Аналогично и многие другие наши системы: везде очень широкие возможности конфигурации, это не три поля CronJobкоторые фигурируют во всех гайдах по написанию операторов.Мы посмотрели на эти схемы данных и на мировые практики. В качестве языка описания схем мы взяли protobuf. Если вспомнить уже упомянутую модель объекта DeployStage, можно представить себе, каких трудов стоило бы поддерживать актуальную схему в 1 Мб, пиши мы её. Каких трудов это стоило при нашем подходе, вы увидите чуть позже. Мы взялись за дело: в тот момент ожидаемо оказалось, что готовых плагинов трансляции protobuf в схемы k8s не существует, и пришлось написать его самостоятельно.
Сейчас это уже немного не так, поскольку не так давно Istio тоже перешли на protobuf.
Есть общие метаданные: информация о типе, информация о конкретном экземпляре — и какие-то специфичные рейтинг в такси яндекс клиента типа поля. На практике специфичные поля можно разделить на два подтипа.
Рейтинг пассажира Яндекс Такси
Бывают стандартные встроенные типы Kubernetes pod, deployment, service и т. А бывают пользовательские типы CRDдля которых уже придумали правила, и поэтому множество полей строго регламентировано и ограничено, и по сути сводится к двум полям: spec и status.И есть один существенный нюанс.
Из последних оценок и складывается рейтингваш личный показатель качества в сервисе Яндекс Такси. Как мы рассчитываем рейтинТипы объектов рейтинг в такси яндекс клиента Kubernetes версионируемы: предполагается, что на сервере можно зарегистрировать несколько версий типа объекта, каждый со своей схемой. Если вернуться к кусочку рейтинг в такси яндекс клиента модели, который я уже показывал, то тут видно версию v1, а таких версий может быть сколько угодно. При этом одна версия является основной в ней хранятся данныеа все остальные умеют конвертироваться в неё и из неё.
В теории это позволяет старому клиенту, который не умеет работать с новой версией, запрашивать и сохранять объекты в известной ему версии, а сервер должен на лету конвертировать данные рейтинг в такси яндекс клиента эту версию и обратно. Это решение контринтуитивное, но единственно возможное и правильное, на наш взгляд. Вспоминаем, что схема одной версии легко занимает один мегабайт, и умножаем на число версий. Если клиент пользуется старой версией спеки и попытается читать или писать рейтинг в такси яндекс клиента объекта, у которого уже есть новые поля, то это неизбежно приведёт к потере данных, а значит никакие функции конвертирования между версиями не помогут.
Потому что если нового поля в спеке нет, то и взять его неоткуда.
Что это значит на практике. Таким образом, та самая мегабайтная модель для описания DeployStage у нас выглядит практически так:. Помните, я говорил, что у модели должны быть два поля: спека и статус. Тут мы их можем брать из модели провайдера в своё удовольствие.
Как узнать
Благодаря нашему монорепозиторию мы всегда получаем актуальную версию моделей провайдера, а когда они обновляют свои модели, мы можем прогнать свои тесты и убедиться, что они действительно не сломают совместимость. У разработчиков Kubernetes довольно обострённое чувство прекрасного и стремление использовать поменьше рейтинг в такси яндекс клиента зависимостей.К сожалению, это осложняет жизнь, так как рук у них на всё не хватает и проблема решается срезанием углов.
Как рассчитывается рейтинг Яндекс Такси, где посмотреть и на что он влияет. Подробно о рейтинге пассажиров, водителей и таксопарков. Чтобы узнать свой рейтинг в Яндекс Такси, откройте приложение, нажмите на значок профиля в правом верхнем углу и выберите раздел "Рейтинг . Рейтинг пассажира в taksitema.ru – это система оценки поведения и надежности клиентов, которая помогает водителям принимать решение о том, стоит ли им брать .
На практике поддерживаются не все его возможности, например, как я уже говорил, запрещено переиспользование структур через ссылки. А OpenAPI 3. Одновременно с этим в клиентском коде существовал и OpenAPI 3.- Рейтинг клиента «taksitema.ru» позволяет водителю заранее знать, к кому он направляется на вызов, а это в свою очередь дает преимущества при фильтрации заказов.
- Jun , Однако рейтинг пассажира, в отличие от водительского, ни на что не влияет. Он не увеличивает стоимости поездки или времени ожидания автомобиля.
- Рейтинг помогает формировать культурное и безопасное отношение между всеми участниками поездки. Водители в конце пути могут поделиться впечатлениями от .
- Раньше в Яндекс такси был рейтинг только для водителей, но позже его ввели и для пассажиров.
Вдобавок он поддерживает в них специальные аннотации, которые говорят, как при наследовании надо мержить списки и объекты.
Таким образом, для объекта нам нужны две несовместимые версии схемы: одна простая для сервера и вторая более сложная для клиента. Вот, как пример, разница между серверной моделью для хранения и клиентской моделью для kustomize:. Он всегда знает свою актуальную модель и должен рейтинг в такси яндекс клиента выдать ошибку валидации пользователю, если тот опечатался.
Источник: Артем Устюжанин. Одной из самых больших загадок в такси остается рейтинг пассажира. С того момента, как он стал доступен для просмотра самим пассажирам, возникает множество вопросов — как его оспорить, на что он влияет. А самое главное — смогут ли вас заблокировать и что может получить водитель за скандального клиента. Спойлер: им тоже вручают промокоды. Мы поговорили с пассажирами и самими таксистами, а также с сервисом, чтобы узнать, почему ваш рейтинг может упасть ниже плинтуса.
Когда сажусь в машину, то стараюсь аккуратно закрывать дверь, пристегиваюсь, не донимаю водителей разговорами, жду машину в указанных точках или выхожу навстречу в более рейтинг в такси яндекс клиента место.
После того как мы ввели второй клиентский формат вывода схемы, мы поняли, что это даёт нам и другие возможности. Для этого мы раньше добавляли в файл отдельные поля с инструкциями, которые вырезали и использовали для препроцессинга текстового файла перед тем как попытаться распарсить его как объект Kubernetes.Это означало, что до определённого момента мы были вынуждены работать с объектом как со словарём неопределённого формата, а после препроцессинга информация об исходной структуре была уже утеряна. Добавление клиентского режима развязало нам рейтинг в такси яндекс клиента. Теперь мы можем разобрать и провалидировать файл сразу в момент чтения, а в Kubernetes заливать уже «серверную» версию объекта, например:. И оба они описываются одной схемой данных. Мы описываем параметры по умолчанию, которые применяются ко всем апстримам, и дальше просто в каждом апстриме мы можем переопределить эти параметры.
Что важно, это всё срендерится на клиенте, пользователь может посмотреть на конечный результат и уже срендеренную версию залить на сервер. Первый у себя внутри мы называем hard mode.
Уровень качества предоставляемой услуги могут посмотреть и пользователи, и клиенты. Причем последние отдают предпочтение профессионалам с максимально высокимиИ поддерживать максимальный набор возможностей этого провайдера. В качестве примера можно привести модель DeployStageкоторую я показывал раньше: она обладает всем спектром возможностей, предоставляемых Yandex. Вот эти TStageSpec и TStageStatus — это типы прямо из моделей нашего провайдера, мы их в нашем репозитории через импорт подключили.
То есть мы по умолчанию поддерживаем тут всё, что. Раз первый класс называется hard mode, то второй, легко догадаться, называется easy mode. Такие объекты как правило не взаимодействуют с конечной системой сами, а формируют Это даёт возможность делать easy mode просто: оператор easy mode избавлен от необходимости непосредственного рейтинг в такси яндекс клиента с внешним провайдером и всех сопутствующих этому сложностей.
Пример такого объекта — тип, который мы назвали Runtime. Он позволяет в упрощённом виде описать схему предыдущего объекта. Данная модель уже гораздо больше похожа на привычный всем ReplicaSet из классических типов Kubernetes, хотя и всё равно сложнее. Если у вас есть опыт работы с crossplane, то наш hard mode очень похож на crossplane providers рейтинг в такси яндекс клиента, а easy mode по смыслу немного похож на crossplane compositions. Для облегчения связи между easy mode и hard mode у нас есть клей под названием medium mode.
Но что делать, если пользователю не хватает ровно одной маленькой галочки. Переставать использовать простую схему и страдать со сложной. Поскольку в основе нашей системы лежит Kubernetes, то для всех доступен стандартный набор инструментов: kubectl, kustomize, плагины к IDE и т. Но kubectl — довольно абстрактный инструмент. Однако все знания о типах и их рейтинг в такси яндекс клиента он получает в виде того же OpenAPI, лежащего на сервере, и это значит, что ничего сложнее он не.
Поэтому у нас есть собственная утилита infractlкоторая выполняет роль толстого клиента. Здесь мы рейтинг в такси яндекс клиента пользуемся тем, что нам с одной стороны доступна кодогенерация из protobuf, а с другой — рядом со сгенерированными структурами мы можем положить вручную написанные методы, специфичные для типа. При этом благодаря нашей системе сборки мы можем не коммитить никакие сгенерённые части кода. Мы всегда гарантируем, что они соответствуют рейтинг в такси яндекс клиента правды.
В зависимости от того, с каким объектом мы работаем, наш клиент может проверять и автоматически выписывать токены для управления системами провайдеров, выводить расширенный статус, валидировать необходимые секреты и подставлять артефакты. В kubectl легко доступны только очень простые таблицы с колонками на основе JSONPath, чьи возможности в реализации Kubernetes тоже урезаны до предельного минимума.
Немного про подходы: Infrastructure as Data или Configuration as Data
Сервисом Яндекс. Такси внедрена такая функция, как «рейтинг рейтинг в такси яндекс клиента — есть ли в ней смысл? Да, безусловно, ведь узнав статус клиента, можно минимизировать рейтинг в такси яндекс клиента проблемных вызовов. Речь идет о тех заказчиках, которые мухлюют с оплатой, вызывают автомобиль, находясь в состоянии алкогольного опьянения, хамят водителям или создают другие проблемы во время поездки. Как показывает практика, негативный рейтинг пассажира пока не влияет на возможность вызова Яндекс.
Такси в Молдове или на стоимость заказа, но помогает в решении конфликтных ситуаций. Специалисты работают над совершенствованием этой функции, и в будущем сервис, исходя из данных показателей, сможет блокировать «сложным» клиентам доступ к безналичным расчетам.