Artellie.ru

Дизайн интерьеров
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Четыре лучшие модели смарт-часов в 2021 году

Четыре лучшие модели смарт-часов в 2021 году

ДенисДенис Марков | 27 Декабря, 2021 — 17:00

Носимые устройства становятся все более популярными. Параллельно с увеличением спроса растет и количество поддерживаемых функций, а у уже имеющихся увеличивается качество. За последние два года к возможности замера ЭКГ и распознаванию падения добавился замер уровня кислорода в крови, а в этом году на одних часах появился анализ состава тела и измерение процента жира в организме.

Выбрать умные часы уже не так просто. Они отличаются по дизайну, характеристикам и функциональности. Мы выбрали четыре лучших, которые можно найти в этом году. Выбирайте в зависимости от запросов к устройству.

Самые стильные — Apple Watch Series 7 (полный обзор)

В 2021 году компания провела редизайн самой популярной линейки умных часов в мире, добавив тончайшие рамки. Эффект от пользования новым девайсом тот же, что был при переходе на iPhone X в 2017 году или на MacBook Pro 14 или 16 в этом — если попользоваться ими и вернуться на старое поколение, рамки начнут раздражать.

Их отсутствие — это свобода и возможность использования передней панели по-максимуму, потому что полезная площадь увеличена. Теперь в зоне, которая раньше была мертвой, располагаются, например, элементы циферблата, да и в целом аксессуар смотрится более стильно и современно.

Помимо нового более эффектного корпуса, часы унаследовали все возможности анализа физической активности у предыдущих моделей: уровень кислорода в крови, ЭКГ, распознавание падения и т.д. В общем, бескомпромиссный вариант.

Самые функциональные — Samsung Galaxy Watch4

Часы, благодаря которым Samsung совершила скачок по продажам на рынке носимых устройств. Во-первых, Galaxy Watch4 теперь работают на Android, а не TizenOS, это делает их совместимыми с Google Pay. Новая операционная система позволила оплачивать покупки офлайн часами с любого Android-смартфона, а не только Samsung с одноименной Samsung Pay.

Но это не главное. Самое заметное нововведение — замер процента жира в организме. Чтобы проанализировать состав тела, нужно приложить два пальца к кнопкам и замереть в такой позе примерно на 15 секунд. За это время сенсор зафиксирует 2400 единиц данных и выдаст вам ваш показатель.

Самые живучие — Huawei Watch GT2 Pro (полный обзор)

Часы Huawei стабильно удивляют автономностью — компания стремится к тому, чтобы ее часы удивляли надежностью. Производитель заявляет 14 дней без подзарядки. По итогам нашего теста без использования GPS и в стандартном режиме GT2 Pro первый раз сообщили о низком уровне заряда спустя 16 дней. Для сравнения, часы от Samsung и Apple живут один день максимум.

Если носить часы 8-9 часов в день, то в таком случае время автономной работы составит заявленные 2 недели. Заряжается устройство от круглой «шайбы» с портом USB-C.

Другой приятный момент — эти смарт-часы стараются быть максимально независимыми от смартфона, и это похвально. У Huawei Watch GT2 Pro стоит собственный GPS для записи активностей, 2 ГБ памяти, в которые можно закачать музыку и прослушивать ее прямо с часов через подключенные Bluetooth-наушники. Добавлен динамик с микрофоном, который позволяет отвечать на звонки.

Самые удачные по цена/качество — Amazfit GTR 3 (полный обзор)

12145253868003.jpeg

Представьте, что вы хотите умные часы, которые будут оснащены качественным экраном, при этом окажутся эргономичными, прочными и функциональными с точки зрения анализа физической активности. Мы нашли их — это Amazfit GTR 3.

Часы стали совершеннее на фоне предыдущего поколения. За счет перехода на новую операционную систему Zepp OS часть функций стала работать быстрее — измерение пульса, кислорода в крови и других показателей физической активности осуществляются оперативнее. Теперь в одно касание можно измерить 4 показателя здоровья за 45 секунд: частоту сердцебиения, частоту дыхания, уровень стресса и кислорода в крови. Количество спортивных режимов увеличилось до 150, восемь из них запускаются автоматически.

Amazfit GTR 3 Pro оснащены AMOLED-экраном с диагональю 1,45 дюйма, высоким разрешением 454 х 454, плотность пикселей составляет 331 PPI, что позволяет отображать мельчайшие детали с высокой четкостью. Каталог приложения Zepp предлагает более 150 циферблатов в том числе динамические и новинка – с таймером обратного отсчета, что актуально перед НГ.

Гаджеты под елку. Топ-10 подарков на Новый год для всей семьи

техника, гаджеты, бытовая техника, подарки, новый год

Новый год не за горами, поэтому стоит подумать над тем, кому и какие подарки стоит купить. Фокус подскажет, чем удивить и обрадовать всех членов семьи в новогоднюю ночь.

Гаджетам всегда все рады, особенно если получают их в качестве презента. Если вы думаете над тем, что подарить на Новый год из техники, то в данном материале найдете несколько подсказок. Фокус подобрал для вас несколько интересных вариантов техно-новинок, которым будет рад абсолютно каждый домочадец, включая братьев наших меньших.

ФОКУС в Google Новостях.

Подпишись — и всегда будь в курсе событий.

Смартфон vivo V21

Такому подарку, как смартфон vivo V21, обрадуется каждый. С его помощью можно будет зафиксировать все самые важные и интересные моменты семейного праздника, отпуска, прогулки, ведь гаджет оснащен камерами, обеспечивающими высокое качество фото и видео. Так, селфи-камера имеет модуль оптической стабилизации, сенсор на 44 Мп, способный охватывать даже мелкие детали, автофокус, технологию двойной подсветки, позволяющую снимать в темноте.

Читайте так же:
Розетки рядом с батареями

смартфон, vivo V21, vivo, подарок, новый год, гаджет в подарок

Что касается основной камеры, то она способна конкурировать со специализированной фототехникой. А все благодаря качественному автофокусу, функции «Двойная экспозиция», которая ранее была доступна только профессиональным камерам, съемке в формате 4К, креативной функции Dual-View, сверхширокоугольному модулю и макрообъективу.

Во время зимних праздников вы наверняка будете много снимать. Смартфон vivo V21 имеет возможность расширения 8 Гб внутренней памяти на дополнительные 4 Гб. На производительности гаджета «перегруз» файлами никак не скажется — флеш-память стандарта UFS 2.2 обеспечит скорость работы телефона на должном уровне.

Характеристики vivo V21:

  • экран — 6,44 дюйма, AMOLED, 2404х1080 пикс.,
  • чип — MediaTek Dimensity 800U (2,4 ГГц + 2 ГГц),
  • камера — тройная основная: 64 Мп + 8 Мп + 2 Мп, фронтальная: 44 Мп с OIS,
  • оперативная память — 8 Гб (+4 Гб),
  • встроенная память — 128 Гб,
  • microSD — до 1 Тб,
  • поддержка 3G / LTE / GPS,
  • поддержка 2-х SIM-карт Nano-SIM,
  • операционная система — Android 11,
  • емкость аккумулятора — 4000 мА*ч с быстрой зарядкой 33 Вт.

Цена: 12 999 грн до 2.01.2021

Электрическая зубная щетка Oral-B iO

Думаете над полезным и технологичным подарком для близких? Обратите внимание на Oral-B iO – инновационную электрическую зубную щетку, которая обеспечивает чистку на высоком уровне. Это достигается благодаря нескольким факторам:

  • революционной магнитной технологии iO,
  • фирменной круглой насадке,
  • микровибрациям щетинок.

зубная щетка, Oral-B iO, гаджет, подарок, гаджет в подарок, электрическая зубная щетка

Oral-B iO, по сравнению с обычной зубной щеткой, удаляет до 100% больше зубного налета, делает зубы белее с первого дня использования за счет удаления поверхностных пятен и делает десна на 100% здоровее всего за неделю. А все благодаря новой системе линейного магнитного привода iO, которая направляет бережные микровибрации на каждую щетинку для эффективной чистки на профессиональном уровне. Круглая насадка, которая была разработана совместно со стоматологами, позволяет идеально охватить каждый зуб и легко очищает даже те места, до которых трудно добраться щетке продольной формы — звуковой или мануальной.

Oral-B App, Oral-B, щетка Oral-B, новогодний подарок, электрическая зубная щетка

Гаджет оснащен системой искусственного интеллекта, которая умеет определять, какие участки нужно чистить тщательней. Чтобы воспользоваться советами ИИ, стоит установить приложение Oral-B App с функцией 3D-отслеживания. Программа проанализирует полость рта и выдаст соответствующие рекомендации для улучшения качества чистки.

OLED-дисплей с минималистической анимацией превратит повседневную рутину в новый интересный опыт. Дисплей отображает режимы чистки, уровень заряда аккумулятора и напоминает о необходимости замены насадки.

Гаджет располагает «умным» датчиком давления, отслеживающим движения пользователя и оповещающим его о степени нажатия при чистке в режиме реального времени. Если пользователь слишком усердствует, то индикатор уведомит об этом красным сигналом. Если же давление в норме — индикатор будет светиться зеленым.

Магнитное зарядное устройство обеспечивает быструю зарядку — до 3 часов. Одного полного заряда хватит до 14 дней использования.

Характеристики Oral-B iO:

  • технология: магнитная
  • встроенный таймер: есть
  • датчик давления: есть
  • дисплей: OLED
  • количество режимов: от 5 до 9, в зависимости от серии
  • питание: аккумулятор
  • время зарядки: до 3 часов
  • насадки в комплекте: 1

Цена модели: от 4999 грн.

Игровая приставка Sony PlayStation 5

Игровую приставку наверняка мечтают получить в подарок на Новый год не только дети, но и взрослые. Погоняться на автомобилях, поучаствовать в квестах, и, конечно, уничтожить пару сотен зомби — кто откажется от такого удовольствия? Поэтому под елку можно положить приставку от Sony, оснащенную 8-ядерным чипом AMD Zen 2, обеспечивающим производительность высокого уровня. С этим процессором изображение 8K тормозить не будет. За объемный звук отвечает процессор Tempest 3D AudioTech.

Sony PlayStation 5, Sony, PlayStation, геймпад, контроллер, презент

Гаджет обладает скоростным твердотельным SSD-накопителем на 825 Гб, который ускоряет загрузку любой игры. По крайней мере, так утверждает производитель. Приставка продается в двух вариантах: с дисководом и без него, что влияет на стоимость устройства. В комплект поставки входит геймпад Sony DualSence.

Характеристики Sony PlayStation 5:

  • контроллер: Sony DualSence,
  • объем памяти: 825 Гб,
  • процессор: AMD Ryzen Zen 2, 8 ядер, 16 потоков, 3,5 ГГц / RDNA 2, 2,23 ГГц,
  • оперативная память: 16 Гб,
  • видеовыход: HDMI 2.1,
  • максимальное разрешение: 8K

Цена: от 17 000 до 30 400 грн

Медиаплеер NVIDIA Shield TV Pro

Не знаете, что заказать из техники на Новый год в качестве подарка? Рекомендуем медиаплеер NVIDIA Shield TV Pro, который поддерживает все основные сервисы, обеспечивающие семейный досуг:

  • Google Assistant,
  • NVIDIA Games,
  • Netflix,
  • YouTube,
  • Amazon Prime/Музыка,
  • Vudu,
  • Google Play/Музыка/Игры.

Максимальное поддерживаемое разрешение изображения — популярный формат 4К. Также к устройству вы можете подключить периферию, чтобы удобнее было подбирать необходимый контент для просмотра в зимние праздники. К вашим услугам также будут IPTV и OTT, проигрывание Blu-Ray дисков.

NVIDIA, медиаплеер, пульт ДУ, под елку

Медиаплеер работает на базе ОС Android 9.0 в паре с чипом NVIDIA Tegra X1. При этом объем «оперативки» составляет 3 Гб, а флеш-памяти — 16 Гб. В комплект поставки входит пульт ДУ, оснащенный микрофоном, благодаря чему возможно голосовое управление. Отметим, что гаджет не займет много места. Габариты его корпуса: 98х159х25,93 мм.

Характеристики медиаплеера NVIDIA Shield TV Pro:

  • чип: NVIDIA Tegra X1,
  • оперативная память: 3 Гб,
  • Flash-память: 16 Гб,
  • операционная система: Android 9.0,
  • поддержка видео: 4К (HDR Dolby Vision HDR и HDR10),
  • Wi-Fi: 802.11ac Mimo 2×2 (2,4/5 ГГц),
  • Fast Ethernet 100 Мбит/с,
  • HDMI 2.0.
Читайте так же:
Электрическая розетка с разъемом usb

Цена: от 6 349 до 6 999 грн

Дрон Makeblock mBot Airblock

Коптер-конструктор скрасит зимние каникулы детей. Эта игрушка может не только летать, разворачиваться на месте, разгоняться и зависать в воздухе, но также дает возможность изменить ее форм-фактор (на видео показано, как это можно сделать). Гексакоптер питается от батареи LiPo 7 емкостью 700м-Ач. Устройству хватает энергии для того, чтобы разгоняться до 1,5 м/с, но стоит помнить, что максимального заряда при таких скоростях хватит только на 6 мин. полета.

На борту у Makeblock mBot Airblock имеется барометр (определяет высоту), ультразвуковой сенсор, измеряющий расстояние, гироскоп с шестью осями и Bluetooth для возможности законнектить игрушку со смартфоном посредством специального приложения. Управление дроном осуществляется также через смартфон. В комплект поставки входит защита лопастей.

Характеристики Makeblock mBot Airblock:

  • максимальная скорость: 1,5 м/с,
  • максимальное время полета: 6 мин.,
  • поддержка карт памяти: нет,
  • запись видео: нет,
  • подвес для камеры: нет,
  • управление: Bluetooth + приложение для смартфонов,
  • максимальный радиус действия дистанционного управления: 8 м,
  • аккумулятор: LiPo 7, 4В, 700мАч.

Цена: до 6 000 грн

Электрокамин Dimplex Symphony 26

Что еще можно подарить на новый год из техники? Например, электрокамин. Долгие зимние вечера станут теплее и уютнее, если в вашем доме появится очаг — Dimplex Symphony 26. Этот электрокамин способен согреть помещение, не шумит и не занимает много места. Поэтому его можно поместить даже в гостиную квартиры.

камин, интерьер, электрокамин, новый год, электрокамин, гаджет в подарок

И огонь, и дрова — это анимация, но выполнена она настолько реалистично, что ее сложно отличить от настоящего пламени и головешек. «Умная» система управления позволит вам уменьшать яркость пламени и интенсивность горения — это создаст интимную атмосферу, а повеселиться вместе с детьми перед «костром», можно прибавив яркости. Что касается обогрева, то вы сможете выбрать между двумя доступными режимами. Кстати, гаджет оснащен термостатом и тепловентилятором. Переключать камин или вовсе выключить его можно при помощи пульта ДУ.

Характеристики электрокамина Dimplex Symphony 26:

  • тип: встраиваемый,
  • обогрев: есть, 2 режима,
  • технология имитации огня: Optiflame Elite™,
  • габариты: ширина 69,5 см, высота 59,7 см,
  • цвет корпуса: черный,
  • мощность: 2000 Вт,
  • таймер отключения: нет,
  • пульт ДУ: есть.

Цена: от 12 550 до 13 720 грн

Телевизор Samsung QE50Q67T

Купить на Новый год в подарок ТВ-панель Samsung QE50Q67T с QLED-экраном с диагональю 50 дюймов — это хорошая идея. Телевизор обладает хорошей цветопередачей, яркой и насыщенной картинкой, где видны все детали (ха это отвечает HDR). Плюсом модели является то, что экран не слепнет на солнце. Стандартное разрешение — 4К. Это позволит вам играть в видеоигры без потери качества. Технология Mega Contrast, как уже понятно из ее названия, обеспечивает глубокий черный, что, в свою очередь делает изображение контрастным и красочным.

телевизор, Samsung QE50Q67T, Smart TV, зимние праздники, телевизор в подарок

Smart TV панель от Samsung управляется ОС Tizen. Телевизор можно подключить к Интернету, а также он располагает аналоговым и цифровым тюнерами, кроме того, слот CI предоставит доступ к закодированным каналам. Из дополнительных функций выделим Time Shift, PIP, таймер режима сна. Кроме того, устройство имеет разъемы под HDMI, USB, Ethernet, поддерживает протоколы связи Wi-Fi, Bluetooth, имеет адаптер с поддержкой Miracast, WiDi, AirPlay. Звук тоже на уровне, ведь за него отвечает технология Dolby Digital Plus и два динамика по 10 Вт каждый.

Характеристики Samsung QE50Q67T:

  • экран: QLED,
  • диагональ экрана: 50 дюймов,
  • разрешение: 3840×2160 пикс,
  • тюнеры: DVB-T2, DVB-S2, DVB-C, PAL, SECAM, NTSC,
  • операционная система: Tizen,
  • индекс динамических сцен: PQI 3100,
  • разъемы: USB 2.0 х1, HDMI 2.0 x3,
  • Smart TV: Samsung Smart TV,
  • поддержка 3D: нет,
  • камера: нет,
  • Wi-Fi IEEE 802.11b/g/n/ас,
  • Ethernet 100 мб/с,
  • DLNA: есть,
  • звук: два динамика по 10 Вт, система Dolby Digital Plus.

Цена: от 17 980 до 22 911 грн.

Электрочайник Delonghi KBOV 2001.BG

Бытовая техника — тоже отличный подарок на Новый год. Вы можете обновить свою кухонную технику, начав со столь симпатичного приобретения, как электрочайник Delonghi KBOV 2001.BG. Его классический дизайн украсит и освежит интерьер вашей кухни, да и домочадцы наверняка оценят такой презент, ведь с его помощью можно заваривать ароматные чай, кофе, делать мульмивитаминные горячие напитки. Корпус гаджета — металлический, поэтому он долго сохраняет тепло. Модель оснащена съемным фильтром, собирающим накипь. Время от времени его нужно будет очищать самостоятельно.

Крышка у чайника тоже съемная. Это позволит хорошенько его вымыть. Имеется и специальное отделение, в котором можно спрятать провод, чтобы он не портил интерьер.

Характеристики электрочайника Delonghi KBOV 2001.BG:

  • мощность: 2000 Вт,
  • объем: 1,7 л,
  • нагревательный элемент: дисковый,
  • индикатор уровня воды: есть,
  • поворот на подставке: на 360 градусов,
  • защита от перегрева: есть,
  • термостат: нет,
  • поддерживание заданной температуры: нет.

Цена: от 1 858 до 2 743 грн

Летающий будильник Alarm Fly

Летающий будильник, пожалуй, самый необычный новогодний подарок из нашей подборки. Он разбудит всю семью, взлетая в воздух и посылая звуковой сигнал. Не встать с кровати невозможно, ведь для того чтобы отключить устройство, нужно будет найти его летающую часть. Так что презент оценят дети и домашние животные — для них это будет то еще развлечение.

Читайте так же:
Розетка подключить провода от другой розетки

Гаджет состоит из двух частей: базы и «дрона». В назначенное время часы подают звуковой сигнал, а пропеллер начинает раскручиваться и через 15 с он взлетает. Отключить будильник можно, установив пропеллер на место. Кроме основных функций, также имеется подсветка.

Как работает цикл заказа такси в Яндекс Go. История вопроса

Меня зовут Илья, я отвечаю за инфраструктуру пользовательских продуктов в Яндекс Go. Мы строим цикл заказа такси — процессы, происходящие под капотом после того, как пользователь нажимает «Заказать». Поиск машины, назначение водителя, изменение адреса, оплата поездки — всё это части цикла. Ещё мы делаем инфраструктуру создания циклов, которая используется в Еде, Лавке, Доставке и других направлениях внутри Яндекса.

Но обо всём по порядку. Давайте расскажу историю того, как мы развивали механизм обработки заказа, адаптировали его под нужды пользователей и старались исключить ошибки, а главное, почему мы используем такую архитектуру сейчас. Если у вас на бэкенде тоже выполняются последовательности зависящих друг от друга действий, и не оставляет желание оптимизировать логику — то тем более добро пожаловать под кат.

Как всё начиналось

В 2011 году мы запустили сервис заказа такси. В первой реализации в бэкенде был endpoint /create-order, внутри которого мы создавали заказ, искали ближайшую машину и отправляли заказ водителю (кстати, если вы не знали о том, как устроен поиск водителя, то обязательно почитайте).

Получается, в момент поиска бэкенд должен сделать несколько действий подряд, каждое из которых может сломаться с небольшой вероятностью. В этом случае нужно, чтобы кто-то повторил действия, продолжив с нужного места. Проще всего попросить это делать пользователя. Но у такого решения есть проблемы: например, пользователь может не отправить запрос повторно, поскольку у него пропал интернет, разрядился телефон или потому что человек просто закрыл приложение. Тогда (в случае ошибки) бэкенд выполнит только часть действий. Скажем, назначит на заказ водителя, но не сообщит об этом. Мы не хотим такого допускать — это может привести к тому, что пассажир и водитель не смогут встретиться и начать поездку. Для решения проблемы мы вынесли последовательность действий, которую нужно совершить для заказа, в отдельную асинхронную задачу на бэкенде — она перезапускается сама в случае ошибки. Теперь клиент получает ответ о том, что заказ принят к обработке, а сами действия по назначению водителя выполняются асинхронно. Даже если пользователь закроет приложение, мы будем уверены, что заказ пройдёт все нужные стадии обработки.

Саму последовательность действий, которую нужно выполнять асинхронно, мы назвали процедурой обработки заказа или процессингом.

Как у нас появилась своя очередь задач

Чтобы заводить асинхронные задачи, поначалу взяли самое простое решение — запускать на серверах крон-таски, выполняющиеся раз в минуту. Внутри крона мы сканировали базу данных на наличие новых заказов и запускали их в обработку. К сожалению, и тут не всё было гладко. Во-первых, заказы, добавленные сразу после запуска крона, могли пролежать без дела целую минуту, а мы не хотим заставлять пользователя ждать. Во-вторых, все решения, которые мы разрабатываем в Яндексе, должны уметь переживать отказы единичных серверов. (Даже более того: все наши сервисы сейчас представлены в двух-трёх зонах доступности и умеют переживать отключение как минимум одной из них.) Решение на кронах плохо горизонтально масштабируется — нужно, чтобы один заказ не обрабатывался одновременно на нескольких серверах. Значит, нужно придумывать распределенные блокировки. Архитектура такого решения становится избыточной, её сложно понимать и поддерживать.

Поэтому следующим нашим шагом стал переход цикла заказа на Сelery. Это широко используемый проект, с помощью которого можно организовать фоновую обработку задач. Celery написана на Python, поддерживает несколько брокеров сообщений и баз данных для хранения результатов задач. В нашей конфигурации мы использовали MongoDB в качестве брокера, потому что у Такси уже был богатый опыт работы с этой базой. Бэкенд ставил задачу в очередь, Celery-worker получал задачу и выполнял нужную последовательность действий — поиск водителя и отправку предложения о заказе ему на устройство. Если какая-то операция приводила к ошибке, задача перезапускалась.

Некоторое время всё работало успешно, но однажды Celery перестала справляться с нагрузкой. Существенным фактором было то, что мы не хотели поддерживать зоопарк баз данных и использовали только MongoDB, а Celery с ней работает не так хорошо, как хотелось бы.

Мы прикинули за и против и решили разрабатывать собственную платформу для запуска асинхронных задач. Начали с небольшого проекта на Python и MongoDB. Решение оказалось удачным и продолжило развиваться.

Если разработчик хочет обрабатывать свои задачи, то ему нужно объявить под это функцию у себя в сервисе, и она будет вызываться в нужные моменты. После этого надо зарегистрировать очередь в системе — и можно отправлять задачи в брокер. Тот проследит, чтобы задача была выполнена как минимум один раз, при этом не допустит ситуации, когда задача выполняется несколькими обработчиками одновременно. Разработчик может контролировать, какие сервисы и с какой частотой могут добавлять задачу в очередь, не копятся ли в очереди необработанные задачи, и устанавливать максимальную пропускную способность «разгребания» задач.

Читайте так же:
Розетка для извещателей типа дип

Внутри система состоит из stateless-брокера задач, хранилища данных и обвязки на стороне обработчика. Рядом с кодом обработчика стоит side-car-демон, то есть агент, который с одной стороны взаимодействует с брокером задач, а с другой — с библиотекой интеграции внутри обработчика. Агент следит за состоянием обработчика, собирает метрики и группирует задачи, уменьшая нагрузку на брокер. Такая архитектура позволяет быстро добавлять поддержку новых языков: зависящая от языка часть системы совсем маленькая и пишется опытным разработчиком за пару дней. Например, недавно мы добавили поддержку Go.

Платформа сейчас обрабатывает десятки тысяч задач в секунду. Время от постановки задачи до начала выполнения в среднем составляет всего пару десятков миллисекунд.

Почему нужна сериалиазция событий

Иногда пользователи отменяют заказы. В 2015 году случалось, что на такие отменённые заказы всё же приезжали водители. Проблема возникало достаточно редко, всего несколько раз в неделю, но пользовательский опыт от этого сильно страдал. Оказалось, что возникал race condition между отправкой предложения водителю и отменой заказа пользователем.

Такую проблему можно решить разными способами. Мы решили создать лог событий, отражающих всё, что происходит с заказом, и актора, который будет применять события друг за другом.

У нас появилась точка сериализации, по логу мы всегда можем определить порядок событий — для любых двух из них можно понять, какое произошло раньше. Пусть при создании заказа генерируется событие create, когда мы находим подходящего водителя — new_driver_found, в при отмене — cancel. Тогда при конкурирующих поиске и отмене может возникнуть две последовательности событий.


В первом сценарии нужно отправить водителю отмену, а во втором — вообще не отправлять ему предложение. Получается, что действия, которые необходимо производить при обработке каждого события, зависят от текущего состояния заказа. Так у нас появился конечный автомат заказа и цикл его обработки. К этой архитектуре мы пришли примерно к 2016 году.

К чему мы пришли в 2021 году

С развитием проекта росло и количество действий, необходимых для обработки каждого события. Появлялась поддержка новых способов оплаты, добавлялись тарифы и сценарии использования, например доставка. Запустился Яндекс Плюс — то есть добавилась механика начисления кешбэка и списания баллов. К 2019 году перед нами встала задача управления сложностью нашей конструкции. Мы постарались максимально структурировать схему. Сделали собственный DSL — специализированный под задачу язык описания действий, которые нужно выполнять при обработке заказа. Взяли фреймворк userver и написали рантайм, который выполнял код на нашем DSL.

Действия могут быть такими: сходить в сервис по HTTP или отправить сообщение в очередь. Последнее, если нужно выполнить действие безусловно, работает отлично. Например, можно отправить сообщение «начать поиск машины». Когда надо получить результат от сервиса, удобнее написать HTTP-запрос. В том числе, назначая водителя на заказ, мы отправляем запрос в сервис driver-app-api. Тот отвечает, удалось ли зарезервировать машину или по какой-то причине не удалось. От ответа зависят наши дальнейшие шаги — ждать, пока водитель доедет до пассажира, или начать новый поиск.

На нашем DSL описание этой логики выглядит примерно так:

Быстро оказалось, что наш подход к конструированию цикла заказа можно переиспользовать и для других проектов, например для обработки платежей или заказов в Лавке. Вот только формат заказов у этих сервисов сильно отличается от Такси, да и сами переходы конечного автомата не имеют с Такси ничего общего. Мы сделали ещё одну итерацию разработки, чтобы полностью отвязать наш процессинг от цикла заказа такси. Команда разработала хранилище событий, разделив его на горячую и холодную части. Так мы можем запоминать всё, что происходит с заказами (это очень помогает поддержке), и при этом не проседать в производительности. Добавили в наш DSL возможность декларативного описания переходов конечного автомата, чтобы разработчики Еды или Лавки могли описать свои циклы обработки. В результате получили инфраструктуру для создания циклов обработки чего угодно, processing as a service.

Продуктовые требования к нашей инфраструктуре получаются очень противоречивыми. С одной стороны, нужно обрабатывать заказы как можно быстрее. Нельзя допускать, чтобы время поиска водителя увеличилось на десятки секунд из-за проблем с каким-нибудь компонентом: пользователям вряд ли такое понравится.

Посмотрим на пример выше. Мы хотим приступить к обработке события new_driver_found как можно раньше — в идеале, сразу после того, как оно произошло. Но мы действуем последовательно — значит, сначала должны обработать событие created и только потом перейти к new_driver_found. А обработка каждого события состоит из десятков действий, каждое из которых может потенциально сломаться — и затормозить весь конечный автомат.


Мы придумали несколько стратегий, которые помогают сочетать быструю обработку событий с сохранением их последовательности.

Чтобы переживать отказы единичных обработчиков, мы развиваем систему стратегий фолбэков. Нам нужно уметь обнаруживать отказы и справляться с ними. Задача определения отказов на первый взгляд выглядит простой: если мы сходили в сервис по HTTP и получили 503, значит, сервис не работает. Правда, бывают вр‎é‎менные флапы, если, скажем, переключился мастер одного из десяти шардов базы данных. Вряд ли можно считать, что сервис при этом сломался: процесс завершится за несколько секунд и пользователи ничего не заметят. Поэтому не стоит отключать сервис сразу, когда на нём появляются ошибки. Для более надёжной детекции мы подсчитываем статистику в некотором окне. Подробнее о том, как всё устроено, можно почитать в этом конспекте.

Читайте так же:
Розетки с заземлением легран

Иногда сервис не работает только для пользователей, заказавших такси на полнолуние в Нижних Васюках. Такой пользователь может быть всего один, для него сервис определённо сломан, а на статистике в разрезе сервиса этого не видно. Но нам важна история каждого пользователя, поэтому мы ведём статистику не только в разрезе сервиса, но и в разрезе определённого заказа: даже одна зависшая поездка будет замечена, а баг, который вызвал зависание, пофиксят.

Мы научились определять отказы сервисов, но что можно сделать, чтобы пережить отказ? Мы рассматриваем несколько возможных политик фолбэков:

  1. Отключение микросервиса. Это самое простое, что может быть. Отлично работает для функций, которые не критичны для продолжения заказа. Например, лучше не показать пассажиру имя водителя, чем не дать уехать совсем. Можно не показать плашку «10 лет сервису поиска такси» или новогоднее промо — главное, чтобы отображалась цена поездки. Важно только создать систему метрик и мониторинга, чтобы отключение было вовремя замечено и владельцы как можно скорее вернули микросервис к жизни. Наши мониторинги доставляют алерты команде разработки в течение пары минут, и проблемы, которые как-то задевают пользователей, обычно чинятся в течение получаса.
  2. Использование запасного варианта. Если сервис назначения через буферный подход даст сбой, можно вернуться к более простому жадному алгоритму (вот подробности на Хабре про алгоритмы поиска).
  3. Выполнить действие в сервисе после того, как он починится. Самая распространённая стратегия, в простом сценарии она решается тем, что мы передаём события сервису через очередь задач или сообщений. Всё сильно усложняется, если у следующих шагов обработки есть зависимости по данным от сервиса, выполнение которого мы хотим отложить. Например, статистику по заказам можно пересчитать офлайн с задержкой в 10 минут, если сервис онлайн-подсчёта будет недоступен. В такси вынесение в офлайн тех расчётов, задержка которых не так важна, позволяет уменьшить время выполнения основных функций — ускорить поиск водителя и уменьшить время подачи машины.

Выводы

Когда мы делаем систему, в которой взаимодействуют десятки микросервисов, неизбежно возникают проблемы совместимости интерфейсов. У нас интерпретируемый DSL, поэтому мы узнаём о таких проблемах, только когда они случаются. Чтобы легче справляться с этой проблемой, нам пришлось сделать механизм интеграционных тестов для циклов процессинга, которые пишут наши коллеги из Еды и Лавки. В Такси мы используем кодогенерацию интерфейсов на основе схем OpenAPI (Swagger) — в теории можно настроить валидацию потоков с помощью статического анализа. Но это уже планы на будущее.

Мы успешно обрабатываем тысячи событий в секунду для задач Такси, Лавки и логистики, а значит, наш подход имеет право на жизнь. Возможно, вы найдёте что-то общее между проблемами, которые решаете сами, и теми, с которыми пришлось столкнуться нам, и тогда мой рассказ поможет вам посмотреть на ваши процессы со стороны. А может, вы решаете такую же задачу другим способом, я был бы рад, если бы вы поделились своим опытом. Я не старался описать наше решение суперподробно, чтобы статью можно было осилить за один присест. Если интересно раскрыть какую-то тему детальнее, то спрашивайте в комментариях.

Мобильный телефон Xiaomi Redmi 9 4/64GB Carbon Grey (Global ROM + OTA)

Характеристики Мобильный телефон Xiaomi Redmi 9 4/64GB Carbon Grey (Global ROM + OTA)

Стандарт связи/интернет

  • 2G
  • 3G (WCDMA/UMTS/HSPA)
  • 4G (LTE)

Дисплей

  • 6.53
  • 2340 x 1080
  • IPS
  • Стекло (Gorilla Glass 3)

СИМ-карты

  • 2
  • Nano-SIM

Функции памяти

  • 4 ГБ
  • 64 ГБ
  • microSD
  • 512 ГБ
  • Нет

Операционная система

  • Android

Фронтальная камера

  • 1
  • 8 Мп
  • Фронтальная вспышка
  • Челка
  • Программная

Процессор

  • Mediatek
  • Cortex-A75 (64bit) + Cortex-A55 (64bit)
  • ARM Mali-G52 MC2
  • 2+6
  • Helio G Серии
  • 2.0 ГГц + 1.8 ГГц

Основная камера

  • 13 Мп + 8 Мп + 5 Мп + 2 Мп
  • Автофокус
  • Вспышка
  • Ультраширокоугольный объектив
  • Широкоугольный объектив
  • 4
  • Full HD / 1920х1080 / стереозвук
  • Основная камера 13 Мп: f/2.2 / FOV 75.2°
    Ультра-широкоугольный объектив 8 Мп: f/2.2 / FOV 118°
    Макро объектив 5 Мп: f/2.4 / Автофокус 4 см
    Датчик глубины 2 Мп: f/2.4

Питание

  • 5020 мА*ч

Материалы

  • Пластик

Разъемы

  • Type-C
  • Type-C
  • 3.5 мм

Навигация

  • BDS
  • GPS
  • ГЛОНАСС
  • Есть

Размеры

  • 198
  • 77 мм
  • 163.32 мм
  • 9.1 мм

Дополнительно

  • Разблокировка по лицу
  • Быстрая зарядка
  • Гироскоп
  • Акселерометр
  • Гироскоп
  • Датчик освещения
  • Датчик приближения
  • Компас

Общие характеристики

  • Grey
  • Документация
  • Зарядное устройство
  • Кабель для синхронизации
  • Скрепка для извлечения СИМ-карты
  • Телефон
  • Чехол
  • 3.5 mm Mini-Jack
  • Bluetooth 5.0
  • USB Type-C
  • Wi-Fi
  • Инфракрасный порт
  • Безрамочный дисплей
  • Китай
  • Китай
  • 12 месяцев

* Объем встроенной памяти зависит от операционной системы, а также предустановленных производителем приложений.

* Характеристики и комплектация товара могут изменяться производителем без уведомления

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector