У меня есть приложение весенней загрузки, работающее в облаке, пока мне нужно было только добавить весеннее облако gcp mysql
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
зависимость в моем POM и настроить мой файл application.yml для установки имени базы данных, имени подключения и т. д., и он отлично работает локально и в облаке.
Мое приложение.yml:
spring:
cloud:
gcp:
sql:
enabled: true
database-name: pos_database
instance-connection-name: pos-sys:asia-southeast2:pos-server-database
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: ***
password: ***
hikari:
maximum-pool-size: 20
Однако я понял, что производительность холодного запуска упала, потому что при запуске фабрика сокетов подключается к экземпляру базы данных через сокет SSL:
2021-05-31 13:10:07.152 INFO 1539 --- [onnection adder] c.g.cloud.sql.core.CoreSocketFactory :
Connecting to Cloud SQL instance [pos-sys:asia-southeast2:owl-server-database] via SSL socket.
и я получаю кучу строк, просто повторяющихся
2021-05-31 13:10:09.461 INFO 1539 --- [connection adder] c.g.cloud.sql.core.CoreSocketFactory :
Connecting to Cloud SQL instance [pos-sys:asia-southeast2:pos-server-database] via SSL socket.
Я знаю, что есть более быстрый способ подключения, чем приложение, работающее в облаке, до сих пор я следовал этому руководству:
https://cloud.google.com/sql/docs/mysql/connect-run
Но я очень запутался в последней части, где говорится, что я должен подключиться к сокету unix, это докер или мое приложение? куда должен идти файл ConnectionPoolContextListener.java? В комментарии к самому файлу также говорится не использовать это для пользователей Java, а вместо этого использовать
Cloud SQL JDBC Socket Factory Но когда я перехожу по этой ссылке, мне предлагается добавить зависимость для mysql-connector, но разве она уже не включена в spring-gcp-starter-mysql? В нем также говорится, сделайте строку подключения в этом формате:
jdbc:mysql:///<DATABASE_NAME>?cloudSqlInstance=<INSTANCE_CONNECTION_NAME>&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=<MYSQL_USER_NAME>&password=<MYSQL_USER_PASSWORD>
Но не упоминает, куда мне это положить?
Итак, резюмируя:
У меня есть облачный экземпляр mysql с включенным API администратора.
Я включил подключение к облачному SQL в моем облаке, выбрав свой экземпляр базы данных.
Меня очень смущает документация о том, какой следующий шаг и что делать дальше.