【Spring Cloud编程】Spring Cloud 集成AlloyDB

news/2025/1/10 9:23:11/文章来源:https://www.cnblogs.com/o-O-oO/p/18663294

1.AlloyDB是什么?

AlloyDB 是 Google Cloud 提供的一种高度可扩展、强性能的关系型数据库服务,它兼容 PostgreSQL,并提供了更快的查询性能和更高的可用性。AlloyDB 主要适用于需要处理复杂查询、高吞吐量和对数据库性能要求严格的应用场景。

AlloyDB 的工作原理

AlloyDB 是建立在 Google Cloud 的分布式架构上的,具有以下特点:

高性能:通过在内存中缓存热数据和优化查询执行,AlloyDB 提供比传统 PostgreSQL 快四倍的性能。

高可用性:支持跨区域的高可用部署,具备内置的自动故障转移功能。

兼容性:完全兼容 PostgreSQL,使得现有 PostgreSQL 应用可以无缝迁移。

可管理性:简化了运维工作,通过 Google Cloud 平台的工具进行统一管理。

2.搭建测试环境

参照这个文档在google cloud上创建数据库

https://cloud.google.com/alloydb/docs/quickstart/integrate-cloud-run 

3.代码工程

Spring Cloud 提供了 spring-cloud-gcp-starter-alloydb 模块,用于简化与 AlloyDB 的集成。通过此模块,您可以轻松配置并连接到 AlloyDB 实例。

以下是一个完整的示例,演示如何使用 Spring Boot 应用程序连接到 AlloyDB。

3.1 添加 Maven 依赖

在项目的 pom.xml 文件中添加以下依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-gcp</artifactId><groupId>com.et</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>spring-cloud-gcp-alloydb-sample</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><dependencyManagement><dependencies><dependency><groupId>com.google.cloud</groupId><artifactId>spring-cloud-gcp-dependencies</artifactId><version>5.9.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>com.google.cloud</groupId><artifactId>spring-cloud-gcp-starter-alloydb</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Test-related dependencies. --><dependency><groupId>org.awaitility</groupId><artifactId>awaitility</artifactId><version>4.2.2</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.17.0</version><scope>test</scope></dependency></dependencies></project>

3.2 配置 AlloyDB 数据源

在 application.properties 或 application.yml 文件中配置 AlloyDB 实例的连接信息:

# Set to the Postgres user you want to connect to; 'postgres' is the default user.
spring.datasource.username=postgres
spring.datasource.password=123456
# spring.cloud.gcp.project-id=spring.cloud.gcp.alloydb.database-name=postgres# This value is formatted in the form: projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
spring.cloud.gcp.alloydb.instance-connection-uri=projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID# The IP type options are: PRIVATE (default), PUBLIC, PSC.
#spring.cloud.gcp.alloydb.ip-type=PUBLIC
# spring.cloud.gcp.alloydb.target-principal=【your-service-account-email】
# spring.cloud.gcp.alloydb.delegates=[delegates]
# spring.cloud.gcp.alloydb.admin-service-endpoint=[admin-service-endpoint]
#spring.cloud.gcp.alloydb.quota-project=feisty-truth-447013-m7
# spring.cloud.gcp.alloydb.enable-iam-auth=true
# spring.cloud.gcp.alloydb.named-connector=[named-connector]
#spring.cloud.gcp.alloydb.credentials.location=file:///Users/liuhaihua/Downloads/feisty-truth-447013-m7-db149f9a2f86.json# So app starts despite "table already exists" errors.
spring.sql.init.continue-on-error=true
# Enforces database initialization
spring.sql.init.mode=always# Set the logging level
logging.level.root=DEBUG

将 your-project-id、your-region、your-cluster-id、your-instance-id、your-username、your-password 和 your-database-name 替换为实际值。

3.3 编写实启动类

创建启动类:

/** Sample application. */
@SpringBootApplication
public class AlloyDbApplication {public static void main(String[] args) {SpringApplication.run(AlloyDbApplication.class, args);}
}

3.4 编写控制器

创建一个控制器来测试数据库连接:

/** Copyright 2024 Google LLC** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      https://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package com.et;import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
import java.util.stream.Collectors;/** Web app controller for sample app. */
@RestController
public class WebController {private final JdbcTemplate jdbcTemplate;public WebController(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@GetMapping("/getTuples")public List<String> getTuples() {return this.jdbcTemplate.queryForList("SELECT * FROM users").stream().map(m -> m.values().toString()).collect(Collectors.toList());}
}

3.5 运行应用程序

确保您的 Google Cloud 项目已启用 AlloyDB API,并配置了必要的权限。

在本地运行应用程序时,确保设置了 Google Cloud 的服务账号凭据:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your-service-account-key.json

部署到 Google Cloud 时,建议使用 Compute Engine 或 Kubernetes Engine,其内置身份验证会自动获取凭据。

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

https://github.com/Harries/springcloud-demo(Spring Cloud GCP/spring-cloud-gcp-alloydb-sample)

4.测试

应用程序启动后,在浏览器中导航到 http://localhost:8080/getTuples,或使用 Cloud Shell 中的 Web Preview 按钮在端口 8080 上预览应用程序。这将打印用户表的内容。

5.引用

https://github.com/GoogleCloudPlatform/spring-cloud-gcp/tree/main/spring-cloud-gcp-samples/spring-cloud-gcp-alloydb-sample
https://www.liuhaihua.cn/archives/712071.html

原创 Harrieis HBLOG

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/867019.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS的PrivilegedHelperTools文件夹

在 macOS 上,/Library/PrivilegedHelperTools 文件夹是一个特殊的位置,用于存放可以以更高权限运行的辅助工具或守护进程。这些工具通常由各种应用程序安装,以执行需要超出普通应用程序沙箱权限的任务,例如Proxy的应用,常见都是带有helper的应用。让我们更详细地了解这个目…

CDS标准视图:预期应收 I_FutureAccountsReceivables

视图名称:预期应收 视图类型:参数 视图代码:点击查看代码 //Documentation about annotations can be found at http://help.sap.com searching for CDS annotations //Inserted by VDM CDS Suite Plugin @ObjectModel.usageType.sizeCategory: #XXL //Inserted by VDM CDS …

如何在服务器上查看当前运行的PHP版本?

要查看主机当前运行的PHP版本,您可以按照以下步骤操作。这种方法简单且适用于大多数Web服务器环境。步骤 描述1 创建一个新的PHP文件,例如info.php。2 在文件中添加以下代码: php<br>phpinfo();<br>3 将该文件上传到您的Web服务器的根目录。4 在浏览器中访问ht…

如何解决“此网站无法提供安全连接,使用了不受支持的协议”的问题?

当您访问某个网站时,如果遇到“此网站无法提供安全连接,使用了不受支持的协议”的错误提示,通常是因为客户端浏览器和服务器之间的TLS协议版本不匹配。以下是详细的解决方法:解决方案 适用对象 具体步骤客户端解决方案 用户 1. 更新浏览器:确保您的浏览器是最新版本,因为…

使用宝塔面板上传网站后,为什么网站打开速度变慢?如何优化以提升速度?

在使用宝塔面板上传网站后,如果网站打开速度变慢,通常需要排除网速和硬件问题。以下是一些常见的优化方法,可以帮助显著提升PHP网站的执行速度和数据库读取速度。 常见原因:PHP配置不当:PHP的默认配置可能不适合您的网站需求,导致执行效率低下。 数据库性能问题:MySQL配…

电脑分屏---播放不同的声音

在工作中,一台电脑两个显示器是常见办公模式,那么如何做到两个显示器播放不同的声音的呢? 常见的需求就是:一边看电视、一边打游戏 准备: 1、3.5mm的外接音箱,插入到电脑后面的绿色孔。【红色孔:音频输入、常用于连接麦克风;绿色孔:音频输出、常用于链接耳机/音箱;蓝…

C#MAUI 安卓请求http错误

报错:One or more errors occurred. (Connection failure) 在window端请求http https都没有问题,但是在安卓端请求http就会报错。 这是由于安卓从底层禁止了明文请求,需要设置打开 示例<application android:allowBackup="true" android:icon="@mipmap/ap…

在使用 PbootCMS 的 IP 黑名单功能时,如果发现只能添加 10 多条 IP 地址,多了保存不了,通常是因为 ay_config 表中存储 IP 黑名单的字段长度有限

1. 备份数据库 在进行任何数据库操作之前,请务必备份数据库,以防数据丢失。mysqldump -u your_username -p your_database_name > backup.sql2. 登录数据库管理工具 使用 phpMyAdmin 或其他数据库管理工具登录到您的 MySQL 数据库。 3. 修改 ay_config 表结构找到 ay_conf…

显著增加 PbootCMS IP 黑名单可以存储的 IP 地址数量

通过修改 ay_config 表结构中的 value 字段类型,可以显著增加 PbootCMS IP 黑名单可以存储的 IP 地址数量。确保在进行数据库操作之前备份数据库,并在修改后验证设置是否生效。如有任何问题,可以参考官方文档或寻求专业的技术支持。 以下是具体的 SQL 语句示例:ALTER TABLE…

bat命令大全完整版

常用的BAT命令列表,分为文件操作、流程控制、网络操作等几类: 文件和目录操作cd:更改当前目录 md 或 mkdir:创建目录 rd 或 rmdir:删除空目录 copy:复制文件 move:移动文件或重命名文件 del 或 erase:删除文件 ren 或 rename:重命名文件或目录 type:显示文本文件内容…

bat提示命令语法不正确

当遇到BAT命令语法不正确的问题时,可以按照以下步骤排查和修正:检查命令拼写:确保使用的命令名称准确无误。例如,md 和 mkdir 是创建目录的命令,而 mkdr 则是错误的。 确认参数格式:每个命令都有特定的参数格式。例如,copy source destination 中的 source 和 destinati…

bat命令电脑微信双开怎么设置

找到微信安装路径通常微信安装在 C:\Program Files (x86)\Tencent\WeChat\WeChat.exe 或 C:\Program Files\Tencent\WeChat\WeChat.exe。创建批处理文件(.bat)打开记事本,输入以下内容并保存为 wechat_dual_open.bat:@echo off start "" "C:\Program Files …