В больших кластерах и распределённых приложениях конфигурации не следует рассредотачивать по узлам кластера или использовать большое количество проектов, что приведёт к хаосу в управлении. В этом случае конфигурации должны быть сосредоточены в одном месте. Этот конфигурационный центр ориентирован на простое использование и полезность, являясь легковесной системой управления конфигурациями. При изменении конфигураций нет необходимости перезапускать сервисы; новые значения автоматически распространяются среди всех использующих сервисов. Конфигурационные данные хранятся в локальном кэше, благодаря чему скорость доступа очень высока, так как используется память. Обновление кэша происходит либо через регулярное обновление, либо через динамическое слушание изменений значений. Благодаря использованию кэширования программа продолжает работать даже если Zookeeper временно недоступен. Конечно же, Zookeeper известен своей надёжностью.
Узлы могут быть защищены с помощью системы безопасности. Узел, созданный одним пользователем, может быть доступен только авторизованным пользователям, имеющим права на его редактирование и изменение (хотя он может быть удалён любым пользователем).Проект состоит из API и веб-интерфейса управления, реализованного на Java с использованием Maven. Любые вопросы можно задать для уточнения.
Дизайн: Spring MVC, Freemarker, Bootstrap и ZkClient
Если вы хотите использовать только инструмент управления Zookeeper, он был разделён в отдельный проект. Подробнее см.:
http://git.oschina.net/hezui/ZookeeperManage
Веб-интерфейс управления конфигурациями Zookeeper, обеспечивающий быстрый доступ к данным благодаря кэшированию. Интерфейс позволяет оперировать узлами в виде дерева файлов, а также предоставляет возможности резервного копирования и восстановления данных, а также безопасного управления узлами.
Прежде чем запустить этот проект, необходимо скомпилировать configApi (в Eclipse потребуется импорт Lombok для избежания ошибок). После этого закройте текущий проект и запустите configWeb (в UTF-8 кодировке). Для использования системы безопасности узлов: установите значение zookeeper.safe_permis_open
в config.properties
на true
. По умолчанию это значение равно false
, что делает проект обычным веб-интерфейсом управления. При установке значения на true
все созданные узлы будут требовать авторизации с использованием пароля пользователя.
1. Импорт зависимостей Maven
<dependency>
<groupId>com.zk.config.api</groupId>
<artifactId>configApi</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
2. Настройка Spring
<bean id="configProperties" class="com.zk.config"/>
<bean id="api.factory.CustomizedPropertyConfigurer">
<property name="configClient">
<list>
<ref bean="configClient" /> <!-- Импортирует файл с расширением .properties из узла Zookeeper -->
</list>
</property>
</bean>
<bean id="configClient" class="com.zk.config.api.client.ConfigClient" scope="singleton" init-method="init">
<constructor-arg index="0" value="192.168.3.6:2181,192.168.3.7:2181/configManagement/configWeb/dev" /> <!-- Хост Zookeeper + корневой каталог управления конфигурациями + имя проекта + ветка (например: dev, test, prod) -->
<constructor-arg index="1" value="30000" /> <!-- Параметр времени ожидания соединения connectTimeout для инициализации Zookeeper, единицы измерения — миллисекунды -->
<constructor-arg index="2" value="0" /> <!-- Интервал времени для периодического обновления кэша данных, единицы измерения — миллисекунды, 0 — отключено -->
<constructor-arg index="3" value="true" /> <!-- Включение динамического мониторинга узлов -->
<constructor-arg index="4" ref="configProperties" /> <!-- Поддерживает динамическое получение значений Properties -->
<constructor-arg index="5" value="guest:guest123" /> <!-- После активации управления безопасностью узлов в интерфейсе управления, API требует пользователя:пароль для доступа к данным -->
</bean>
```### 3. Теперь можно использовать конфигурационные данные из Zookeeper так же просто, как обычные свойства Spring.
Например, бины в конфигурационном файле Spring могут использовать стандартный способ внедрения значений, такие как `${user}`, чтобы получить значения из Zookeeper, как показано ниже:
```markdown
<bean id="test" class="com.zk.config.api.test.Test" init-method="init" scope="prototype">
<property name="user" value="${user}" />
<property name="userName" value="${userName}" />
</bean>
Аналогично, это можно сделать и в Java-классах.
Примечание:
configProperties
), или получите значение напрямую через статический объект кэша (ConfigClient.getPropertiesValue(key)
). Объект кэша ConfigClient является самым ранним инициализируемым статическим объектом, поэтому остальные статические объекты могут получить доступ к соответствующим кэш-данным. При наличии нескольких клиентов ConfigClient, последний клиент будет иметь приоритет для ключей или путей узлов.2. Узлы Zookeeper с конечной частью названия .properties
автоматически распознаются как файлы Properties. Если используется XML-формат файла Properties, его можно добавить к концу имени узла.3. Конфигурационные файлы логгирования на Zookeeper с суффиксом log4j.properties будут автоматически загружаться по умолчанию. Для других файлов конфигурации логгирования, таких как log4j.xml, установите значение свойства log4jPathName объекта configClient равным имени файла. Чтобы отключить автоматическую загрузку, установите пустую строку, например:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )