Помогите с организацией системы кеширования

Anton

Just Programmer
Помогите с организацией системы кеширования

Всем добрый день!

Совсем проблема загрызла. :-(

Есть система. В ней HTTP серверов несколько и работают они через лоад балансер. Т.е. на какой именно
HTTP сервер попадет сл. запрос пользователя неизвестно. Соотвественно все что в плане файлов должно быть
доступно независимо от сервера на котором сейчас испольняется запрос должно лежать на сетевом диске. В нашем случае это файлы
сессий, исходники и т.п. У сетевой файловой системы есть большой недостаток, это низкая
производительности (по сравнению с локальным диском).

Теперь сама проблема. Для разгрузки БД часть результатов запросов кешируется с использованием
файловой системы. Т.к. сетевая файловая система такой нагрузки не выдерживает категорически то на
каждом HTTP сервере приходиться хранить свой набор записей кеша. Само по себе это не страшно ...
работает вполне нормально. Но дальнейший рост нагрузки на систему потребовал дальнейшей
оптимизации работы с БД. Один из методов требует того что бы можно было принудительно не дожидаясь
времени устаревания записи в кеше ресетить конкретные записи в нем.

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

Размещать на сетевом дискке кеш ... ситевой диск не тянет.
А если размещать как сейчас то фиг поймешь как ресетить записи ... :-(

Вот собственно и сам вопрос ... как бы реализовать такой функцинал кеша при данной аритектуре железяк?
 

Tor

Новичок
нужно купить взрослую дисковую стойку и оптикой прикрутить ее ко всем нуждающимся

а еще кешировать запросы к базе должна сама база, тогда это будет доступно всем клиентам
 

Anton

Just Programmer
To Tor:
Первый совет хорош, но к сожелению недоступен.

А вот можно по подробнее про второй метод? :) Это уже интереснее. Мы используем PostgreSQL 8.1 как там такое реализуеться?
 

Tor

Новичок
балансер с кучей серверов есть, а денег на стойку нет?
неверю

про кеш базы надо читать в документации к ней
 

Anton

Just Programmer
To Tor:
Почему недоступно это уже из другой тематике, которая к программированию неимеет никакого отношения. Если можно было бы сейчас это реализовать то уже сделали бы и я не имел головной боли. :-(

Я понял про какой кеш Вы говарите. Резервы его мы уже выбрали. Дальнейший эффект дает только сторонний механизм.

Хотя конечно когда я сказал что кешируются только результаты запросов к БД, я был неправ. Это я немного упростил модель, каюсь мой грех, не подумал. На самом деле кешируються не только результаты запросов но и уже готовые объекты сущностей созданные в PHP. Большую часть которых конечно можно будет свести в кешированию запросов к БД ... но все же лучше что бы это было не так напрямую с БД связанно.
 

Tor

Новичок
тогда имеет смысл разделить контент на статику и динамику

статика периодически генерится скриптами , лежит на отдельном сервере и быстро отдается по требованию

динамика полностью генерится на других серверах через балансер
 

Anton

Just Programmer
В том и прикол что выборки из БД динамических данных она как раз и грузит БД сильно. Вот это и хочеться оптимизировать.

Т.е. динамические данные делим на совсем днамические и неочень динамические :))) Вот неочень динамические мы тоже засовываем в кеш, а так как мы можем отслеживать момент их изменения то мы по этому моменту ресетим записи в кеше и вуаля:)).

А разделения по серверам нам неподходит. Так как сервер БД он один и перегружен именно он. А ресурсов HTTP достаточно и увеличивать их за счет балансера можно увеличивать фактически неограниченно, а вот базу класторизовать мы неможем и о е ересурсах надо печься оооочень так как именно она самое узкое место.
 

Tor

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

Anton

Just Programmer
С железяками у нас грубо говаря так ... какие железяки нам дают, на таких и сидим:)) Мы их сами не выбираем и не покупаем. Поэтому кластера нам пока не светит это точно.

А писать я и не хочу что-то новое, если есть что-то готовое то с удовольствием софтину внедрим какую-то стороню. Только вот какую?

Вот такая жопа, блин :)
 

Tor

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

Anton

Just Programmer
To moxnatiy:
Мне кажеться что этьим моему горю не помогешь, так как memcache как я понял работает опять же на одном компе ...а сиситема которая успешно справляеться с работой на одном компе у нас и так есть. :-(

-~{}~ 19.12.05 11:38:

To moxnatiy:
Ну я и тупой!!! Кажисть действительно поможет!!! Пошел тестировать!!! Ведать в пятницу уже голвоа не варила!!! ОООГРОМНОЕ СПАСИБО!!!!!! ПРОСТО ОГРОМНОЕ!!!!!
 
Сверху