Pull to refresh
2
0

Пользователь

Send message

Синхронизация клиентских запросов в Spring

Reading time5 min
Views9.5K
Сегодня предлагаю Вам разобрать одну практическую задачу о гонке клиентских запросов, с которой я столкнулся в МаксимаТелеком при разработке back-end для нашего мобильного приложения MT_FREE.

При старте клиентское приложение асинхронно отправляет «пачку» запросов к API. Приложение имеет идентификатор clientId, на основании которого можно различить запросы одного клиента от другого. На каждый запрос на сервере выполняется код вида:

  // получаем из репозитория данные клиента
  Client client = clientRepository.findByClientId(clientId);
  // если клиент не создан ранее
  if(client == null){
      client = clientRepository.save(new Client(clientId));
  }
  // далее обрабатываем запрос  

где сущность Client имеет поле clientId, которое должно являться уникальным и имеет для этого в базе unique constraint. Так как в Spring каждый запрос будет выполнять данный код в отдельном потоке, даже если это запросы от одного и того же клиентского приложения, будет возникать ошибка вида:
integrity constraint violation: unique constraint or index violation; UK_BFJDOY2DPUSSYLQ7G1S3S1TN8 table: CLIENT

Ошибка возникает по очевидной причине: 2 или более потоков с одним clientId получают сущность client == null и начинают ее создавать, после чего при коммите получают ошибку.

Задача:


Необходимо синхронизировать запросы от одного clientId так, чтобы только первый запрос выполнил создание сущности Client, а остальные блокировались бы на момент создания и получали бы уже созданный им объект.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments26

Как мы аудировали Wi-Fi в метро Дели и что из этого вышло

Reading time7 min
Views10K


В мае этого года МаксимаТелеком подписала соглашение с индийской компанией TechnоSаtComm (TSC), в рамках которого должна была провести аудит уже существующей Wi-Fi сети в метрополитене Дели.

Wi-Fi в метро Дели — это совсем не то же самое, что Wi-Fi Московского и Петербургского метрополитенов. Хотя бы потому, что сеть там построена только на некоторых станциях (а не в поездах) и еще не монетизируется. Строительство сети Wi-Fi в поездах также предусмотрено контрактом с Метрополитеном Дели и должно начаться в 2019 году. Именно поэтому TSC пригласила МаксимаТелеком в качестве консультанта и партнера. Мы должны были оценить техническую возможность реализации полноценного проекта, оценить ресурсы, провести аудит самой концепции и проверить актуальность примененных технических решений.

Читать дальше →
Total votes 28: ↑21 and ↓7+14
Comments52

5G против Wi-Fi: ожидание и реальность

Reading time22 min
Views47K


В последнее время все чаще обсуждается вопрос о будущем сетей Wi-Fi в связи с ожидаемым массовым строительством сотовых сетей пятого поколения. Действительно, зачем нужен Wi-Fi в мире, где сотовые сети обеспечивают миллиарды людей высокоскоростным доступом в интернет? Остановится ли в развитии семейство стандартов Wi-Fi с приходом 5G? Уйдет ли технология с рынка, завершив свою «историческую миссию»? Всем, кто ответил на эти вопросы утвердительно, посвящается эта статья. Всем остальным, кто разбирается в сетевых технология, надеемся, тоже будет интересно почитать.

Спойлер
Проиллюстрировать текст о «борьбе» двух технологий мы решили кадрами из бессмертной трилогии «Матрица», в которой борьба между машинами и людьми закончилась сосуществованием.

Несмотря на кажущуюся важность и логичность, вопросы о соперничестве Wi-Fi и 5G построены на искусственном противопоставлении родственных по сути, но различных по моделям применения технологий. Большинство утверждений о недолговечности Wi-Fi принадлежит представителям сотовых операторов, в конце статьи мы расскажем, почему.

А пока попробуем вместе развеять два заблуждения – «5G гораздо быстрее Wi-Fi» и «Wi-Fi очень скоро умрет». Для начала вернемся в прошлое и разберемся, что же такое 5G и что такое Wi-Fi.

Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments38

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity