You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将GridDB Cloud接入Java Spring Boot应用?

如何将GridDB Cloud接入Java Spring Boot应用?

我之前也踩过这个坑,GridDB Cloud的连接逻辑和本地自建实例确实不一样,不用再用组播地址那套配置了,我给你一步步理清楚怎么改:

第一步:从GridDB Cloud控制台拿对连接参数

首先登录你的GridDB Cloud控制台,找到你创建的集群,进入详情页后,你能拿到这几个关键信息,一定要记准:

  • 集群名称:就是你在Cloud上创建集群时填的名字,别再用本地的myCluster
  • 通知地址(单播):Cloud给的是专属的域名/公网IP,比如类似griddb-abc123.gscloud.io这种,绝对不能再用本地的239.0.0.1组播地址
  • 通知端口:Cloud集群的端口一般是10001(具体以控制台显示为准,别再用31999了)
  • 认证信息:在Cloud控制台创建的数据库用户名和密码,不是本地默认的admin/admin
  • 另外要确认你的应用服务器IP已经加到Cloud集群的IP白名单里了,不然会被直接拒绝连接

第二步:修改Spring Boot里的连接代码

你原来的本地连接代码需要调整几个核心参数,还要加上SSL配置(Cloud强制要求加密连接,我当初就是漏了这个卡了好久),调整后的代码示例如下:

import com.toshiba.mwcloud.gs.GridStore;
import com.toshiba.mwcloud.gs.GridStoreFactory;
import org.springframework.stereotype.Component;
import java.util.Properties;

@Component
public class GridDBCloudConfig {

    public GridStore getGridDBCloudStore() throws Exception {
        Properties props = new Properties();
        // 替换成你从控制台拿到的集群名
        props.setProperty("clusterName", "your-cloud-cluster-name");
        // 替换成Cloud控制台的通知地址(单播域名/IP)
        props.setProperty("notificationAddress", "griddb-abc123.gscloud.io");
        // 替换成控制台显示的通知端口
        props.setProperty("notificationPort", "10001");
        // Cloud的认证账号密码
        props.setProperty("user", "your-cloud-username");
        props.setProperty("password", "your-cloud-password");
        // 必须开启SSL,否则连接失败
        props.setProperty("sslMode", "REQUIRED");
        
        return GridStoreFactory.getInstance().getGridStore(props);
    }
}

第三步:Spring Boot最佳实践(避免硬编码)

在实际项目里,别把这些敏感参数硬编码到代码里,建议放到application.properties或者application.yml中:

application.properties 配置示例:

# GridDB Cloud 配置
griddb.cluster-name=your-cloud-cluster-name
griddb.notification-address=griddb-abc123.gscloud.io
griddb.notification-port=10001
griddb.user=your-cloud-username
griddb.password=your-cloud-password
griddb.ssl-mode=REQUIRED

然后写一个配置类读取这些属性:

import com.toshiba.mwcloud.gs.GridStore;
import com.toshiba.mwcloud.gs.GridStoreFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;

@Configuration
public class GridDBCloudConfig {

    @Value("${griddb.cluster-name}")
    private String clusterName;

    @Value("${griddb.notification-address}")
    private String notificationAddress;

    @Value("${griddb.notification-port}")
    private String notificationPort;

    @Value("${griddb.user}")
    private String user;

    @Value("${griddb.password}")
    private String password;

    @Value("${griddb.ssl-mode}")
    private String sslMode;

    @Bean
    public GridStore gridStore() throws Exception {
        Properties props = new Properties();
        props.setProperty("clusterName", clusterName);
        props.setProperty("notificationAddress", notificationAddress);
        props.setProperty("notificationPort", notificationPort);
        props.setProperty("user", user);
        props.setProperty("password", password);
        props.setProperty("sslMode", sslMode);
        
        return GridStoreFactory.getInstance().getGridStore(props);
    }
}

常见坑点提醒

  • 别再用本地组播地址239.0.0.1:GridDB Cloud是托管服务,用的是单播连接,组播地址完全没用
  • 一定要开SSL:Cloud集群默认强制SSL加密,没加sslMode=REQUIRED的话,连接会直接失败
  • 检查IP白名单:如果你的应用部署在云服务器或者本地,必须把对应IP加到GridDB Cloud控制台的白名单里,不然会报连接超时/拒绝
  • 确认账号权限:Cloud里的用户需要有对应集群的访问权限,别用错了账号

这样调整后,你的Spring Boot应用应该就能顺利连上GridDB Cloud了,我当初就是这么一步步调通的,有其他问题可以再问~

火山引擎 最新活动