Децентрализация сервиса
Цель
Создание сервиса (php, asp.net, java) который каждый желающий мог бы развернуть на своем сайте.
Сервисы могут быть дружественными по отношению друг к другу. Т.е. метку времени выданную любым из дружественных сервисов можно проверить с помощью любого дружественного ему сервиса.
Вариант 1
Каждый, кто разворачивает сервис меток времени (предположим, желающие есть) имеет возможность выбрать список сервисов, чьи цепочки меток времени он хочет поддерживать.
Так же владелец сервиса может выбрать сервисы, на которых он хочет дублировать свою цепочку меток времени.
Сервис создает и сохраняет «метку времени». После этого он делает запрос-поддержки на дружественные сервисы, передавая им только что созданную «метку времени».
Получив такой запрос-поддержки дружественный сервис вырабатывает «метку времени» на основе переданной метки. Переданная метка сохраняется с указанием ID метки, выработанной на её основе.
Пользователь может производить поиск меток на любом из дружественных серверов, указав URL сервиса.
Вариант 2
Также каждый сервис поддерживает список дружественных серверов. И также посылает на дружественные сервисы запрос-поддержки, содержащий новую дублируемую «метку времени».
В формат «меток времени» добавляется поле Confirm-stamp, которое содержит подтверждаемую метку времени (целиком).
Правда возможны большие «паразитные» связи, когда один сервис подтверждает метку второго, создавая при этом свою метку – которую отсылает для подтверждения третьему. Третий создает новую метку на основе этого запроса и пять отсылает её для подтверждения второму. Второй подтверждает у первого… и так до бесконечности.
Этот вопрос тоже еще надо решить.
Вариант 3
Аналогичен предыдущему варианту, за исключением:
- Сервис передаёт запросы-поддержки всем дружественным серверам одновременно.
- Одна метка времени, выдаваемая пользователю, может содержать произвольное число полей Confirm-stamp от всех дружественных серверов.
Как такое может произойти что сервис получил запросы на подтверждение метки времени от нескольких сервисов одновременно?
Если же предполагается отсылка данных пользователя, то зачем тогда дополнительное поле, пусть сервис сразу выдает кучу меток от нескольких серверов. Но тогда проверить чужую метку на другом сервисе будет не возможно, если не добавить поиск по полям hash, но это все же не есть проверить метку, а проверить заверял ли пользователь свой файл еще и на другом сервисе и когда он это делал (неважно автоматически или вручную)
Это я тоже считаю не правильным, но ведь из того что метка содержит одно поле Confirm-stamp не означает что нельзя отправить несколько запросов на подтверждение разным сервисам.
Мы смотрим на поле Confirm-stamp по-разному. Я предлагаю включать в это поле метку, которую подтверждает родительская. А вы включить в это поле доказательство правильности родительской метки. Что лучше?? В моем варианте не надо ждать ответов от дружественных сервисов (клиент получает метку сразу). Они могут отправлять запросы на подтверждение и попозже, возможно посылать запросы целыми пачками, тогда как раз можно несколько полей Confirm-stamp (так как я их предлагаю использовать) предусмотреть, что бы одна родительская метка заверяла сразу целую пачку
- Дружественные сервера, получив запрос на подтверждение метки, не делают собственные запросы-поддержки во избежание рекурсий.
Какой вариант предпочтительнее? Есть ли другие варианты?
Operational Transformation
Google Wave Operational Transformation
комментариев: 11558 документов: 1036 редакций: 4118
На мой взгляд сперва надо решить следующие вопросы:
1. Менять ли формат "меток времени" (добавить новое поле Confirm-stamp)?
Если менять формат, то:
2. В поле Confirm-stamp записывается "метка времени" которую подтверждает данная(родительская) метка?
Или в поле Confirm-stamp записывается что-то что подтверждает данную "метку времени"?
комментариев: 11558 документов: 1036 редакций: 4118
Моё мнение — да. И повысить версию в Timestamp-version.
На мой взгляд, лучше второй вариант, желательно в формате полного url до подтверждающей метки, чтобы можно было её запросить в автоматическом режиме. Это позволит пользователю получить свою метку у данного сервиса и больше не морочить себе голову, но при необходимости взять дополнительные подтверждения, полагаясь лишь на информацию в полученной метке. Ну, и, так в метке могут содержаться ссылки на несколько подтверждений. Примерно так:
Не согласен – API доступа может смениться, оно то к формату никакого отношения не имеет.
Описанный вариант это практически тоже самое что в ручную пройтись по списку сервисов меток времени и сделать на каждом свою метку.
Вижу недостаток – чем больше дружественных серверов (а к множеству серверов и стремимся) тем дольше пользователь ждет изготовления метки.
Еще не учитывается момент:
Допустим есть сервисы A, B, C, D.
B и С – это дружественные сервера для A.
D – это дружественный сервис для C.
Делая метку на сервисе A пользователь по идее должен получить возможность проверки своей метки и на сервисе D.
(полагаю описанная ситуация как раз и описывается по ссылкам выше (еще не читал))
комментариев: 11558 документов: 1036 редакций: 4118
Причём тут API? Есть такая общепринятая штука, как permalink. Сервис должен обеспечивать доступ к меткам по постоянным ссылкам; они не обязаны быть стандартизированными, только неизменными.
Мне кажется, что каким образом сервис предоставляет цепочки меток никаким образом оговариваться не должно. Похорошему и к урл сервиса привязки нежелательны (ИМХО).
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 11558 документов: 1036 редакций: 4118