Мысленное путешествие Туи по разумному выбору ТиКВ

Архитектура

Эта статья основана на публикации Лю Юньсонга из Tuya Smart на PingCAP DevCon 2021, в том числе об использовании TiDB в области IoT, особенно в индустрии умного дома.

О Туе Смарт

Tuya Smart — это глобальная платформа разработки IoT, которая создает взаимосвязанные стандарты разработки и объединяет бренды, OEM-производителей, разработчиков, розничных продавцов и интеллектуальные потребности различных отраслей. На основе глобального публичного облака реализована взаимосвязь интеллектуальных сценариев и интеллектуальных устройств. обложкаИнструменты разработки оборудования, глобальное общедоступное облако, интеллектуальная бизнес-платформаТри аспекта разработки: предоставление всесторонних возможностей от технологий до маркетинговых каналов и создание нейтральной и открытой экосистемы разработчиков.

В настоящее время у Tuya более 100 000 партнеров в стране и за рубежом, а количество экологических клиентов на платформах для разработчиков IoT PaaS и IoT достигло 320 000+, включая производство, розничную торговлю, операторов, недвижимость, пенсионное обеспечение, отели (PaaS), и Т. Д. Граффити расширяет возможности европейских и американских брендов, а также китайских брендов, включая Philips, отечественную Haier и трех крупных операторов.

Реакция в режиме реального времени на массивные данные: процесс выбора TiKV

Устройства Tuya ежедневно обрабатывают 84 миллиарда запросов по всему миру со средней пиковой скоростью обработки 1,5 миллиона транзакций в секунду и средним временем отклика менее 10 миллисекунд. Поскольку Tuya — это индустрия Интернета вещей, в отличие от традиционных отраслей, здесь нет низкого пика, а объем написанного очень велик, Tuya потратила шесть лет, пытаясь выбрать модели и изучить наиболее подходящую структуру данных.

Причина, по которой Tuya имеет такой большой объем данных, заключается в том, что люди должны использовать умные устройства в своих домах, такие как умные фонари и подметальные роботы.После того, как устройства подключены к Интернету, они могут общаться с платформой Tuya и различные временные триггеры интеллектуальных устройств. Например, патрулирование камеры дома и информация о местоположении подметающего робота должны быть переданы на платформу Tuya Zeus. Как важнейшая роль платформы Tuya, система Zeus отвечает за обработкуОтчетность по данным, топология бизнесаКак показано на рисунке ниже, шлюз приложений собирает сообщения MQTT, о которых сообщают смарт-устройства, и отправляет их в Kafka и NSQ.Система Zeus использует эти сообщения для расшифровки и сохраняет их после обработки. В этой статье в основном описывается выбор продукта от Zeus до хранилища.

AWS Aurora

Сначала Tuya использовала AWS Aurora. Aurora похожа на PolarDB от Alibaba Cloud.Разделение хранения и расчетаАрхитектура Туя стабильно работает на Авроре уже три года, и в первые три года использования Аврора полностью удовлетворяет потребности. Интернет вещей был относительно непопулярен шесть-семь лет назад, оборудование для умного дома не было так популярно, и пользователи мало им пользовались, однако с расширением бизнеса в последние годы оборудование выросло в геометрической прогрессии, и оно увеличилось втрое. до пяти раз в год. , Aurora не может выдержать взрыв объема данных, особенно время отклика Интернета вещей составляет менее 10 миллисекунд, даже если база данных разделена и кластер разделен, это не будет соответствовать потребностям бизнеса из Туи.

Apache Ignite

Так Туя начал пробовать использовать Apache Ignite, который тоже является распределённымКВ система, как и TiKV от PingCAP, он основан на архитектуре JAVA для сегментирования данных, его сегменты относительно велики, 1 ГБ данных — это раздел, и его расширение не такое линейное, как у TiKV. Если бизнес-объем Tuya удвоится, ему придется остановиться, когда машине потребуется расширение, и возникнет риск потери данных. На этот период мы повесили Aurora за Ignite для аварийного восстановления, и данные будут записываться в Aurora синхронно. Однако с ростом объема бизнеса Ignite не может удовлетворить бизнес-потребности Tuya, поэтому его необходимо расширять, а архитектура Ignite требует простоев при расширении, что недопустимо для Интернета вещей.

ТиБД 3.0 и 4.0

Когда Tuya попыталась заменить Ignite Cluster в 2019 году, количество устройств хранения в США достигло 12 узлов. Одновременно с мероприятием PingCAP TUG в Ханчжоу мы провели проверочное тестирование TiDB 3.0. Однако запуск TiDB 3.0 не удовлетворил требованиям Tuya, из-за высокой задержки и пропускной способности нам пришлось сдаться после нескольких месяцев попыток. Наступает время 2020 года, запускается TiDB 4.0. Мы еще раз протестировали TiDB 4.0.По сравнению с 3.0 есть большое улучшение, но проблемы с высокой задержкой и недостаточной пропускной способностью все еще существуют. В это время команда PingCAP R&D провела глубокий анализ этой проблемы и обнаружила, что основные затраты времени находятся на уровне SQL PARSER, в то время как базовое хранилище TiKV полностью простаивает, потому что объем написания граффити велик. , а требования к задержке высокие, меньше, чем ожидалось. Поскольку все задержки потребляются в слое SQL PARSER, а данные, записываемые Интернетом вещей, имеют высокий TPS, но бизнес-логика не такая сложная, можно ли убрать слой SQL и записать его прямо в слой TiKV? Мы ссылаемся на официальную документацию API TiKV, предоставленную PingCAP, утверждая, что онаслужба поддержки JAVA, GO и Rust, начал пробовать и исследовать.Результаты онлайн-приложения очень неожиданны и были признаны всей компанией. После этого мы запустили TiDB 4.0 в разных регионах мира.После года тестирования работа прошла нормально,проблем не обнаружено.Первоначально нам нужно было 12 машин,а сейчас нам нужно только 3 машины в той же конфигурации.То есть сказатьСтоимость оборудования составляет всего четверть от первоначальной. Пропускная способность Tuya была уже 200 000 TPS, когда он вышел в сеть.С точки зрения кластера в Северной Америке версия на тот момент была 4.0.8.99% времени ответа на запрос составляло 150 микросекунд, а время записи - 360 микросекунд ( меньше одной миллисекунды)), друзья с похожими сценами могут попробовать.

новый вызов: Развертывание в регионах

Однако мы столкнулись с новыми проблемами, прежде чем мы были счастливы, потому что AWS был развернут в трех зонах доступности.Например, первое развертывание во Франкфурте было ABC в трех регионах.Связь между тремя репликами потребляет трафик, а трафик требует оплаты. , а все приложения Tuya разворачиваются в три зоны, и их тоже нужно звонить по регионам.У TiKV нет такой же стратегии звонков как у Double, поэтому стоимость этой платы остается высокой, хотя Tuya составляет всего четверть от Предыдущий.Одна машина, но стоимость выше оригинала. Текущее решение состоит в том, чтобы выполнить сжатие на основе RPC для уменьшения сетевого трафика, но этот трафик может решить только трафик репликации региона, а трафик репликации кода приложения между регионами не уменьшился. Мы обнаружили, что причина этой проблемы в том, что сервер TiKV не выполняет фильтрацию на стороне сервера.Данные, хранящиеся в TiKV, необходимо извлекать локально для фильтрации приложений, а затем снова подключать. ,В последующих версиях может быть введена фильтрация на основе сервера, чтобы снизить нагрузку на сервер и стоимость трафика..

Снижение затрат и повышение эффективности: обновление архитектуры с X86 до ARM

Причина, по которой индустрия IoT фокусируется на снижении затрат, заключается в том, что валовая прибыль в отрасли IoT очень низка, и нам необходимо снизить стоимость каждого модуля. В июне 2020 года AWS запустила продукты C6G, и заявлено, что эффективность затрат на 40 % выше, чем у C5 предыдущего поколения, поэтому мы попробовали AWS C6G, но при использовании TiUP для прямой компиляции и развертывания мы обнаружили, что время отклика было медленнее. чем архитектура X866 В 7 раз, то есть TiUP развертывает универсальную скомпилированную версию, которая не так подходит для аппаратного обеспечения. После тестирования и проверки было обнаружено, что существующая версия TiKV не поддерживает набор инструкций SSE, а это означает, что версия RocksDB, используемая в настоящее время TiKV 4.0, не поддерживает набор инструкций SSE.

Набор инструкций SSE в основном выполняет проверку CRC, HASH и операции с плавающей запятой. В то время компромиссным решением было смешанное развертывание.ТиКВ использует архитектуру X86, а остальные узлы используют архитектуру ARM, но это тоже приносит неудобства.При обновлении версии образ, на который указывает, будет X86.Это будет ARM для некоторое время, что будет очень хлопотно, поэтому общий переход на архитектуру X86. В этом году TiKV выпустила версию 5.0.TiKV 5.0 поддерживает оптимизированный для aarch 64 набор инструкций CRC32C, который является набором инструкций SSE 4.2, но предварительным условием является то, что версия RocksDB выше 6.1.2, а версия TiKV 5.0 для RocksDB версия Это 6.4.6, а оптимизацию ТиКВ для набора инструкций SSE можно найти на ТиКВ, то естьTiKV 5.0 теперь полностью поддерживает набор инструкций SSE., второе полугодие будет включено в ключевой тест, поэтому стоимость может снизиться более существенно.

Перспективы бизнеса

В будущем с помощью TiDB 5.0 и 5.1 Tuya уверена, что сможет обеспечить рост бизнеса в несколько раз, ожидается, что к концу года трафик TiKV вырастет втрое или вчетверо. Платформа больших данных также использует TiDB в качестве дисплея с большим экраном, и поток оборудования Интернета вещей также в большей степени рассматривает возможность использования TiKV 5.1 в качестве хранилища.Улучшить удобство использования, развертывание версии TiDB ARM также планируется во второй половине года.