Перейти к содержимому
  • 0
uraabk

Синхронизация данных между компами магазина

Вопрос

Здравствуйте.

Есть несколько компов, в каждом работает один и тот же магазинный скрипт. Но проблема в том, что сохранение информации (кто что купил и т.д.) происходит на каждом компе отдельно и нету общей базы так сказать.

Из этого и вопрос, как соединить компы или создать общий файл со всеми данными на каком нибудь другом пк или что то в это духе?

 

Вроде бы сетевыми платами можно, но ведь надо с одного пк отправлять файл, а на другом принимать и отправлять всем остальным обновленный файл. Скорее всего будет какая нибудь путаница в файлах и некоторые данным могут не успеть записаться))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Давайте рассмотрим все варианты как организовать работу с данными.

Для начала вводные. Есть 4 магазина (монитор, пим, клава ну и остальное по мелочи) и надо их синхронизировать по базе данных.

Вариант 1. Хранение на внешнем сервере. Скорость загрузки данных у ОС низковата, но её вполне хватает чтоб получить запрашиваемую информацию. Минусы - аренда сервера, ключи безопасности, и много мороки с реальным сервером чтоб убедить его выдавать то что надо. Плюсы - удобное хранение логов, базы данных, подхват обновления базы данных товара буквально налету.

Вариант 2. Создание сервера в игре. На нем хранится вся база данных игроков, логи и прочее. Минусы - ОС компы тормозят поэтому придется менять структуру базы данных и оптимизировать её для ускоренной работы. Ограниченное дисковое пространство. Хотя тут можно все растянуть через raid. Приведу только свои данные, у меня за месяц работы накопилось логов на 8 мб, хотя посетителей зарегистрировано около 400 человек, так что тут надо думать. Также почти невозможно вывести данные на внешние источники так как пастебин например базу данных свыше 1 мб отказывается принимать. Плюсы - полная автономность, безопасность.

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

Как по мне, самый оптимальный вариант это 2. Но там надо точно все просчитывать, и довольно четко кодировать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, uraabk сказал:

как соединить компы или создать общий файл со всеми данными на каком нибудь другом пк или что то в это духе? 

Я не совсем понял, это все происходит на компах из OC? Или на реальных компах?

Если на компах из OC, то сериализация данных с помощью встроенной либы serialization, дальше отправка с помощью модемов по сети (через send, или broadcast, что больше подходит)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Koteyk0o сказал:

Я не совсем понял, это все происходит на компах из OC? Или на реальных компах? 

Да куда там реальных)) Из ОС конечно же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, uraabk сказал:

Да куда там реальных)) Из ОС конечно же.

Ну тогда как я уже сказал выше, через сериализацию и отправку через сетевые модемы. Соединять компы надо через свитчи, чем меньше тем лучше, ибо сети OC достаточно медленные. Ну я думаю там если что сам разберешься.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Koteyk0o сказал:

Ну тогда как я уже сказал выше, через сериализацию и отправку через сетевые модемы. Соединять компы надо через свитчи, чем меньше тем лучше, ибо сети OC достаточно медленные. Ну я думаю там если что сам разберешься.

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

 

Каждому коммутатору нужны будут диск, цп и память получается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, uraabk сказал:

Но ведь если два игрока на двух компах купят одновременно что то, то отправится два файла из которых только один примется/сохранится на других пк или нет?

К одному компу можно подключить несколько мониторов, обслуживать одновременно нескольких игроков и ничего никуда не отправлять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, Zer0Galaxy сказал:

К одному компу можно подключить несколько мониторов, обслуживать одновременно нескольких игроков и ничего никуда не отправлять.

А как? Скрипт по типу такого (без vds и некоторых плюшек) Получается надо pim соединить с монитором и все это подключить к скрипту на компе и так для каждого монитора/pim, но разве они не будут мешать друг другу? Скрипт один, а мониторов много...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 минуту назад, uraabk сказал:

Каждому коммутатору нужны будут диск, цп и память получается?

Если сильно сеть не напрягать, то не обязательно.

 

11 минуту назад, uraabk сказал:

Но ведь если два игрока на двух компах купят одновременно что то, то отправится два файла из которых только один примется/сохранится на других пк или нет?

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

 

1 минуту назад, uraabk сказал:

Получается надо pim соединить с монитором и все это подключить к скрипту на компе и так для каждого монитора/pim, но разве они не будут мешать друг другу? Скрипт один, а мониторов много...

Как я понял там вообще мульти-мониторный вывод не реализован, но если писать самописную прогу нет никаких проблем отрисовывать инфу с одного компа на несколько мониторов.

Биндишь один моник к компу, отрисовываешь инфу на нем, биндишь другой моник, отрисовываешь инфу уже на нем, и так по кругу (ну или же лучше делать это не в цикле, а по каким-то эвентам)

Изменено пользователем Koteyk0o

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Koteyk0o сказал:

То-есть должна быть база (таблица, или хз что ты там используешь) в которую будут вноситься данные от других компов

На данный момент просто файлик такого формата

 

2020-01-30_150205.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Через мульти-мониторный вывод получится только 3 монитора сделать, что маловато :)

 

Остается только вариант с созданием общей базы на отдельном компе и получение/запись данных через модем send'ом.

А нету на форуме где нибудь похожих скриптов с базами данных и обменов информации между пк?

Изменено пользователем uraabk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть еще RAID. Я не пробовал, но возможно его получиться к нескольким компам подключить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Компьютер-базу несложно сделать.

Просто сделай компьютер, который слушает модем на предмет команд "получить данные" и "изменить данные".

Формат любой покатит.

Для безопасности можно не делать беспроводную связь, а подключаться только кабелем.

 

Еще есть вариант связи компьютером через реальный инет (если нужна беспроводная и безопасная связь).

Нужна будет инет карта в каждом компе. Для связи берешь любой интернет-мостик. Например Stem

 

(Либо вообще хостишь свой внешний реальный сервер с базой данных, но это уже максимально серьезное решение.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, uraabk сказал:

На данный момент просто файлик такого формата

 

2020-01-30_150205.jpg

Очень похоже на мою старую версию магазина с одним терминалом, прямо 1 в 1. (Если это мой магазин - откуда ты взял первую версию, я её не выкладывал в общий доступ?)

 

Раньше было так же, я просто читал файл и записывал изменения в один файл. Потом была версия с сервером в игре, где была такая же схема хранения, но терминалы скачивали информацию о пользователях с игрового сервера посредством беспроводной карты. Финальная версия уже была просто на файликах, данные о юзерах хранятся в JSON формате. Хотел перейти на sqlite3, но не решился.

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@BrightYC да, эта она.

 

3 часа назад, Zer0Galaxy сказал:

Есть еще RAID. Я не пробовал, но возможно его получиться к нескольким компам подключить.

Это что то крайне неожиданное. Даже не думал, что его можно использовать)

 

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

Попробую сделать через компьютер-базу, это оптимальное решение, жаль готового варианта нет))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 минуты назад, uraabk сказал:

по типу vds

Так для интернет моста не нужен VDS.

Берешь два OC-компа с интернет платами, ставишь либу stem и коннектишь парой команд. Работает как модем из OC.

 

Ну или юзаешь обычный модем и вбиваешь адреса других компов куда-нибудь в табличку вручную, чтобы бродкаст перехватить никто не мог.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...