Ранее мы пробовали несколько открытых конфигурационных центров (Disconf, Apollo, Diamond и Spring Cloud Config), но у каждого из них были свои недостатки или они не удовлетворяли нашим требованиям (например, сложная настройка, перегруженная функциональность, отсутствие поддержки глобальных настроек, шифрования чувствительных настроек, плохая поддержка Springboot, неудобный интерфейс или его отсутствие). Поэтому с 2016 года у нас появилась начальная версия, которая после трёх лет разработки в производственной среде была доработана до текущего открытого проекта.
— Лёгкость: работает без необходимости в дополнительных промежуточных компонентах (синхронизация через HTTP). — Простота кода: низкие затраты на разработку. — Высокий уровень безопасности: помимо функции шифрования, предоставляются различные стратегии безопасности для получения конфигураций.
git clone https://gitee.com/vakinge/jeesuite-config.git
mvn clean package -DskipTests=true
Окончательный пакет развёртывания будет находиться по адресу: jeesuite-config-server/target/jeesuite-config-server.jar
CREATE DATABASE IF NOT EXISTS `configcenter` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Выполнение скрипта создания таблицы: db.sql
# Настройки базы данных
db_host=127.0.0.1
db_username=root
db_password=123456
# Разрешить ли внешнему миру получать конфигурации (работает белый список)
api.extranet.enabled=true
# Принудительное шифрование чувствительных конфигураций
sensitive.config.force.encrypt=false
# Включить автоматическое кэширование (зависит от Redis)
jeesuite.mybatis.cacheEnabled=true
jeesuite.cache.mode=standalone
jeesuite.cache.servers=127.0.0.1:6379
jeesuite.cache.password=123456
jeesuite.cache.database=0
# Включение общего сеанса (обязательно для кластеров)
security.cache.storage-type=redis
security.cache.servers=127.0.0.1:6379
security.cache.password=123456
security.cache.database=1
Скопируйте jeesuite-config-server.jar и файл application.properties в одну папку, Springboot автоматически загрузит файл конфигурации с именем application.properties из этой папки.
nohup java -jar jeesuite-config-server.jar > config-server.out 2>&1 &
admin/admin123
— Управление бизнес-группами: если требуется разделить группы, необходимо сначала добавить бизнес-группу; — Управление пользователями: можно добавлять пользователей, указывая их принадлежность к бизнес-группе, а также предоставляя им пароль на основе мобильного номера; — Управление профилями (средами): можно настроить синхронизацию с Zookeeper и белый список IP-адресов для каждой среды; — Управление приложениями: приложение автоматически генерирует токены для соответствующих сред; — Управление конфигурациями: разделение конфигураций на глобальные и прикладные, поддержка конфигураций файлов, пар ключ-значение и JSON.
<dependency>
<groupId>com.jeesuite</groupId>
<artifactId>jeesuite-config-client</artifactId>
<version>[Версия]</version>
</dependency>
В проекте добавьте следующие настройки:
# Включать ли конфигурационный центр, по умолчанию: true
jeesuite.configcenter.enabled=false
# Имя приложения: соответствует имени конфигурации сервера
jeesuite.configcenter.appName=account
jeesuite.configcenter.base.url=http://configserver:8080
# Текущая среда
jeesuite.configcenter.profile=dev
# Версия конфигурации для загрузки, по умолчанию: последняя
jeesuite.configcenter.version=latest
# Игнорировать ли глобальные настройки, по умолчанию: false
jeesuite.configcenter.global-ignore=false
# Токен аутентификации для конфигурационного центра
jeesuite.configcenter.token=
# Тип синхронизации, по умолчанию: http
jeesuite.configcenter.sync-type=zookeeper
# Интервал синхронизации в секундах, действует только при типе синхронизации http
jeesuite.configcenter.sync-interval-seconds=30
Настройка конфигурации через параметры JVM
-Djeesuite.configcenter.profile="dev"
Внешняя настройка конфигурации в Docker
-e jeesuite.configcenter.profile="dev"
Для проектов Springboot достаточно добавить указанные выше настройки, для проектов Spring также потребуется выполнить следующие изменения:
<bean class="com.jeesuite.confcenter.spring.CCPropertyPlaceholderConfigurer">
<property name="remoteEnabled" value="true" />
<!-- Локальные файлы конфигурации, можно не указывать, если нет локальных настроек -->
<property name="locations">
<list>
<value>classpath*:application.properties</value>
</list>
</property>
</bean>
jeesuite.configcenter.remote-config-first=true
, удалённая конфигурация будет иметь приоритет над локальной.После изменения конфигурации она будет немедленно передана в приложение. Для её немедленного чтения можно использовать следующие методы:
ResourceUtils
в коде.Environment
и чтение в коде.ConfigChangeHanlder
для настройки обновления.Пример:
@Controller
@RequestMapping(value = "/sms")
public class AuthCommonController implements ConfigChangeHanlder{
@Value("${sms.send.open}")
private boolean open = false;
@Override
public void onConfigChanged(Map<String, Object> changedConfigs) {
if(changedConfigs.containsKey("sms.send.open")){
open = Boolean.parseBoolean(changedConfigs.get("sms.send.open").toString());
}
}
}
Обычно конфигурация приложения представляет собой объединение глобальной конфигурации и конфигурации приложения. Чтобы игнорировать некоторые глобальные конфигурации, используйте следующий формат:
db.maxActive=[Игнорировать]
layui
):Изображение: см. «конфигурация.png»
Изображение: см. «права пользователя.png»
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )