crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Тема закрытаНачать новую тему
> Стратегия сетевого приложения., Помогите определиться, какой путь надежней.
Litkevich Yuriy
  опции профиля:
сообщение 17.9.2008, 13:28
Сообщение #21


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


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

dzyk, а как устроены таблицы БД заранее известно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dzyk
  опции профиля:
сообщение 17.9.2008, 17:55
Сообщение #22


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 13.4.2008
Пользователь №: 148

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 17.9.2008, 13:00) *
Еще есть вариант того, что 1П и 2П работают в офлайне, оба изменяют одну и ту же запись, что ты будешь делать(значения записи разные)?


Если синхронизовать ОС(либо приложения) по времени, то апдейтится последний вариант из "стека триггеров"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrew Selivanov
  опции профиля:
сообщение 18.9.2008, 12:52
Сообщение #23


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

Спасибо сказали: 15 раз(а)




Репутация:   6  


Цитата(dzyk @ 14.9.2008, 18:57) *
Имеется приложение. Ядро - база данных SQLite(информация в таблицах изменяется 20-30 раз в день). Сейчас необходимо реализовать одновременное использование БД на нескольких компьюетрах "сети"(постоянных соединений нет, кто-то подключается, кто-то отключатеся, IP динамические, всего 5-6 машин).

Вот мои варианты.

1. Связать приложения по UDP и отсылать каждые х-минут контрольную сумму файла БД SQLite. Если не совпадает то коннект по TCP и клонирование самого свежего файла БД SQLite.

2. Поставить сервер MySQL|PostgreSQL|other (нереально, нет выделенного сервера)

3. Ваше предложение


При подключении посылаем широковещательный пакет смысл которого сводится к фразе "Есть кто главный?"
Если главного нет, становимся главным и начинаем отвечать на подобные запросы.
Если главный есть, открываем с ним постоянное соединение и засасываем изменения к базе (или всю базу)
На каждой машине своя актуальная копия данных, но изменения происходят только через главный сервер (нажатием жирной кнопки ДОБАВИТЬ ИЗМЕНЕНИЯ).
Если сервер умирает - происходят выборы нового на основании например приоритета (не давать пользователям ничего изменять в такие моменты, просто лочить нахрен форму с надписью обрыв связи ждите итп)
Короче смысл такой - динамический главный сервер и все изменения только через него, а иначе секс с внедрением механизма транзакций, причем думаю придется все равно с ним что то придумывать, т.к. сервера могут отвалиться, и в то время как они отваливаются отваливается главный сервер, неожиданный shutdown, итп.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Novak
  опции профиля:
сообщение 18.9.2008, 15:50
Сообщение #24


Активный участник
***

Группа: Участник
Сообщений: 319
Регистрация: 15.3.2008
Из: Замкадыш
Пользователь №: 121

Спасибо сказали: 28 раз(а)




Репутация:   6  


Всё равно плохо, ибо ситуация, когда все компы не работают, один включился, потом выключился. потом врубились остальные, приводит к потере данных.
Хотя можно предусмотреть, что запись возможна только при рабочем главном сервере, а передача роли главного сервера возможна только добровольная (т.е. гарантированном копировании данных).
Остальные пусть при отсутствии главного сервака пишут в кеш, или что-то подобное файрберда (Firebird) в плане версионности замутить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.9.2008, 16:58
Сообщение #25


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Novak @ 18.9.2008, 19:50) *
Всё равно плохо
Да!
А идея Мастер-Браузера (главного компа) вообще плохая, намой взгляд. Реализацией арбитража приходилось заниматся в сети из 128 устройств. Отлаживаться долго пришлось.

Надо думать как изменения регестрировать надежно. Тогда можно будет и обмен без блокировок наладить и без главной машины.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 19.9.2008, 10:51
Сообщение #26


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Мне всё-таки кажется, что проще/быстрее/дешевле/надёжнее купить машинку под сервер.
Ну или уж поднять честный кластер на этих 5-7 машинках. :D
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrew Selivanov
  опции профиля:
сообщение 19.9.2008, 12:51
Сообщение #27


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

Спасибо сказали: 15 раз(а)




Репутация:   6  


Цитата(Novak @ 18.9.2008, 16:50) *
Всё равно плохо, ибо ситуация, когда все компы не работают, один включился, потом выключился. потом врубились остальные, приводит к потере данных.
Хотя можно предусмотреть, что запись возможна только при рабочем главном сервере, а передача роли главного сервера возможна только добровольная (т.е. гарантированном копировании данных).

Именно это я и имел ввиду под:
но изменения происходят только через главный сервер (нажатием жирной кнопки ДОБАВИТЬ ИЗМЕНЕНИЯ).

Цитата(Litkevich Yuriy @ 18.9.2008, 17:58) *
А идея Мастер-Браузера (главного компа) вообще плохая, намой взгляд. Реализацией арбитража приходилось заниматся в сети из 128 устройств. Отлаживаться долго пришлось.

Для 5-7 машин и редких изменений данных IMHO покатит схема с блокировками. Все же 128 машин это уже в несколько раз больше.

Теперь про идею в целом - да я и не претендовал на самую лучшую идею :) Высказал свои соображения. Вообще мне кажется очень полезно было бы изучить логику работы протоколов Gnutella, eDonkey, DCPP(ADC) даже там используются серверы. Лично мне особенно нравится как написан DCPP (каждый кто озадачится написанием своего протокола - очень рекомендую!)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.9.2008, 13:01
Сообщение #28


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Есть приборная сеть, в которой реализована идея респределенной БД (название на языке крутится, но вспомнить не могу), узлы могут использовать любые даннын из нее, но там помоему тоже централизованая система.
Реализуется на микроконтроллерах, как следствие не должно требовать ресурсов и т.д. и т.п.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Novak
  опции профиля:
сообщение 19.9.2008, 13:03
Сообщение #29


Активный участник
***

Группа: Участник
Сообщений: 319
Регистрация: 15.3.2008
Из: Замкадыш
Пользователь №: 121

Спасибо сказали: 28 раз(а)




Репутация:   6  


В приципе, очевидно, что для общего случая решения нет, потому нужны данные по фактической работе машин и БД - сколько в среднем работают вместе, бывают ли случаи работы только одной машины или можно при этом лочить БД. В общем, при пределённых условиях "плавающий" сервек - вполне нормальное решение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 19.9.2008, 19:13
Сообщение #30


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Да, ещё можно поднять на машинах распределённую БД. Например Mnesia из стандартной поставки Erlang-а такой является.
Т.е. поднимаем на всех машинах Mnesia - если я ничего не путаю, она сама является отдельным Erlang приложением.
Пишем адаптеры для работы с ней и всё готово. :)
Т.е. на конкретной машине Наша прожка коннектится к локальной Erlang-овской ноде на которой крутится Mnesia.
А она уже заботится о всей распределёнке.

По ходу вариант менее бредовый чем мутить собственную распределённую базу.
Тут нужно написать конектор и разобраться с Mnesia. и по тому и по другому хорошая дока и есть примеры. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Тема закрытаНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 22:08