Серия Elasticsearch --- Основные концепции и принципы работы Elasticsearch

распределенный

основная концепция

В Elasticsearch есть несколько основных концепций, и несколько минут на их понимание помогут вам изучить следующие главы.

NRT

Near Realtime, близкое к реальному времени, имеет два значения: во-первых, есть очень небольшая задержка (около 1 секунды) от записи фрагмента данных до момента, когда эти данные можно будет искать, а во-вторых, операции поиска и анализа на основе Elasticsearch. , что может занять секунды.

Cluster

Кластер, который предоставляет службы индексирования и поиска для внешнего мира, включает в себя один или несколько узлов, и к какому кластеру принадлежит каждый узел, определяется именем кластера (имя по умолчанию — elasticsearch).Если имя кластера неверно, последствия будет серьезным. Предлагается использовать разные имена для НИОКР, тестовой среды, квазипроизводственной и производственной среды, чтобы повысить степень различия.Например, НИОКР использует es-dev, тестирование использует es-test, квазипроизводственная использует es-stg. , а в производственной среде для различения используются такие имена, как es-pro. Для малых и средних приложений кластер может иметь только один узел.

Elasticsearch集群结构

Node

Один экземпляр сервера Elasticsearch называется узлом. Узел является частью кластера. Каждый узел имеет независимое имя. По умолчанию в качестве имени при запуске используется UUID. Его также можно настроить отдельно. Имя узла особенно важно. Для управления и связи узел может присоединяться только к одному кластеру Elasticsearch. Кластер обеспечивает полное хранение данных, функции индексирования и поиска. Каждый узел под ним разделяет вышеуказанные функции (каждые данные будут индексироваться на узле).

shard

Разделение — это единый индекс Lucene. Поскольку емкость хранилища на одном компьютере ограничена (например, 1 ТБ), а данные, индексируемые Elasticsearch, могут быть особенно большими (уровень ПБ и объем записи 30 ГБ/день), один компьютер не может хранить Для всех данных данные в индексе должны быть разделены на несколько сегментов и храниться на нескольких серверах. Использование осколков можно использовать для горизонтального масштабирования, хранения большего количества данных и распределения операций, таких как поиск и анализ, на несколько серверов для выполнения, что повышает общую пропускную способность и производительность кластера. Шарды относительно просты в использовании: вам нужно только указать количество шардов при создании индекса, все остальное сделает Elasticsearch, но после того, как количество шардов будет указано при создании индекса, его нельзя изменить.

replica

Копия индекса, которая полностью копирует содержимое сегмента. Связь между сегментом и репликой может быть «один ко многим». Один и тот же сегмент может иметь одну или несколько реплик, а данные реплики в одном сегменте точно такие же. копия данных шарда, реплика отвечает за следующие три задачи:

  1. В случае сбоя или простоя шарда одну из реплик можно обновить до шарда.
  2. Реплика гарантирует, что данные не будут потеряны (механизм избыточности) и обеспечивает высокую доступность.
  3. Реплики могут совместно использовать поисковые запросы, повышая пропускную способность и производительность всего кластера.

Полное имя сегмента — основной сегмент, а полное имя реплики — сегмент реплики. Количество основных сегментов указывается при создании индекса и не может быть изменено позже. Фрагмент реплики можно изменить позже. По умолчанию значение основного сегмента каждого индекса равно 5, а значение сегмента реплики равно 1, что означает 5 основных сегментов и 5 сегментов реплик, всего 10 сегментов. Таким образом, минимальная конфигурация высокой доступности для Elasticsearch — это 2 сервера.

Index

Индекс, набор документов с одинаковой структурой, аналогичен экземпляру базы данных реляционной базы данных (после того, как тип версии 6.0.0 стал устаревшим, понятие индекса было сокращено до уровня, эквивалентного таблице базы данных). В кластере можно определить несколько индексов, таких как индекс информации о клиенте, индекс классификации товаров, индекс товаров, индекс заказов, индекс комментариев и т. д., каждый из которых определяет свою собственную структуру данных. Все имена в нижнем регистре необходимы для имен индексов. Имена индексов необходимы для операций индексирования, поиска, обновления и удаления.

type

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

Document

Документ, наименьшая единица хранения данных Elasticsearch, формат данных JSON, аналогичный табличным записям (одна строка данных) в реляционных базах данных, с различными определениями структуры.Документы под одним и тем же индексом имеют одинаковую структуру, насколько это возможно.

Принцип работы

Краткий обзор того, как работает Elasticsearch.

Процесс загрузки

Когда узел Elasticsearch запускается, он по умолчанию использует широковещательную рассылку для поиска других узлов в кластере и установления с ним соединений.Если кластер уже существует, один из узлов имеет специальную роль, называемую координационным узлом (координатором, также называемым мастером). узел), отвечающий за управление Состояние узлов кластера.При присоединении нового узла информация о топологии кластера будет обновлена. Если текущий кластер не существует, запущенный узел сам становится узлом координат.node加入集群过程

Процесс взаимодействия приложения и кластера

Хотя Elasticsearch устанавливает узел координат для управления кластером, этот параметр прозрачен для клиента (приложения), и клиент может запросить любой известный ему узел. соответствующий узел для обработки.Если узел не является узлом координат, узел сначала перенаправит запрос узлу координат, а затем его направит координатор, и данные, возвращенные каждым узлом, будут переданы узлу координат для обрабатываются, обобщаются и, наконец, возвращаются клиенту.应用程序与Elasticsearch集群通信过程

Обнаружение валидности узла в кластере

Во время нормальной работы узел координат будет периодически обмениваться данными с узлами в топологии, чтобы проверить, нормально ли работает экземпляр.Если узел не отвечает в течение указанного периода времени, кластер будет считать узел отключенным. Кластер будет перебалансирован:

  1. Перераспределите отключенный узел. У других узлов есть осколок реплики узла. Выберите осколок реплики и обновите его, чтобы он стал основным.
  2. Переместите новые осколки.
  3. Топология обновляется, и запросы, распространяемые на узел, переназначаются текущему обычному узлу.

резюме

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

Сосредоточьтесь на Java с высоким параллелизмом и распределенной архитектуре, большем обмене техническими сухими товарами и опытом, пожалуйста, обратите внимание на общедоступный номер: Сообщество архитектуры JavaJava架构社区