Вот возникла интересная задача. Скорее даже теоретическая.
Пусть у нас есть некоторая сетевая система с несколькими равноправными серверами. Клиентское ПО может подключится к любому и конкретный выбор не отражается на поведении. Клиентское ПО пишет и читает данные с сервера. Время от времени сервера обмениваются данными полученными от клиентов. Пожалуй наиболее похожая система это Active Directory для Windows 2000 и выше.
Проблема: регистрация пользователя.
Пусть пользователь Вася Пупкин зашёл на сервер A и зарегистровал логин vasja, а пользователь Вася Тяпкин зашёл на сервер B и тоже зарегистрировал логин vasja. Очевидна проблема — что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)? Тем более что до того как ситуация будет обнаружена оба пользователя могут записать некоторые данные, связанные с ними.
Я не хочу
Заставлять регистрироваться одновременно на всех серверах
Нарушать равноправие серверов и помечать какой-либо сервер как главный.
Удалять какие-либо учётные записи и связанные с ними данные.
A>Проблема: регистрация пользователя. A>Пусть пользователь Вася Пупкин зашёл на сервер A и зарегистровал логин vasja, а пользователь Вася Тяпкин зашёл на сервер B и тоже зарегистрировал логин vasja. Очевидна проблема — что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)? Тем более что до того как ситуация будет обнаружена оба пользователя могут записать некоторые данные, связанные с ними. A>Я не хочу A> Заставлять регистрироваться одновременно на всех серверах A> Нарушать равноправие серверов и помечать какой-либо сервер как главный. A> Удалять какие-либо учётные записи и связанные с ними данные.
Так это вроде стандартно
1. Сервер, получивший запрос на регистрацию, отсылает всем остальным серверам сообщение о блокировке логина
2. Регистрирует пользователя
3. Отсылает всем серверам, что логин зарегистрирован.
Единственный вопрос — как сервера будут узнавать друг о друге. Без этого никак.
Re: Распределённая база пользователей и регистрация.
Здравствуйте, adontz, Вы писали:
A>Вот возникла интересная задача. Скорее даже теоретическая.
A>Пусть у нас есть некоторая сетевая система с несколькими равноправными серверами. Клиентское ПО может подключится к любому и конкретный выбор не отражается на поведении. Клиентское ПО пишет и читает данные с сервера. Время от времени сервера обмениваются данными полученными от клиентов. Пожалуй наиболее похожая система это Active Directory для Windows 2000 и выше.
A>Проблема: регистрация пользователя. A>Пусть пользователь Вася Пупкин зашёл на сервер A и зарегистровал логин vasja, а пользователь Вася Тяпкин зашёл на сервер B и тоже зарегистрировал логин vasja. Очевидна проблема — что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)? Тем более что до того как ситуация будет обнаружена оба пользователя могут записать некоторые данные, связанные с ними. A>Я не хочу A> Заставлять регистрироваться одновременно на всех серверах A> Нарушать равноправие серверов и помечать какой-либо сервер как главный. A> Удалять какие-либо учётные записи и связанные с ними данные.
Ок. А почему бы не классифицировать сервера по выполняемым задачам? Получается, если четыре сервера могут раздавать данные, а бсолютно равноправно, то регистрироваться действительно нельзя, а кроме того нужно ещё считать например деньги за проспотренный контент и проводить прочее административное журналирование, т.о. ИМХО всплывает пятый сервер — сервер регистрации и у правления, а так же он же мршрутизатор и редиректор .... но сам контент он не предоставляет, такая модель помоему имеет право на жизнь ...
Per Aspera Ad Astra
Re[2]: Распределённая база пользователей и регистрация.
Здравствуйте, _INDY_, Вы писали:
_IN>Ок. А почему бы не классифицировать сервера по выполняемым задачам? Получается, если четыре сервера могут раздавать данные, а бсолютно равноправно, то регистрироваться действительно нельзя, а кроме того нужно ещё считать например деньги за проспотренный контент и проводить прочее административное журналирование, т.о. ИМХО всплывает пятый сервер — сервер регистрации и у правления, а так же он же мршрутизатор и редиректор .... но сам контент он не предоставляет, такая модель помоему имеет право на жизнь ...
Здравствуйте, Mikhail Polykovsky, Вы писали:
MP>1. Сервер, получивший запрос на регистрацию, отсылает всем остальным серверам сообщение о блокировке логина MP>2. Регистрирует пользователя MP>3. Отсылает всем серверам, что логин зарегистрирован.
MP>Единственный вопрос — как сервера будут узнавать друг о друге. Без этого никак.
Сервера друг о друге знают, но это не спасает. Представим себе такой сценарий.
Есть пользователи P и Q и сервера X и Y
Связи P-X, Q-Y работают, а вот связи P-Y, P-Q, Q-X, X-Y не работают. Скажем сетевой сбой. Это вполне вероятно если P и X в одной подсети, а Q-Y в другой.
P послал запрос на регистрацию логина vasja серверу X, а Q послал аналогичный запрос серверу Y.
X разослал всем оповещения, но до Y они не дошли, потому что сетевой сбой. И наоборот от Y к X тоже ничего не попало.
И чё мне делать?
А зачем аутентифицировать на всех серваках, а не отдельном сервере.
В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.
Re[2]: Распределённая база пользователей и регистрация.
Здравствуйте, GlebZ, Вы писали:
GZ>А зачем аутентифицировать на всех серваках, а не отдельном сервере. GZ>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.
Здравствуйте, adontz, Вы писали:
A>что делать с двумя одинаковыми логинами (пользователи идентифицируются по GUIDам, но для аутенфикации используются логины)?
кроме логина использовать дополнительно "имя" сервера. Например: vasia.pupkin@google.com vs. vasia.pupkin@microsoft.com.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>кроме логина использовать дополнительно "имя" сервера. Например: vasia.pupkin@google.com vs. vasia.pupkin@microsoft.com.
Здравствуйте, adontz, Вы писали:
GZ>>А зачем аутентифицировать на всех серваках, а не отдельном сервере. GZ>>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.
A>А если самый главный сервер станет недоступен?
А причем тут главный сервер. Доступен должен быть сервер с Kerberos для всех остальных серваков. Есть также в WSE3 какая-то фигня, которая делает распределенную аутентификация с разными web сервисами. Но что именно такое — не смотрел за ненадобностью. Возможно что-то похожее на то, что нужно тебе.
Re[3]: Распределённая база пользователей и регистрация.
Здравствуйте, adontz, Вы писали:
GZ>>А зачем аутентифицировать на всех серваках, а не отдельном сервере. GZ>>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.
A>А если самый главный сервер станет недоступен?
А причем тут главный сервер. Доступен должен быть сервер с Kerberos для всех остальных серваков. Есть также в WSE3 какая-то фигня, которая делает распределенную аутентификация с разными web сервисами. Но что именно такое — не смотрел за ненадобностью. Возможно что-то похожее на то, что нужно тебе.
Re[3]: Распределённая база пользователей и регистрация.
Здравствуйте, adontz, Вы писали:
GZ>>А зачем аутентифицировать на всех серваках, а не отдельном сервере. GZ>>В случае с Kerberos, при аутентификации к любому серваку, он прокидывает аутентифицирующую информацию на сервер Kerberos. Тот генерит некоторый уникальный тикет. И далее пользователь работает равноправно со всеми сервисами пользуясь данным тикетом. И сервер в любой момент может подтвердить данный тикет с помощью выделеного сервера Kerberos. Active Directory содержит в себе как раз Kerberos.
A>А если самый главный сервер станет недоступен?
А причем тут главный сервер. Доступен должен быть сервер с Kerberos для всех остальных серваков. Есть также в WSE3 какая-то фигня, которая делает распределенную аутентификация с разными web сервисами. Но что именно такое — не смотрел за ненадобностью. Возможно что-то похожее на то, что нужно тебе.
Re[3]: Распределённая база пользователей и регистрация.
Здравствуйте, adontz, Вы писали: A>А если главный сервер будет недоступен?
Не разрешать регистрироваться, вот и всё ... а услуги предоставлять можно, он же не на всегда недоступен ...
Per Aspera Ad Astra
Re[3]: Распределённая база пользователей и регистрация.
adontz wrote:
> ANS>кроме логина использовать дополнительно "имя" сервера. Например: > vasia.pupkin@google.com vs. vasia.pupkin@microsoft.com. > > Хмм.... это идея. Надо подумать, спасибо!
Ну с этого и надо было начинать. Просто я подумал, что требуется возможность зарегистрироваться на
vasia.pupkin@microsoft.com, а потом, когда Майкрософт упадёт, дать возможность пользователю залогиниться на
vasia.pupkin@google.com и использовать все данные, которые были на майкрософтовском серваке. Это и означает
распределённость. А так — просто несколько разных серверов, в чём распределённость?
Хотя действительно, так ли часто регятся юзеры по сравнению с частотой логинов? Пусть всё же будет один выделенный
сервак для регистрации.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: Распределённая база пользователей и регистрация.
_>Ну с этого и надо было начинать. Просто я подумал, что требуется возможность зарегистрироваться на _>vasia.pupkin@microsoft.com, а потом, когда Майкрософт упадёт, дать возможность пользователю залогиниться на _>vasia.pupkin@google.com и использовать все данные, которые были на майкрософтовском серваке.
Да, но тут какое дело. Если я регистрируюсь на microsoft.com то к логину добавляется microsoft.com Если microsoft.com не доступен, то я не могу зарегистрироватся с логином оканчивающимся на microsoft.com. Это всё же меньшее зло, чем два одинаковых логина или невозможность регистрации.
Здравствуйте, adontz, Вы писали:
A>Да, но тут какое дело. Если я регистрируюсь на microsoft.com то к логину добавляется microsoft.com Если microsoft.com не доступен, то я не могу зарегистрироватся с логином оканчивающимся на microsoft.com. Это всё же меньшее зло, чем два одинаковых логина или невозможность регистрации.
Кстати, я всегда думал, что именно так работает винда. Типа "по мне лазит Вася авторизованый машиной Ф, и Вася с машины З".
adontz wrote:
> _>Ну с этого и надо было начинать. Просто я подумал, что требуется > возможность зарегистрироваться на > _>vasia.pupkin@microsoft.com, а потом, когда Майкрософт упадёт, дать > возможность пользователю залогиниться на > _>vasia.pupkin@google.com и использовать все данные, которые были на > майкрософтовском серваке. > > Да, но тут какое дело. Если я регистрируюсь на microsoft.com то к логину > добавляется microsoft.com Если microsoft.com не доступен, то я не могу > зарегистрироватся с логином оканчивающимся на microsoft.com. Это всё же > меньшее зло, чем два одинаковых логина или невозможность регистрации.
Тогда пользователь должен будет явно вводить
vasia.pupkin@microsoft.com или vasia.pupkin@google.com.
Т.е. юзер хочет зарегистрироваться как vasia.pupkin, а система ему говорит: "Ты на самом деле будешь не Вася, а Вася
Майкрософов, запомни это и никогда не забывай!"
Иначе как можно будет узнать, какой именно сервер авторизации (или данные какого сервера) в данный момент использовать
(в распределённой системе)?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Распределённая база пользователей и регистрация.
Здравствуйте, kan_izh, Вы писали:
_>Тогда пользователь должен будет явно вводить _>vasia.pupkin@microsoft.com или vasia.pupkin@google.com.
Не, ну microsoft.com, google.com будет в комбобоксе.
_>Т.е. юзер хочет зарегистрироваться как vasia.pupkin, а система ему говорит: "Ты на самом деле будешь не Вася, а Вася _>Майкрософов, запомни это и никогда не забывай!"
Здравствуйте, adontz, Вы писали:
A>Идея с одной стороны здравая, а с другой я не вполне уверен что этот e-mail мне потом где-нибудь ещё понадобится. A>Но я подумаю.
Например при активации аккаунта.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Распределённая база пользователей и регистрация.
adontz wrote:
> Не, ну microsoft.com, google.com будет в комбобоксе.
Интересно, на основании чего юзер будет выбирать элемент в комбобоксе?
> _>Т.е. юзер хочет зарегистрироваться как vasia.pupkin, а система ему > говорит: "Ты на самом деле будешь не Вася, а Вася > _>Майкрософов, запомни это и никогда не забывай!" > > Ну а с электронной почтой не так? И все живы
Там не распределённая система. Если microsoft.com упадёт, то vasia.pupkin@microsoft.com потеряет всё, и если
microsoft.com лежит, то никто не узнает, что vasia.pupkin@microsoft.com вообще существует. Хотя, может автору поста это
и нужно... не знаю, может я не так его требования понял:
Время от времени сервера обмениваются данными полученными от клиентов
почта это не делает.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[8]: Распределённая база пользователей и регистрация.
Здравствуйте, kan_izh, Вы писали:
_>Интересно, на основании чего юзер будет выбирать элемент в комбобоксе?
Личные предпочтения
_>Там не распределённая система. Если microsoft.com упадёт, то vasia.pupkin@microsoft.com потеряет всё, и если _>microsoft.com лежит, то никто не узнает, что vasia.pupkin@microsoft.com вообще существует. Хотя, может автору поста это _>и нужно... не знаю, может я не так его требования понял: _>
Время от времени сервера обмениваются данными полученными от клиентов
_>почта это не делает.
Нет нет, ничего он не потерят — "сервера обмениваются данными полученными от клиентов". Этот Вася и всё что он натворил со временем появится на всех серверах.