Фильтр Исапи - состояние

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

1 ответ

Решение

Как ваши рабочие процессы распределены по вашим серверам? У вас есть один сервер с одним рабочим процессом или несколько серверов?

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

  • Если у вас есть несколько рабочих процессов на одном сервере, вы можете использовать именованную общую память. Я использовал это раньше в фильтрах ISAPI для обмена информацией, и это работает довольно хорошо. Это должно даже позаботиться о параллелизме для вас. Вы можете прочитать больше здесь: http://msdn.microsoft.com/en-us/library/aa366551%28v=vs.85%29.aspx

  • Если вы распределены по нескольким серверам, вы можете использовать распределенный кеш, такой как memcached. Это сложнее в настройке, но это даст вам хорошую производительность. Здесь есть нить по настройке: api C++ для memcache

Другие вопросы по тегам