#neo4j #haproxy
#neo4j #haproxy
Вопрос:
Я читал руководство по эксплуатации Neo4j по сегментированию кэша и публикации по всему Интернету, однако я с трудом могу найти какой-либо подробный пример того, как настроить HAProxy для сегментирования кэша (да, тот, что приведен в руководстве по эксплуатации, довольно краткий) на реальном графике, который может содержать несколько меток узлов.
Кто-нибудь когда-нибудь делал это раньше? Было бы замечательно, если бы вы могли поделиться своим опытом.
Кроме того, я немного запутался в механизме способа сегментирования графика с использованием HAProxy. Как подграфы кэшируются на определенных подчиненных устройствах, просто предоставляя правила в HAProxy? Я был удивлен, узнав, что сегментирование кэша не обрабатывается Neo4j.
Ответ №1:
Цель состоит в том, чтобы отправлять запросы, попадающие в одну и ту же область вашего графика, всегда в один и тот же экземпляр. Это, конечно, означает, что данные запроса указывают регион. То, что использовать в качестве «индикатора региона», сильно зависит от структуры и формы вашего графика.
Во многих случаях клиентских приложений люди успешно использовали текущий идентификатор пользователя и устанавливали его в качестве дополнительного http-заголовка, который затем вычислялся haproxy.
Комментарии:
1. То есть, при правильной настройке HAProxy сегментирование кэша выполняется автоматически после перезапуска Neo4j?
2. @ToddLeo дело не столько в сегментировании кэша, сколько в близости кэша: используя индикатор, вы повышаете вероятность попадания в «теплый» кэш; это быстрее и уменьшает отток кэша, потому что вы уменьшаете подмножество считываемых данных (хотя это зависит от того, сколько данных обрабатывается за запрос).
3. @FrankPavageau Как заранее загружать «теплый» кеш? Индикатор только определяет, к какому узлу отправляется запрос, не так ли?
4. @ToddLeo Кэш не загружается заранее, его загрузит первый запрос, попадающий на определенную страницу. Но как только вы это сделаете, состояние кэша станет более стабильным.
5. @FrankPavageau Означает ли это, что кэш полностью загружен после прохождения всех узлов?