Обмен данными между приложениями в микросервисной архитектуре с использованием Lumen / Laravel - PullRequest
1 голос
/ 02 февраля 2020

Я пытаюсь добиться этого, используя Lumen / Laravel framework в качестве моих базовых технологий, а также используя JWT Authentication для API REST. Функциональность выглядит следующим образом:

  1. Клиентское приложение (веб / мобильное) обслуживается с одного сервера и содержит приложение переднего плана, которое выполняет весь веб-API. запросы

  2. Служба аутентификации находится на сервере (A) . Эта служба (приложение) содержит Таблицу пользователей, которая используется для входа в систему пользователя, роль- управление, регистрация пользователей, отчеты по журналам, а также отслеживание всех проблем аутентификации / администрирования.

  3. Служба UserData на сервере (B) , в которой находится таблица профиля, биография -данные о каждом зарегистрированном пользователе с Сервера A, через внешний ключ (user_id) или иным образом для связи данных

  4. Служба продуктов на Сервере (C) , обрабатывает все связанные с продуктом проблемы, клиентов, заказы, категории - в разных таблицах с помощью ссылки на внешний ключ пользователя на сервере A.

  5. Приложение Blog на сервере (D) , эта служба управляет Сообщения в блоге пользователя, комментарии в блоге и все связанные с блогом проблемы на пользователя - либо с использованием их внешнего ключа (user_id)

Проблема

  • Вход / Выход выполняется один раз, и пользователь имеет доступ к каждой услуге

  • Как связать таблицы на сервере A с сервером B, используя внешний ключ для манипулирования данные и через вызовы API

  • Я использую аутентификацию JWT, Как я могу запустить приложение на другом сервере и сохранить сеанс входа в систему, а также сохранить данные, используя информацию для входа из другой сервис на другой сервис. я вошел в систему на сервере A, я запустил блог на сервере D, сервере D, прочитал информацию о моем входе в систему и о том, как получать сообщения / комментарии пользователей - как если бы это было отношение один ко многим или отношение многие ко многим модель системы.

  • Поскольку пользователь вошел в систему с сервера A, могу ли я повторить те же таблицы входа в систему на других серверах, чтобы при каждом запуске приложений данные были связаны, и я мог Запускайте запросы на связанных моделях. Помните, что каждое приложение имеет разные установки lumen / laravel. Мне интересно, как я могу общаться с каждым приложением, не повторяя процесс с одного сервера на другом сервере, также напомню, что мне придется получать биоинформацию с сервера B во время всех этих процессов.

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

также, если есть предпочтительный альтернативный метод / метод, я был бы рад узнать. Спасибо.

Пожалуйста, обратитесь к диаграмме ниже

enter image description here

...