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

OSCHINA-MIRROR/sxfad-config-keeper

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

Перевод текста на русский язык:

Финансовые технологии: микросервисная незаменимая вещь — ConfigKeeper, открытый исходный код!

[Spring Cloud China Community Technology Sandbox — Beijing Station PPT: Концепция проектирования центра конфигурации ConfigKeeper] (doc/ConfigKeeper центр конфигурации концепция проектирования.pptx)

[Видео Spring Cloud China Community Technology Sandbox – Beijing Station] (https://www.itdks.com/eventlist/detail/2749)

В микросервисной архитектуре центр конфигурации является незаменимым базовым сервисом. После развёртывания приложения в производственной среде по разным причинам необходимо настроить некоторые параметры. Если каждый раз при изменении параметров требуется изменять код, переупаковывать и повторно развёртывать, то для предотвращения повторного развёртывания, приводящего к ошибкам запросов, также необходимо отключить приложение от балансировщика нагрузки, а после успешного развёртывания снова включить его. Когда экземпляров развёртывания много, это серьёзно влияет на эффективность запуска. Если изменение параметров предназначено для решения проблем производства, то чем больше времени занимает этот процесс, тем больше риск он несёт. Поэтому нам необходимо динамически изменять параметры (например, переключатели функций, параметры производительности и т. д.) без остановки, переупаковки и повторного развёртывания. Чтобы упростить динамическое обновление конфигурации приложения, необходимо поместить конфигурацию за пределы исполняемого пакета приложения. Размещение файлов конфигурации вне исполняемого пакета приводит к следующим преимуществам: один исполняемый пакет может работать в разных средах, можно снизить стоимость управления версиями пакетов, а также снизить стоимость управления версиями образов Docker.

Хотя Spring cloud уже предоставляет центры конфигурации на основе git или MongoDB и других реализаций, эти решения слишком просты и не соответствуют реальным стандартам использования, например, они не предоставляют унифицированные страницы управления, неудобны в использовании и эксплуатации; у них нет функций управления правами доступа; нет функций проверки данных и так далее. Но основные технологии Spring cloud config всё ещё могут быть полезны для нас, и нет необходимости заново изобретать колесо.

ConfigKeeper — это распределённый центр конфигурации, разработанный на основе Spring Cloud командой Suixingpay Architecture Department. Он разработан на основе Spring Cloud и полностью совместим с Spring Boot и Spring Cloud. Ниже мы подробно рассмотрим центр конфигурации ConfigKeeper (с картинками):

  1. Поддержка управления правами доступа, обеспечение безопасности данных

На следующем рисунке показан снимок экрана интерфейса управления пользователями и настройки прав доступа:

Управление пользователями — добавление

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

  1. Поддержка мультисреды развёртывания и централизованного управления конфигурацией

Управление средой

Компания может создавать различные среды в соответствии со своими потребностями, такие как тестирование, rc и производство. Можно совместно использовать один центр конфигурации для нескольких сред или использовать отдельный центр конфигурации для каждой среды, гибко развёртывая в зависимости от потребностей компании.

  1. Простое и удобное управление конфигурацией

Чтобы избежать проблемы связывания конфигурации, мы разработали только два типа конфигурации: глобальную конфигурацию (global config) и конфигурацию приложения (application config), и не разрабатывали «групповую конфигурацию». Глобальная конфигурация относится к конфигурации, которая действует для всех приложений в определённой среде, но её приоритет ниже, чем у конфигурации приложения. В одной среде существует только одна глобальная конфигурация. Если в исполняемом пакете приложения уже есть такая же конфигурация, она будет перекрыта конфигурацией центра.

Список глобальных конфигураций: Глобальная конфигурация

Список конфигураций приложений: Конфигурация приложения

3.1 Встроенная функция управления версиями: автоматическое увеличение номера версии и возможность возврата к предыдущей версии

Каждый раз, когда конфигурация изменяется, номер версии автоматически увеличивается на 1, и исходная конфигурация сохраняется в исторической таблице для просмотра записей изменений и возможности возврата.

Список исторических версий конфигурации приложения

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

Список исторических версий конфигурации приложения

Можно выполнить возврат к предыдущей версии через функцию замены исторической версии.

3.2 Использование онлайн-редактора Yml для реального времени проверки правильности формата конфигурации;

Редактирование конфигурации

Для лучшего управления содержимым конфигурации мы используем формат YAML для управления содержимым конфигурации.

Используя онлайн-редактор Yml, вы можете легко редактировать, например, копировать и вставлять содержимое, как при редактировании файла конфигурации. При редактировании содержимого пользователем редактор в реальном времени проверяет правильность формата YAML. Если формат правильный, он правильно отображает соответствующее содержимое JSON. Если формат неправильный, редактор выдаст соответствующее сообщение об ошибке, чтобы своевременно обнаружить ошибку.

3.3 Поддержка функции сравнения содержимого до и после модификации для обеспечения правильности модифицированного содержимого

Перед сохранением изменённого содержимого появится это окно сравнения, которое поможет подтвердить и проверить правильность содержимого этой модификации, и нажать кнопку «Подтвердить» для сохранения после подтверждения отсутствия ошибок.

4. Простота использования и совместимость с Spring Boot и Spring Cloud приложениями

Центр конфигурации предоставляет HTTP-интерфейс для извлечения конфигурации, поэтому любое приложение, поддерживающее протокол HTTP, может его использовать. Мы уже реализовали клиентские приложения для Spring Boot и Spring Cloud, и теперь объясним некоторые их особенности и способы использования.

4.1 Полная совместимость с Spring boot и Spring Cloud

suixingpay-config-client разработан на основе spring-cloud, поэтому способ использования такой же, как и spring-cloud-config. Поддерживает внедрение конфигурации с помощью xml, Spring boot @Value и @ConfigurationProperties, поддерживает получение конфигурации через Environment. Поддерживает аннотацию @RefreshScope Spring-Cloud для обновления конфигурации.

Вам нужно только добавить зависимость suixingpay-config-client в проект и добавить следующую конфигурацию в файл bootstrap.yml:

spring:
  application:
    name: config-demo # Установить имя приложения, это обязательное поле

  profiles:
    active: ${profile:dev}

# Разделение конфигурации по нескольким средам
---
spring:
   profiles: test
suixingpay:
  config:
    enabled: true                  # Включить центр конфигурации, значение по умолчанию: true; для удобства разработки рекомендуется установить значение false для среды разработки
    profile: test                  # Имя среды, значение по умолчанию — первый элемент spring.profiles.active
    uris:
    - http://127.0.0.1:8080/       # Адрес службы центра конфигурации, обязательно
    username: admin                # Имя пользователя вызова интерфейса (не имя пользователя и пароль для входа в центр конфигурации)
    password: 123456               # Пароль вызова интерфейса
    cachePath: ./config            # Путь кэширования конфигурации, значение по умолчанию: ./config
    cacheTimeOut: 0                # Время истечения срока действия локального кэша (единица измерения: секунды), если оно меньше или равно 0, оно всегда действительно
    failFast: false                # Быстро ли происходит сбой, если установлено значение true, при доступе к центру конфигурации немедленно генерируется исключение; если установлено значение false, будет предпринято 3 попытки загрузки и попытка получить доступ к локальному кешу, и исключение будет выдано только в том случае, если конфигурация не будет получена

Вот пример получения значения конфигурации из файла Spring xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans>

    <dubbo:application name="${spring.application.name}" />
    <dubbo:registry protocol="${dubbo.registryProtocol}" address="${dubbo.zookeeperAddress}" />
    <dubbo:protocol name="${dubbo.protocolName}" port="${dubbo.protocolPort}" />
    ... ...

</beans>

Что касается использования @Value, @ConfigurationProperties и @RefreshScope, пожалуйста, обратитесь к официальной документации Spring.

4.3 Поддержка постепенного развёртывания

Чтобы обеспечить поддержку постепенного развёртывания, suixingpay-config-client не реализует функцию автоматического обновления конфигурации, а использует функцию обновления Spring cloud для ручного обновления. Это связано с тем, что после изменения конфигурации и отсутствия проверки новая конфигурация будет немедленно передана всем приложениям, что представляет собой серьёзный риск. Правильный подход заключается в том, чтобы сначала обновить новую конфигурацию до одного экземпляра приложения для проверки, а затем обновить остальные экземпляры после успешной проверки.

Помимо использования curl или postmain для обновления, вы также можете использовать функцию обновления центра конфигурации. Через страницу списка приложений центра конфигурации вы можете перейти на следующую страницу:

Просмотр информации об экземпляре и функции обновления

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

Комментарии ( 0 )

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

Введение

Центр конфигурации, разработанный на основе Spring Boot и Spring Cloud, обеспечивает бесшовную совместимость с приложениями Spring Boot и Spring Cloud. Развернуть Свернуть
Apache-2.0
Отмена

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

все

Участники

все

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

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