RSS Etsy Engineering | Code as Craft

Масштабирование платежной системы Etsy с помощью Vitess: Часть 3 – Снижение риска переключения

Платежи Etsy перевели 40 миллиардов строк из 23 таблиц в среду Vitess с разбивкой на сегменты, используя vindexes для разбивки данных. В этой статье мы уделяем особое внимание ошибкам, которые могут возникать во время перехода. Важно понимать режимы транзакций Vitess. Одиночный режим поддерживает атомарность, но многорежимный режим может привести к частичным фиксациям. Двухфазный режим фиксации является экспериментальным и не рекомендуется. Обратная VReplication обеспечивает синхронизацию данных между не разбиваемым и разбиваемым ключевым пространством после перехода. Она может нарушиться из-за соблюдения уникального ключа, требуя исправлений, таких как удаление строк или ручное обновление столбца Pos. Разбросанные запросы, в которых ключ разбивки опущен в клаузе WHERE, могут привести к чрезмерному объему запросов и возможным простоям. Vitess теперь предлагает флаг --no_scatter для предотвращения таких запросов. Неподдерживаемые запросы могут терпеть неудачу после перехода. Тщательное тестирование в среде разработки является необходимым для выявления и решения таких запросов. Другие потенциальные ошибки включают ошибки, связанные с неподдерживаемыми SQL-конструкциями, которые могут быть решены путем обновления до более новых версий Vitess. Несмотря на эти риски, переходы в целом обратимы, если обратная VReplication работает должным образом. Однако влияние любого нарушения работы следует тщательно рассматривать.
favicon
etsy.com
Scaling Etsy Payments with Vitess: Part 3 – Reducing Cutover Risk