ArcGIS GeoEvent Server использует Apache Kafka для управления всем трафиком событий от входов до сервисов GeoEvent, а затем снова от сервисов GeoEvent до выходов.Kafka предоставляет набор отделов (очередей сообщений) для событий, которые будут опубликованы, и для потребителей, подписывающихся на эти сообщения о событиях. Очереди отделов Kafka управляются на диске для постоянного хранения и для восстановления очередей сообщений после падения системы.
GeoEvent Server Kafka основы отдела
Каждый вход и выход GeoEvent Server имеет свой собственный Kafka отдел.
Каждый Kafka отдел разбит на несколько разделов. Разделы разбивают события на три отдельные очереди сообщений для распараллеливания. Каждый Kafka отдел настроен по умолчанию создавать три раздела отделов. Подписчик этого отдела раскрутит несколько потребителей событий, которые работают параллельно, чтобы повысить производительность.
Обратите внимание, что Kafka создает и управляет большим набором разделов для потребительских посторонних отделов. Такое большое количество разделов – то, что обеспечивает системе хорошую производительность благодаря распараллеливанию.
Общие рекомендации по размеру диска
Для новой установки GeoEvent Server сервису ArcGIS GeoEvent Gateway требуется как минимум 1 ГБ дискового пространства. Каждый вход или выход, потребует минимум 360 МБ дополнительного дискового пространства перед обработкой каких-либо событий. Обратите внимание, что все размеры являются минимальными оценками и, вероятно, будут увеличиваться по мере увеличения количества элементов, которые вы настраиваете в GeoEvent Server.
Настройки KafkaGeoEvent Server
Вы можете изменить поведение, Kafka например GeoEvent Server редактируя Kafka файл свойств. Основная причина для изменения файла свойств заключается в изменении расположения файлов на диске. Тем не менее, существуют редкие случаи, когда другие свойства может потребоваться изменить.
Файл свойств Kafka
Файл свойств, содержащий Kafka настройки (kafka.properties) для GeoEvent Server можно найти в следующих местоположениях, в зависимости от вашей операционной системы.
- Windows (по умолчанию) – C:\Program Files\ArcGIS\server\geoevent\gateway\etc\kafka.properties
- Linux (по умолчанию) – /home/arcgis/server/GeoEvent/gateway/etc/kafka.properties
Настройки по умолчанию в этом файле установлены на оптимизацию производительности за счет увеличения использования диска.
Хранилище отделов
Отделы в Kafka GeoEvent Server хранятся в одном из следующих местоположений, в зависимости от вашей операционной системы.
- Windows (по умолчанию) -– C:\ProgramData\ESRI\GeoEvent-Gateway\kafka\logs\
- Linux (по умолчанию) – /home/arcgis/.esri/GeoEvent-Gateway/config.[machine name]/kafka/logs (напр. /home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01/kafka/logs)
Для изменения местоположения Kafka отделов, измените следующие свойства, в зависимости от вашей операционной системы.
Свойства умолчанию Windows
- gateway.data.dir=C://ProgramData//Esri//GeoEvent-Gateway//
- log.dirs=kafka/logs
Свойства умолчанию Linux
- gateway.data.dir=/home/arcgis/.esri/GeoEvent-Gateway/config.[machine name] (напр. /home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01)
- log.dirs=kafka/logs
Разделы отделов
В GeoEvent Server по умолчанию 3 раздела в отделе. Таким образом, если вы изучите папку, в которой хранятся ваши отделы, вы найдете три папки с одинаковыми именами и индексами в конце (-1, -2 и -3). Внутри каждой папки раздела, Kafka ведется журнал всех данных в разделе отдела на данный момент. Для изменения числа разделов в отделе измените следующее свойство.
- num.partitions=3
Размеры файлов раздела в отделе
По умолчанию каждый Kafka размер журнал раздела в отделе начинается с минимума в 200 Мб и растет до максимума в 100 МБ, прежде чем создается новый файл журнала. Можно иметь несколько файлов журнала в разделе одновременно. В крайних случаях высокоскоростных потоков событий каждая папка раздела в отделе может увеличиваться в 3–4 раза по сравнению с максимальным размером файла журнала (до 300–400 МБ). Для одного отдела с тремя разделами общее дисковое пространство может вырасти до 900 – 1200 МБ в любой момент. Умножив этот максимальный размер на число входов и выходов вы получите необходимый размер диска, нужный для Kafka в GeoEvent Server. Свойство ниже контролирует максимальный размер файла журнала перед переходом на новый файл (по умолчанию 100 МБ).
- log.segment.bytes=104857600
Если вы работаете с высокоскоростными данными, можете получить несколько файлов журнала по 100 МБ, в противном случае у вас может быть только один. Для данных с меньшей скоростью вы можете уменьшить размер, изменив это свойство. Для данных с большей скоростью вы можете увеличить размер, изменив это свойство. Если вы установите слишком малый размер, то Kafka постоянно будет происходить переход на новые файлы. Если вы установите слишком большой размер, то Kafka будет редко переходить на новые файлы журнала и старые события будут храниться в очереди дольше, чем необходимо.
Другая настройка, влияющая на количество потребляемого дискового пространства Kafka разделами отделов – байты хранения. Это свойство дает указание Kafka всегда хранить минимальный объем данных. По умолчанию значение свойства 100 МБ. Поэтому даже если Kafka решает, что может и должен удалить старые данные, то размер оставшихся данных никогда не будет ниже 100 МБ. Как и в случае со свойством байтов сегмента, описанным выше, если вы работаете с более низкими скоростями данных, вы можете уменьшить значение этого свойства. Когда работаете с высокоскоростными данными используйте 100 МБ по умолчанию.
- log.retention.bytes=104857600
Управление разделами отделов
Поскольку подписчики используют события из очереди разделов, события станут устаревшими, если они отмечены как использованные всеми подписчиками. Время, в течение которого Kafka хранятся старые сообщения и частота, с которой Kafka удаляются старые сообщения могут быть настроены при помощи следующих свойств.
- log.retention.hours=1
- log.retention.check.interval.ms=30000
По умолчанию срок хранения – 1 час. Любые файлы данных старше 1 часа и не хранящие в настоящий момент активные данные будут удалены. Если файл все еще активно используется для хранения данных (как это может быть в случае данных с низким объемом / скоростью), он не будет удален. Kafka по умолчанию проверяет удаление старых файлов данных каждые 30 секунд.
Дополнительные свойства управления разделами отделов
Свойства ниже могут быть добавлены в Kafka файл свойств для увеличения скорости перехода файлов раздела. Это может улучшить использование дискового пространства, но также может повлиять на производительность, если установлено слишком высокое значение.
- log.roll.ms=1800000
- log.roll.jitter.ms=180000
Первое свойство указывает Kafka переходить к новому файлу, по сути, заменяя его новым каждые 30 минут. Если добавите эту настройку, Kafka то новый файл данных будет создаваться каждые 30 минут, независимо от размеров старого файла данных. Для потоков данных с низкой скоростью это может устранить необходимость поддерживать старые данные, если файл данных заполняется не очень часто. Второе свойство определяет насколько постоянно Kafka будет происходить переход к новому файлу данных. Рекомендованное значение – 3 минуты, означающее Kafka что раз в 3 минуты будет происходить проверка необходимости перехода к новому файлу данных.