Как создать распределенную общую транзакционную память в веб-ферме Azure? - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть веб-служба REST, работающая в лазурном веб-ферме, которую нужно защитить от вложений воспроизведения.

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

Сейчас я использую базу данных для создания записи с одноразовым номером в качестве первичного ключа. Это означает, что если один веб-сервер может вставить строку в базу данных, я уверен, что ни один другой веб-сервер не получил запрос с таким же одноразовым номером. На самом деле я использую табличное хранилище (с ключом строки / ключом раздела в качестве первичного ключа) ... а не SQL Azure.

Моя проблема в том, что хранилище таблиц довольно медленное (для вставки строки требуется 20-30 мс), и я ищу более быстрое решение.

Существует ли распределенная разделяемая библиотека транзакционной памяти для .NET? Важно, чтобы я не вводил ни одной точки отказа (например, с базой данных в памяти, работающей на одном сервере).

Бонус: поскольку он работает В Azure я не знаю имен или IP-адресов своих серверов, и количество серверов в веб-ферме меняется довольно часто.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Служба кэширования AppFabric возможно?http://msdn.microsoft.com/en-us/magazine/gg983488.aspx

0 голосов
/ 14 декабря 2011

Я бы рассмотрел memcached (ссылка для использования в Azure здесь: http://blog.smarx.com/posts/memcached-in-windows-azure), поэтому одноразовый номер сохраняется быстро, затем для обеспечения устойчивости я бы также (асинхронно) сохранял одноразовый номер в табличном хранилище.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...