Консистентность в конкуретной среде: как не захлебнуться в потоках данных

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

Напомню, что текст рассчитан в первую очередь на разработчиков, которые имеют мало практического опыта работы в конкурентной и/или микросервисной среде, поэтому многие вещи я объясню на пальцах. Для тех, кто захочет ознакомиться с более строгими формулировками, сразу скажу, что здесь будут затронуты упрощённые идеи паттернов Transactional Outbox и Saga.

Консистентность в пределах одного сервиса

В прошлой статье я рассказал, как для Точки важна консистентность данных. Под консистентностью я здесь понимаю достоверность и непротиворечивость информации о планах и прогрессе выполнения задач. Иными словами, при консистентности сервисы «не забывают» выполнить поставленные задачи, а после выполнения не пытаются их сделать во второй раз.

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

Давайте разберёмся, как добиться консистентности в ситуациях, когда наш сервис практически не влияет на «внешний мир», то есть мы не посылаем и не получаем запросы от других сервисов. Взаимодействие происходит лишь с БД.

Казалось бы, а что тут сложного? Давайте просто писать в базу консистентные данные. Нормально делай — нормально будет!

Источник: https://habr.com/ru/company/tochka/blog/725722/


Интересные статьи

Интересные статьи

Индексирование баз данных — это техника, повышающая скорость и эффективность запросов к базе данных. Она создаёт отдельную структуру данных, сопоставляющую значения в одном или нескольких столбцах т...
Привет! Меня зовут Ирина Кротова, я NLP-исследователь из компании MTS AI. Мы не понаслышке знаем, что сбор и разметка данных часто становятся “бутылочным горлышком" в проектах, связанных с машинным об...
В 2019 году компания OpenAI опубликовала статью о точной настройке GPT-2, в которой она использовала Scale AI для сбора мнений живых разметчиков с целью совершенствования своих языковых моделей. Хот...
Искусственный интеллект все чаще используется в медицинских целях, в частности для анализа медицинских изображений. Процесс создания качественной и эффективной нейросети долгий и дорогой. Более того, ...
Часто от программистов PHP можно услышать: «О нет! Только не „Битрикс“!». Многие специалисты не хотят связываться фреймворком, считают его некрасивым и неудобным. Однако вакансий ...