Spring Cloud Config использует базу данных для хранения содержимого конфигурации.

база данных сервер GitHub Spring

в предыдущем«Spring Cloud создает микросервисную архитектуру: распределенный центр конфигурации»В этой статье центр конфигурации Spring Cloud Server, который мы представили, использует Git для хранения информации о конфигурации. Этот дизайн умело использует собственный механизм Git и другие серверные продукты Git с богатыми функциями, поэтому Spring Cloud Server избегает многих сложных реализаций, связанных с управлением, в хранилище конфигурации и управлении, поэтому он имеет конфигурацию хранилища центра конфигурации. конфигурация и механизм управления верхнего уровня, поскольку он не является универсально применимым, Spring Cloud Server не реализует эту часть сам по себе, а обеспечивает часть реализации через серверный продукт Git, если это необходимо. Более сложные функции также могут быть реализованы. реализованы и определены сами по себе. Тем не менее, использование Git для хранения конфигурации в Spring Cloud Server по умолчанию вызывает споры. Поэтому в этой статье будет представлен новый метод настройки Spring Cloud Config из версии Edgware: использование базы данных для хранения информации о конфигурации.

Сервер центра конфигурации сборки

Шаг 1: Создайте базовый проект Spring Boot и добавьте несколько основных зависимостей в pom.xml:

  • spring-cloud-config-server: Основные зависимости центра конфигурации
  • spring-boot-starter-jdbc: Поскольку вам нужно получить доступ к базе данных, вам нужно загрузить зависимости jdbc
  • mysql-connector-java: Пакет подключения к базе данных MySQL
  • flyway-core: этот контент не является обязательным и в основном используется для управления схемой (если вы не понимаете, вы можете посмотретьэта статья)
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.11.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
        <version>5.0.3</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.21</version>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Edgware.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Шаг 2: Подготовьте схему для создания файла. существуетresourcesСоздать подschemaкаталог и добавитьV1__Base_version.sqlфайл, детали следующие:

CREATE TABLE `properties` (
  `id` int(11) NOT NULL,
  `key` varchar(50) NOT NULL,
  `value` varchar(500) NOT NULL,
  `application` varchar(50) NOT NULL,
  `profile` varchar(50) NOT NULL,
  `label` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Скрипт будет автоматически выполняться flyway при запуске программы

Шаг 3: Создайте основной класс приложения следующим образом:

@EnableConfigServer
@SpringBootApplication
public class ConfigServerBootstrap {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(ConfigServerBootstrap.class);

        // 测试用数据,仅用于本文测试使用
        JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class);
        jdbcTemplate.execute("delete from properties");
        jdbcTemplate.execute("INSERT INTO properties VALUES(1, 'com.didispace.message', 'test-stage-master', 'config-client', 'stage', 'master')");
        jdbcTemplate.execute("INSERT INTO properties VALUES(2, 'com.didispace.message', 'test-online-master', 'config-client', 'online', 'master')");
        jdbcTemplate.execute("INSERT INTO properties VALUES(3, 'com.didispace.message', 'test-online-develop', 'config-client', 'online', 'develop')");
        jdbcTemplate.execute("INSERT INTO properties VALUES(4, 'com.didispace.message', 'hello-online-master', 'hello-service', 'online', 'master')");
        jdbcTemplate.execute("INSERT INTO properties VALUES(5, 'com.didispace.message', 'hello-online-develop', 'hello-service', 'online', 'develop')");
    }

}

Сюда добавляются некоторые тестовые данные, чтобы облегчить последующую проверку чтения конфигурации.

Шаг 4: Конфигурацияapplication.properties, детали следующие:

spring.application.name=config-server-db
server.port=10020

spring.profiles.active=jdbc

spring.cloud.config.server.jdbc.sql=SELECT `KEY`, `VALUE` from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?

spring.datasource.url=jdbc:mysql://localhost:3306/config-server-db
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

flyway.locations=/schema

Здесь задействовано несколько конфигураций:

  • spring.profiles.active=jdbc: необходимо установить, чтобы переключить реализацию хранилища центра конфигурации на метод jdbc
  • spring.cloud.config.server.jdbc.sql: Не требуется, поскольку используется источник данных mysql,key,valueЭто зарезервированное ключевое слово, и исходный оператор реализации сообщит об ошибке, поэтому вам необходимо переписать этот оператор запроса (если дизайн сохраненной структуры таблицы отличается от содержимого, подготовленного выше, вы также можете изменить логику получения конфигурации с помощью конфигурации этого объекта)
  • spring.datasource.*: Конфигурация источника данных для хранения конфигурационной информации, здесь используется MySQL, и разработчик может изменить ее в соответствии со своей реальной ситуацией.
  • flyway.locations: место, где flyway загружает схему для создания sql.

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

После завершения содержимого предыдущего раздела мы создали центр конфигурации, в котором содержимое конфигурации хранится через Data Cool. Далее мы можем попытаться прочитать конфигурацию через конечные точки, предоставляемые центром конфигурации.

Шаг 1: Запустите созданный выше центр конфигурации.

Шаг 2: Проверьте получение информации о конфигурации:

  • curl http://localhost:10020/config-client/stage/,получение информацииconfig-clientСлужитьstageСодержимое конфигурации среды, в соответствии с приведенной выше подготовкой данных, мы получим следующее возвращаемое содержимое:
{
    "name": "config-client",
    "profiles": [
    "stage"
    ],
    "label": null,
    "version": null,
    "state": null,
    "propertySources": [
        {
            "name": "config-client-stage",
            "source": {
            "com.didispace.message": "test-stage-master"
            }
        }
    ]
}
  • curl http://localhost:10020/hello-service/stage/develop,получение информацииhello-serviceСлужить,stageокружающая обстановка,developСодержимое конфигурации тега, в соответствии с приведенной выше подготовкой данных, мы получим следующее возвращаемое содержимое:
{
    "name": "hello-service",
    "profiles": [
        "online"
    ],
    "label": "develop",
    "version": null,
    "state": null,
    "propertySources": [
        {
            "name": "hello-service-online",
            "source": {
                "com.didispace.message": "hello-online-develop"
            }
        }
    ]
}

Подробная информация о том, как получить доступ к центру конфигурации сборки Spring Cloud Config для получения информации о конфигурации. , вы можете просмотреть предыдущую статью:«Spring Cloud создает микросервисную архитектуру: распределенный центр конфигурации», который подробно не описан в этой статье.

Суммировать

Эта статья в основном знакомит с идеей использования хранилища JDBC, недавно добавленного в версию Spring Cloud Config для Edgware, На самом деле, есть еще много возможностей для оптимизации, таких как: оптимизация индекса, оптимизация оператора запроса; если дальнейшая настройка требуется Управление также необходимо для оптимизации структуры таблицы.

Наконец, компания AmwayПроект управления конфигурацией Spring Cloud Config:GitHub.com/first87112/tickets…, находится в стадии интенсивной разработки, с нетерпением ждем этого!

Пример этой статьи

Читатели могут выбрать следующие два склада для просмотра в соответствии со своими предпочтениями.config-server-dbа такжеconfig-clientДва проекта:

Если вы заинтересованы в них, добро пожаловать, пометьте, подпишитесь, добавьте в избранное и вперед, чтобы поддержать!