nacos适配达梦数据库

1、nacos源码
地址:https://github.com/alibaba/nacos/releases/tag/1.4.1
在这里插入图片描述
2、修改主pom.xml
在这里插入图片描述

引入dm包
在这里插入图片描述

如下,修改根目录的dm依赖

<dm-connector-java.version>8.1.1.49</dm-connector-java.version>

            <dependency>
                <groupId>com.dameng</groupId>
                <artifactId>Dm8JdbcDriver18</artifactId>
                <version>${dm-connector-java.version}</version>
            </dependency>

修改nacos-config的依赖
在这里插入图片描述
修改nacos-naming的依赖

在这里插入图片描述

3、修改console下的配置文件

spring.datasource.platform=dm

### Count of DB:
db.num=1

db.jdbcDriverName=dm.jdbc.driver.DmDriver
db.jdbcScheme=NACOS_CONFIG
### Connect URL of DB:
db.url.0=jdbc:dm://ip:5236/NACOS_CONFIG?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=username
db.password.0=password

4、修改代码config下的ExternalDataSourceProperties.class
在这里插入图片描述
修改如下:

	private String jdbcDriverName;

    public String getJdbcDriverName() {
        return jdbcDriverName;
    }

    public void setJdbcDriverName(String jdbcDriverName) {
        this.jdbcDriverName = jdbcDriverName;
    }

	 private String jdbcScheme;

    public String getJdbcScheme() {
        return jdbcScheme;
    }

    public void setJdbcScheme(String jdbcScheme) {
        this.jdbcScheme = jdbcScheme;
    }

    /**
     * Build serveral HikariDataSource.
     *
     * @param environment {@link Environment}
     * @param callback    Callback function when constructing data source
     * @return List of {@link HikariDataSource}
     */
    List<HikariDataSource> build(Environment environment, Callback<HikariDataSource> callback) {
        List<HikariDataSource> dataSources = new ArrayList<>();
        Binder.get(environment).bind("db", Bindable.ofInstance(this));
        Preconditions.checkArgument(Objects.nonNull(num), "db.num is null");
        Preconditions.checkArgument(CollectionUtils.isNotEmpty(user), "db.user or db.user.[index] is null");
        Preconditions.checkArgument(CollectionUtils.isNotEmpty(password), "db.password or db.password.[index] is null");
        for (int index = 0; index < num; index++) {
            int currentSize = index + 1;
            Preconditions.checkArgument(url.size() >= currentSize, "db.url.%s is null", index);
            DataSourcePoolProperties poolProperties = DataSourcePoolProperties.build(environment);
            poolProperties.setDriverClassName(JDBC_DRIVER_NAME);
            poolProperties.setJdbcUrl(url.get(index).trim());
            poolProperties.setUsername(getOrDefault(user, index, user.get(0)).trim());
            poolProperties.setPassword(getOrDefault(password, index, password.get(0)).trim());
            HikariDataSource ds = poolProperties.getDataSource();
            ds.setConnectionTestQuery(TEST_QUERY);
            ds.setIdleTimeout(TimeUnit.MINUTES.toMillis(10L));
            ds.setConnectionTimeout(TimeUnit.SECONDS.toMillis(3L));
            System.out.println("#################################");
            System.out.println("jdbcDriverName=" + jdbcDriverName);
            if (StringUtils.isNotEmpty(jdbcDriverName)) {
                // 增加其他数据库驱动的支持
                ds.setDriverClassName(jdbcDriverName);
            } else {
                //默认使用mysql驱动
                ds.setDriverClassName(JDBC_DRIVER_NAME);
            }
            System.out.println("#################################");
            System.out.println("dataSources=" + dataSources);
            dataSources.add(ds);
            callback.accept(ds);
        }
        Preconditions.checkArgument(CollectionUtils.isNotEmpty(dataSources), "no datasource available");
        return dataSources;
    }

需要添加模式名,修改代码

com.alibaba.nacos.config.server.service.datasource

在这里插入图片描述

5、修改对应实现类ExternalDataSourceServiceImpl.class
将所有的sql语句加上模式名称,如下
在这里插入图片描述
添加数据库初始化配置

com.alibaba.nacos.config.server.constant.PropertiesConstant

新加public static final String DM = “dm”;

package com.alibaba.nacos.config.server.constant;

/**
 * PropertiesConstant.
 *
 * @author lixiaoshuang
 */
public class PropertiesConstant {
    
    public static final String NOTIFY_CONNECT_TIMEOUT = "notifyConnectTimeout";
    
    public static final String NOTIFY_SOCKET_TIMEOUT = "notifySocketTimeout";
    
    public static final String IS_HEALTH_CHECK = "isHealthCheck";
    
    public static final String MAX_HEALTH_CHECK_FAIL_COUNT = "maxHealthCheckFailCount";
    
    public static final String MAX_CONTENT = "maxContent";
    
    public static final String IS_MANAGE_CAPACITY = "isManageCapacity";
    
    public static final String IS_CAPACITY_LIMIT_CHECK = "isCapacityLimitCheck";
    
    public static final String DEFAULT_CLUSTER_QUOTA = "defaultClusterQuota";
    
    public static final String DEFAULT_GROUP_QUOTA = "defaultGroupQuota";
    
    public static final String DEFAULT_TENANT_QUOTA = "defaultTenantQuota";
    
    public static final String DEFAULT_MAX_SIZE = "defaultMaxSize";
    
    public static final String DEFAULT_MAX_AGGR_COUNT = "defaultMaxAggrCount";
    
    public static final String DEFAULT_MAX_AGGR_SIZE = "defaultMaxAggrSize";
    
    public static final String CORRECT_USAGE_DELAY = "correctUsageDelay";
    
    public static final String INITIAL_EXPANSION_PERCENT = "initialExpansionPercent";
    
    public static final String SPRING_DATASOURCE_PLATFORM = "spring.datasource.platform";
    
    public static final String MYSQL = "mysql";

    public static final String DM = "dm";
    
    public static final String EMBEDDED_STORAGE = "embeddedStorage";
    
}

com.alibaba.nacos.config.server.utils.PropertyUtil

新增 setUseExternalDB(PropertiesConstant.DM
.equalsIgnoreCase(getString(PropertiesConstant.SPRING_DATASOURCE_PLATFORM, “”)));

在这里插入图片描述

6、生成部署文件
执行语句

mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Dcheckstyle.skip=true clean install -U
//或者
mvn -Prelease-nacos clean install -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dpmd.skip=true -Drat.skip=true -U

在这里插入图片描述
7、目标文件位置

distribution/target/nacos-server-$version 下的 nacos 文件夹 就是最终的输出物
在这里插入图片描述

8、启动
启动 nacos,bin文件夹下
sh startup.sh -m standalone查看启动日志
tail -f 支持达梦改造后的Nacos/nacos/logs/start.out

9、登录
http://ip:8848/nacos/index.html

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Docker与Nacos适配达梦数据库,我们可以采取以下步骤: 1. 在Docker中下载并安装Nacos镜像。可以使用Docker Hub上的官方Nacos镜像,该镜像提供了可用于适配不同数据库的配置选项。 2. 配置Nacos连接达梦数据库。编辑Nacos的配置文件nacos/conf/application.properties,在该文件中找到数据库相关配置项,如`spring.datasource.url`、`spring.datasource.username`、`spring.datasource.password`等,将其按照达梦数据库的连接信息进行相应修改。 3. 构建并启动Nacos容器。使用Docker命令行工具,执行类似以下命令来构建并启动Nacos容器: ``` docker run -d -p 8848:8848 --name nacos-server \ -e MODE=standalone \ -e MYSQL_SERVICE_HOST=<数据库主机地址> \ -e MYSQL_SERVICE_PORT=<数据库端口> \ -e MYSQL_SERVICE_DB_NAME=<数据库名称> \ -e MYSQL_SERVICE_USER=<数据库用户名> \ -e MYSQL_SERVICE_PASSWORD=<数据库密码> \ --restart=always \ nacos/nacos-server:latest ``` 替换<数据库主机地址>、<数据库端口>、<数据库名称>、<数据库用户名>、<数据库密码>为实际达梦数据库的信息。 4. 确认Nacos容器已成功启动。使用Docker命令行工具执行以下命令来查看容器状态: ``` docker ps ``` 如果容器状态为Up,则表示Nacos容器已成功运行。 5. 启动达梦数据库。确保达梦数据库已成功启动,并且Nacos容器可以连接到达梦数据库。可以使用数据库客户端验证连接信息是否正确。 6. 访问Nacos管理界面。在浏览器中输入Nacos容器所在主机的IP地址和端口号(默认为8848),访问Nacos的管理界面。在界面中可以配置和管理Nacos的服务、配置等。 通过以上步骤,我们可以在Docker中适配Nacos达梦数据库实现服务注册和配置管理。这样,我们就可以使用Docker来构建和管理基于Nacos达梦数据库的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值