Индексная репликация и Выравнивание нагрузки

Вам нужно получить внутренний словарь, сначала получая значение клавиши diagnostics, что даст вам вложенный словарь. Затем получите значение клавиши updated_at из этого:

jData['diagnostics']['updated_at']

В своем коде выполните:

for x in jData['diagnostics']:

вы перебираете вложенные ключи dict которые являются строками. Таким образом, когда вы подпишите первый ключ строкой, т. Е. updated_at, вы получите TypeError о том, что строковые объекты могут индексироваться только целыми числами.

6
задан user40907 21 March 2009 в 23:09
поделиться

4 ответа

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

Тем не менее я собираюсь сделать точно, что сам, для проекта я продолжаю работать. Различие - то, что, так как мы используем PHP для frontend, мы реализовали lucene в сервере сокета, который принимает запросы и возвращает список первичных ключей дб. Мой план состоит в том, чтобы продвинуть изменения в сервере и сохранить их в очереди, где я сначала сохраню их в индекс памяти и затем сброшу индекс памяти к диску, когда загрузка будет достаточно низкой.

Однако, это - сложная вещь сделать, и я установлен при выполнении довольно большой работы, прежде чем у нас будет стабильное конечное решение, это достаточно надежно.

3
ответ дан 17 December 2019 в 04:52
поделиться

На основе опыта Lucene не должен иметь никакой проблемы при масштабировании тысячам пользователей. Тем не менее, если Вы только используете свой второй Сервер приложений для выравнивания нагрузки, а не для заменяют ситуации, необходимо быть прекрасным хостингом Lucene на только одном из тех серверов и доступа к нему через NDS (если у Вас есть среда Unix), или общий каталог (в среде окон) со второго сервера.

Снова, это зависит от Вашей определенной ситуации. Если Вы говорите о наличии миллионов (5 или больше) из документов в Вашем индексе и необходимости в Вашем индексе lucene, чтобы быть failoverable, можно хотеть изучить Solr или Katta.

1
ответ дан 17 December 2019 в 04:52
поделиться

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

Существует сервер "публикации", который ответственен за генерацию индексов, которые будут использоваться. Существует реализация услуги, которая обрабатывает рабочие процессы, используемые для создания этих индексов, а также способности сигнализировать о завершении (пользовательское управление API, выставленный через веб-сервисы WCF).

Существует два "стоящих с сайтом" сервера Lucene.NET. Доступ к API предоставляется через WCF Services сайту. Они находятся позади физической подсистемы балансировки нагрузки и будут периодически "проверять с помощью ping-запросов" сервер публикации, чтобы видеть, существует ли более актуальный набор indicies, чем, что в настоящее время работает. Если это, это запрашивает блокировку с сервера публикации и обновляет локальные индексы инициированием передача в локальную "входящую" папку. Однажды там, это - просто вопрос приостановки искателя, в то время как индекс присоединяется. Это затем выпускает свою блокировку, и другой сервер доступен, чтобы сделать то же.

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

Просто некоторые случайные вещи, которые мы рассматриваем:

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

  • Мы надеемся видеть, предоставляет ли подсистема балансировки нагрузки программный доступ, чтобы иметь узел, удаляют и добавляют себя от кластера. Это уменьшило бы шанс, что пользователь испытывает подвешивание, если он получает доступ во время обновления.

  • Мы смотрим "на передачу запроса", если кластерное управление не возможно.

  • Мы посмотрели на solr, также. В то время как многое из него просто работает из поля, у нас есть некоторое время места размещения для исследования этого пути как осуществления изучения - изучение вещей как Lucene.NET, улучшение нашего WF и навыков WCF и реализации ASP.NET MVC для фронтенда управления. Худший вариант развития событий, мы идем с чем-то как solr, но приобрели опыт в некоторых навыках, которые мы надеемся изменять к лучшему.

1
ответ дан 17 December 2019 в 04:52
поделиться

Я создаю индексы на публикуемых бэкэнд-машинах в файловую систему и копирую их в маркетинг. Таким образом, каждый узел, сбалансированный по нагрузке и сбою, имеет свой собственный индекс без задержки в сети.

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

0
ответ дан 17 December 2019 в 04:52
поделиться