2017-02-08 23 views
0

У меня есть служба REST, которую пользователи используют, и кэш-фонарь перед ним, чтобы защитить базу данных от слишком большого количества запросов.Является ли плохой архитектурный выбор для использования как лакокрасочного, так и эластичного поиска?

Новое требование заключалось в том, чтобы выполнять быстрый поиск в наборе данных, предоставляемом нашим сервисом, и мы начали использовать Elasticsearch для этой цели.

Это плохой подход, чтобы хранить как лак, так и эластичный? Должны ли мы использовать только Elasticsearch?

ПРИМЕЧАНИЕ: тот факт, что Elastic является системой NRT, не является проблемой.

Благодаря

ответ

1

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

Таким образом, наша арка (супер высокий уровень) выглядит как балансировки нагрузки> лак> Apache Web машина

Этих веб-машина имеет в качестве движка как elasticsearch и MySQL (среди прочего).

Наш сайт в значительной степени разбит на две основные области: 1.) домашнюю страницу и т. Д., Которая в значительной степени управляется CMS и html, отображаемыми на сервере. 2.) Одностраничные веб-приложения, у которых есть успокоительные конечные точки. Клиент отвечает за предоставление собственного HTML (мы используем здесь реакцию).

Для более тяжелого материала CMS мы делаем лаковый кэш, что можем. Для всего, что полагается на elasticsearch, мы пропускаем лак на эти запросы. Наши шаблоны URL для такого рода вещей предсказуемы, поэтому это просто одна строфа в varnish.vcl.

Идея быть, поиск должен быть текущим. Мы также не очень часто используем ES для контента типа CMS, но больше всего веб-приложений для одной страницы на нашем сайте. Материал CMS меняется только несколько раз в день, но материал SPA имеет постоянные изменения (около 25 операций индекса в секунду) в кластере.

0

Примите во внимание: https://github.com/elastic/elasticsearch/issues/16024

Varnish обрезает тело JSON из запроса GET, потому что это недопустимо. Поэтому добавление его непосредственно перед Elastic Search может вызвать проблемы. Добавление простого API перед Elastic Search для ваших поисковых запросов может сделать трюк.