1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vakinge-jeesuite-config

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

Зачем создавать своё?

Ранее мы пробовали несколько открытых конфигурационных центров (Disconf, Apollo, Diamond и Spring Cloud Config), но у каждого из них были свои недостатки или они не удовлетворяли нашим требованиям (например, сложная настройка, перегруженная функциональность, отсутствие поддержки глобальных настроек, шифрования чувствительных настроек, плохая поддержка Springboot, неудобный интерфейс или его отсутствие). Поэтому с 2016 года у нас появилась начальная версия, которая после трёх лет разработки в производственной среде была доработана до текущего открытого проекта.

Основные функции

  1. Поддержка управления конфигурациями для разных сред и версий.
  2. Поддержка глобальных настроек.
  3. Поддержка различных форматов конфигураций: свойств, YAML, XML, JSON.
  4. Поддержка шифрования настроек (автоматическое шифрование на сервере и дешифрование на клиенте).
  5. Поддержка бесшовной интеграции со Spring и Springboot.
  6. Контроль доступа к настройкам на уровне среды и проекта (только чтение/чтение-запись).
  7. Поддержка синхронизации конфигураций в реальном времени через HTTP и Zookeeper.
  8. Возможность просматривать историю версий конфигураций, быстро откатываться к предыдущим версиям и сравнивать их.
  9. Функции безопасности: возможность включить функцию безопасного IP-адреса и ограничить доступ к внутренним конфигурациям.
  10. Разделение данных между различными бизнес-группами и отделами.
  11. Поддержка кластерной настройки.

Особенности

— Лёгкость: работает без необходимости в дополнительных промежуточных компонентах (синхронизация через 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 также потребуется выполнить следующие изменения:

  1. Удалить исходную конфигурацию и связанные с ней настройки.
  2. Добавить новую конфигурацию:
<bean class="com.jeesuite.confcenter.spring.CCPropertyPlaceholderConfigurer">
    <property name="remoteEnabled" value="true" />
    <!-- Локальные файлы конфигурации, можно не указывать, если нет локальных настроек -->
    <property name="locations">
      <list>
        <value>classpath*:application.properties</value>
      </list>
    </property>
</bean>

Примеры использования

Приоритет конфигурации

  1. Конфигурация приложения > удалённая конфигурация приложения > глобальная удалённая конфигурация.
  2. Если включена настройка jeesuite.configcenter.remote-config-first=true, удалённая конфигурация будет иметь приоритет над локальной.

Немедленное обновление конфигурации

После изменения конфигурации она будет немедленно передана в приложение. Для её немедленного чтения можно использовать следующие методы:

  1. Чтение с помощью ResourceUtils в коде.
  2. Внедрение зависимости Environment и чтение в коде.
  3. Реализация интерфейса 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Функции полностью подходят для конфигурационного центра с двумя открытиями. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/vakinge-jeesuite-config.git
git@api.gitlife.ru:oschina-mirror/vakinge-jeesuite-config.git
oschina-mirror
vakinge-jeesuite-config
vakinge-jeesuite-config
master