Какую архитектуру использовать для нескольких небольших конкретных серверов и централизованного? - PullRequest
0 голосов
/ 17 октября 2018

Прежде всего: я новичок.Я впервые работаю в важном проекте.

Это мой план:

enter image description here

Как это работает сейчас:
Рашпиль имеетсостояние на основе других подключенных к тому же компьютеру.На компьютере есть алгоритм для вычисления этих состояний.
Rasp также генерирует данные каждую секунду и отправляет их напрямую на сервер с помощью http-запросов.
Сервер показывает пользователю страницу на основе свойств рашпиля, где пользователь хочет иметь доступ к состоянию рашпиля, загрузке памяти, потоку камеры, а также отправлять команды.
Каждый новый компьютер должен быть зарегистрирован на серверном компьютере, а также каждый компьютер и свойства Rasp.
Так что, если я добавлю новую камеру в рашпиль, кто-то должен будет обновить базу данных сервера.

Этот подход не очень масштабируем.Я нацеливаюсь на очень масштабируемое решение. Итак, я рассматриваю:

  • У каждого компьютера есть отдельная база данных и HTTP-запрос ответа API.В этой базе данных хранится распечатанная информация, такая как камеры, текущее состояние и т. Д. *
    • При таком подходе лучше, чтобы компьютер отправлял информацию или сервер запрашивал ее?
  • Сервер имеет доступ к базам данных компьютеров через синхронизацию баз данных (мне нужно лучше изучить это).Таким образом, нет для отдельных API, только отдельные базы данных синхронизированы с сервером.
  • Предложения?

    OBS: в текущем состоянии, все рашпили, компьютеры и сервернаходятся внутри одного VPN.

1 Ответ

0 голосов
/ 18 октября 2018

Почему вы беспокоитесь о промежуточных компьютерах / базах данных?Попросите Raspberry сделать HTTP-запрос к центральному серверу, чтобы он «зарегистрировался», и периодически отправлять его содержимое на этот централизованный сервер.

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

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

...