Технологии

H1: Fluent Swap: За пределы CRUD, разработка мьютехенги на Go

H1: Fluent Swap: За пределы CRUD, разработка мьютехенги на Go

H1: Fluent Swap: Как Вышли За Пределы CRUD И Начали Разрабатывать Мячингейшип На ГО

Каждый backend-проект начинается из простых шагов — создание HTTP запроса, обработка логики, выполнение команд сQL и отправка результата обратно клиенту. Однако когда задачи усложняются до создания системы для совместной работы (мьютехнаги), требующей постоянного взаимодействия между множеством участников и поддержки длительных соединений через WebSockets, стандартные подходы CRUD уже кажутся недостаточными.

В этом стиле я хотел бы рассказать о своем проекте Fluent Swap - системе мьютехенгаундэйтинга на основе Go языка программирования. Почему мы не стали пользователями классического SQL базового решения? Что меняло сценарий при разработке этого проекта?

Введение в Fluent Swap

Введение в Fluent Swap
ARTICS MEDIA

Fluent Swap был создан как решение для проблем, возникающих при организации многопользовательских встреч или игр без использования привычных методик управления состоянием данных. Причем ключевой частью была идея замены традиционного CRUD модели с использованием очереди сообщений одного процесса вместо балансировщика нагрузки.

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

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

Откуда взялось это новое направление

Откуда взялось это новое направление
ARTICS MEDIA

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

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

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

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

Как работает система Fluent Swap?

Система Fluent Swap состоит из нескольких ключевых компонентов:

  1. **Клиентская часть**:
  1. **Объединитель**:
  1. **Джобнернеджер**:
  1. **Работник**:
  1. **Веб-часть**:

Отдельный упор был сделан на использование очередей сообщений внутри одного процесса вместо классического подхода CRUD, когда все эти действия происходили в разных пулах соединений и репликах базы данных.

Пример: Обработка события

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

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

Адаптивность системы позволяет ее масштабировать до нескольких десятков тысяч пользователей одновременно, что является значительным преимуществом над традиционными решениями CRUD, где увеличение количества пользователей обычно требует более сложного и дорогостоящего распределения нагрузки на серверные хостинговые платформы.

Почему Fluent Swap работает предсказуемо?

Ключевые факторы успеха проекта заключаются:

  1. **Минимизация использования памяти**: Благодаря использованию единственного Go-процесса и очереди сообщений мы могли добиться хорошего контроля над используемой памятью.
  2. **Сокращение объемов запросов**: Мы не зависели от постоянных обращений к балансировщику нагрузки, благодаря чему снижалось количество отправляемых HTTP-запросов.
  3. **Усиленная безопасность**: Взаимодействие через очередь сообщений предоставляет гарантию аутентификации и конфиденциальности информации об активных пользователях.

Также стоит отметить, что система Fluently Swapped была сконструирована таким образом, чтобы она легко воспроизводилась за счет простоты инклюзивности модулей системы (Client-side, Web-, Jobnerdinger, Worker), которые могут быть запущены практически как будто бы один большой процесс.

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

Что такое Fluent Swap: Как Он Работает

Fluent Swap представляет собой собственную программную среду, основанную на технологии очереди сообщений внутри одного Go-процесса вместо использования стандартных CRUD подходов и классических балансирам режима нагрузки. Это позволило нам отказаться от многих избыточных шагов по управлению состоянием данных, обеспечить высокий уровень производительности и поддерживать масштабируемость даже при огромном числе участников в игре.

Перспективы развития и следующая работа

Для дальнейших исследований важно учитывать использование других технологий управления данными, таких как Redis или Memcached, или потенциально более совершенный вариант очереди сообщений внутри нескольких экземпляров сервиса.

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

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

FAQ (Частые Спрос)

**1)** **Как работает ваша система?**

**2)** **Может ли это работать без базы данных?**

**3)** **Сможете ли вы расширить количество клиентов?**

**4)** **Развитием Fluent Swap занимается команда профессионалов?**

**5)** **Fluent Swap поддерживает различные платформы?**

Источники

Источники

Читайте также

Смотреть больше материалов