Nacos适配达梦

  1. 下载nacos源码

GitHub下载地址:https://github.com/alibaba/nacos/releases/tag/2.1.2
Gitee下载地址:https://gitee.com/mirrors/Nacos/tree/2.1.2

  1. idea安装protobuf插件

在这里插入图片描述

  1. 使用maven编译项目

在这里插入图片描述
遇到xxx不存在的就clean后compile一遍
在这里插入图片描述

  1. 修改pom文件,引入达梦驱动(中央仓库和阿里的仓库都有)
			<dependency>
                <groupId>com.dameng</groupId>
                <artifactId>DmJdbcDriver18</artifactId>
                <version>8.1.1.193</version>
                <!-- <version>1.8</version> -->
            </dependency>

修改父工程的pom文件,并注释掉mysql的依赖:
在这里插入图片描述
在这里插入图片描述
修改naming模块和config模块下的pom文件,同样注掉MySQL驱动:
在这里插入图片描述
在这里插入图片描述
5. 修改console模块下的application.properties:

spring.datasource.platform=mysql,此处依然是mysql,写dm的话会导致启动时no datasource set;
platform只是表示是否使用外置数据库 ; 使用什么数据库则由db.jdbcDriverName决定

### If use MySQL as datasource: 
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.jdbcDriverName=dm.jdbc.driver.DmDriver
db.url.0=jdbc:dm://localhost:5236/NACOS?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
db.user.0=NACOS
db.password.0=xxx
  1. 修改distribution模块下的application.properties:
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.jdbcDriverName=dm.jdbc.driver.DmDriver
db.url.0=jdbc:dm://localhost:5236/NACOS?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
db.user.0=NACOS
db.password.0=xxx
  1. 修改nacos-config模块下的com.alibaba.nacos.config.server.service.datasource.ExternalDataSourceProperties.java文件
    (1).添加private String jdbcDriverName;
    (2).private static final String TEST_QUERY = “SELECT 1 FROM dual”;
    (3).
//poolProperties.setDriverClassName(jdbcDriverName);
            if (StringUtils.isEmpty(jdbcDriverName)) {
                poolProperties.setDriverClassName(JDBC_DRIVER_NAME);
            } else {
                poolProperties.setDriverClassName(jdbcDriverName);
            }

完整代码如下:

/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * 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
 *
 * http://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.alibaba.nacos.config.server.service.datasource;

import com.alibaba.nacos.common.utils.Preconditions;
import com.alibaba.nacos.common.utils.StringUtils;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.boot.context.properties.bind.Bindable;
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.core.env.Environment;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import static com.alibaba.nacos.common.utils.CollectionUtils.getOrDefault;

/**
 * Properties of external DataSource.
 *
 * @author Nacos
 */
public class ExternalDataSourceProperties {
    
    private static final String JDBC_DRIVER_NAME = "com.mysql.cj.jdbc.Driver";

    private String jdbcDriverName;

    private static final String TEST_QUERY = "SELECT 1 FROM dual";
    
    private Integer num;
    
    private List<String> url = new ArrayList<>();
    
    private List<String> user = new ArrayList<>();
    
    private List<String> password = new ArrayList<>();
    
    public void setNum(Integer num) {
        this.num = num;
    }
    
    public void setUrl(List<String> url) {
        this.url = url;
    }
    
    public void setUser(List<String> user) {
        this.user = user;
    }
    
    public void setPassword(List<String> password) {
        this.password = password;
    }

    public String getJdbcDriverName() {
        return jdbcDriverName;
    }

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

    
    /**
     * 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(jdbcDriverName);
            if (StringUtils.isEmpty(jdbcDriverName)) {
                poolProperties.setDriverClassName(JDBC_DRIVER_NAME);
            } else {
                poolProperties.setDriverClassName(jdbcDriverName);
            }
            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);
            dataSources.add(ds);
            callback.accept(ds);
        }
        Preconditions.checkArgument(CollectionUtils.isNotEmpty(dataSources), "no datasource available");
        return dataSources;
    }
    
    interface Callback<D> {
        
        /**
         * Perform custom logic.
         *
         * @param datasource dataSource.
         */
        void accept(D datasource);
    }
}

  1. 修改 com/alibaba/nacos/config/server/constant/PropertiesConstant.java;
    将源代码的mysql改为DM
    在这里插入图片描述
  2. 修改com/alibaba/nacos/config/server/utils/PropertyUtil.java
    亦是将mysql改为DM
setUseExternalDB(PropertiesConstant.DM
                    .equalsIgnoreCase(getString(PropertiesConstant.SPRING_DATASOURCE_PLATFORM, "")));
  1. 修改com.alibaba.nacos.core.listener.StartingApplicationListener.java

在这里插入图片描述

  1. 编辑启动类,加入-Dnacos.standalone=true参数,意思是以单机模式启动,启动类在console/src/main/java/com/alibaba/nacos/Nacos.java
    在这里插入图片描述
  2. 数据库脚本,“NACOS”为模式名
CREATE TABLE "NACOS"."config_info"
(
"id" BIGINT IDENTITY(1, 1) NOT NULL,
"data_id" VARCHAR(255) NOT NULL,
"group_id" VARCHAR(255),
"content" CLOB NOT NULL,
"md5" VARCHAR(32),
"gmt_create" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"gmt_modified" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"src_user" TEXT,
"src_ip" VARCHAR(50),
"app_name" VARCHAR(128),
"tenant_id" VARCHAR(128) DEFAULT '',
"c_desc" VARCHAR(256),
"c_use" VARCHAR(64),
"effect" VARCHAR(64),
"type" VARCHAR(64),
"c_schema" TEXT,
"encrypted_data_key" TEXT NOT NULL,
NOT CLUSTER PRIMARY KEY("id"),
CONSTRAINT "uk_configinfo_datagrouptenant" UNIQUE("data_id", "group_id", "tenant_id")) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."config_info" IS 'config_info';
COMMENT ON COLUMN "NACOS"."config_info"."content" IS 'content';
COMMENT ON COLUMN "NACOS"."config_info"."data_id" IS 'data_id';
COMMENT ON COLUMN "NACOS"."config_info"."encrypted_data_key" IS '秘钥';
COMMENT ON COLUMN "NACOS"."config_info"."gmt_create" IS '创建时间';
COMMENT ON COLUMN "NACOS"."config_info"."gmt_modified" IS '修改时间';
COMMENT ON COLUMN "NACOS"."config_info"."id" IS 'id';
COMMENT ON COLUMN "NACOS"."config_info"."md5" IS 'md5';
COMMENT ON COLUMN "NACOS"."config_info"."src_ip" IS 'source ip';
COMMENT ON COLUMN "NACOS"."config_info"."src_user" IS 'source user';
COMMENT ON COLUMN "NACOS"."config_info"."tenant_id" IS '租户字段';


CREATE TABLE "NACOS"."config_info_aggr"
(
"id" BIGINT IDENTITY(1, 1) NOT NULL,
"data_id" VARCHAR(255) NOT NULL,
"group_id" VARCHAR(255) NOT NULL,
"datum_id" VARCHAR(255) NOT NULL,
"content" CLOB NOT NULL,
"gmt_modified" TIMESTAMP(0) NOT NULL,
"app_name" VARCHAR(128),
"tenant_id" VARCHAR(128) DEFAULT '',
NOT CLUSTER PRIMARY KEY("id"),
CONSTRAINT "uk_configinfoaggr_datagrouptenantdatum" UNIQUE("data_id", "group_id", "tenant_id", "datum_id")) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."config_info_aggr" IS '增加租户字段';
COMMENT ON COLUMN "NACOS"."config_info_aggr"."content" IS '内容';
COMMENT ON COLUMN "NACOS"."config_info_aggr"."data_id" IS 'data_id';
COMMENT ON COLUMN "NACOS"."config_info_aggr"."datum_id" IS 'datum_id';
COMMENT ON COLUMN "NACOS"."config_info_aggr"."gmt_modified" IS '修改时间';
COMMENT ON COLUMN "NACOS"."config_info_aggr"."group_id" IS 'group_id';
COMMENT ON COLUMN "NACOS"."config_info_aggr"."id" IS 'id';
COMMENT ON COLUMN "NACOS"."config_info_aggr"."tenant_id" IS '租户字段';


CREATE TABLE "NACOS"."config_info_beta"
(
"id" BIGINT IDENTITY(1, 1) NOT NULL,
"data_id" VARCHAR(255) NOT NULL,
"group_id" VARCHAR(128) NOT NULL,
"app_name" VARCHAR(128),
"content" CLOB NOT NULL,
"beta_ips" VARCHAR(1024),
"md5" VARCHAR(32),
"gmt_create" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"gmt_modified" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"src_user" TEXT,
"src_ip" VARCHAR(50),
"tenant_id" VARCHAR(128) DEFAULT '',
"encrypted_data_key" TEXT NOT NULL,
NOT CLUSTER PRIMARY KEY("id"),
CONSTRAINT "uk_configinfobeta_datagrouptenant" UNIQUE("data_id", "group_id", "tenant_id")) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."config_info_beta" IS 'config_info_beta';
COMMENT ON COLUMN "NACOS"."config_info_beta"."app_name" IS 'app_name';
COMMENT ON COLUMN "NACOS"."config_info_beta"."beta_ips" IS 'betaIps';
COMMENT ON COLUMN "NACOS"."config_info_beta"."content" IS 'content';
COMMENT ON COLUMN "NACOS"."config_info_beta"."data_id" IS 'data_id';
COMMENT ON COLUMN "NACOS"."config_info_beta"."encrypted_data_key" IS '秘钥';
COMMENT ON COLUMN "NACOS"."config_info_beta"."gmt_create" IS '创建时间';
COMMENT ON COLUMN "NACOS"."config_info_beta"."gmt_modified" IS '修改时间';
COMMENT ON COLUMN "NACOS"."config_info_beta"."group_id" IS 'group_id';
COMMENT ON COLUMN "NACOS"."config_info_beta"."id" IS 'id';
COMMENT ON COLUMN "NACOS"."config_info_beta"."md5" IS 'md5';
COMMENT ON COLUMN "NACOS"."config_info_beta"."src_ip" IS 'source ip';
COMMENT ON COLUMN "NACOS"."config_info_beta"."src_user" IS 'source user';
COMMENT ON COLUMN "NACOS"."config_info_beta"."tenant_id" IS '租户字段';


CREATE TABLE "NACOS"."config_info_tag"
(
"id" BIGINT IDENTITY(1, 1) NOT NULL,
"data_id" VARCHAR(255) NOT NULL,
"group_id" VARCHAR(128) NOT NULL,
"tenant_id" VARCHAR(128) DEFAULT '',
"tag_id" VARCHAR(128) NOT NULL,
"app_name" VARCHAR(128),
"content" CLOB NOT NULL,
"md5" VARCHAR(32),
"gmt_create" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"gmt_modified" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"src_user" TEXT,
"src_ip" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("id"),
CONSTRAINT "uk_configinfotag_datagrouptenanttag" UNIQUE("data_id", "group_id", "tenant_id", "tag_id")) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."config_info_tag" IS 'config_info_tag';
COMMENT ON COLUMN "NACOS"."config_info_tag"."app_name" IS 'app_name';
COMMENT ON COLUMN "NACOS"."config_info_tag"."content" IS 'content';
COMMENT ON COLUMN "NACOS"."config_info_tag"."data_id" IS 'data_id';
COMMENT ON COLUMN "NACOS"."config_info_tag"."gmt_create" IS '创建时间';
COMMENT ON COLUMN "NACOS"."config_info_tag"."gmt_modified" IS '修改时间';
COMMENT ON COLUMN "NACOS"."config_info_tag"."group_id" IS 'group_id';
COMMENT ON COLUMN "NACOS"."config_info_tag"."id" IS 'id';
COMMENT ON COLUMN "NACOS"."config_info_tag"."md5" IS 'md5';
COMMENT ON COLUMN "NACOS"."config_info_tag"."src_ip" IS 'source ip';
COMMENT ON COLUMN "NACOS"."config_info_tag"."src_user" IS 'source user';
COMMENT ON COLUMN "NACOS"."config_info_tag"."tag_id" IS 'tag_id';
COMMENT ON COLUMN "NACOS"."config_info_tag"."tenant_id" IS 'tenant_id';


CREATE TABLE "NACOS"."config_tags_relation"
(
"id" BIGINT NOT NULL,
"tag_name" VARCHAR(128) NOT NULL,
"tag_type" VARCHAR(64),
"data_id" VARCHAR(255) NOT NULL,
"group_id" VARCHAR(128) NOT NULL,
"tenant_id" VARCHAR(128) DEFAULT '',
"nid" BIGINT IDENTITY(1, 1) NOT NULL,
NOT CLUSTER PRIMARY KEY("nid"),
CONSTRAINT "uk_configtagrelation_configidtag" UNIQUE("id", "tag_name", "tag_type")) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."config_tags_relation" IS 'config_tag_relation';
COMMENT ON COLUMN "NACOS"."config_tags_relation"."data_id" IS 'data_id';
COMMENT ON COLUMN "NACOS"."config_tags_relation"."group_id" IS 'group_id';
COMMENT ON COLUMN "NACOS"."config_tags_relation"."id" IS 'id';
COMMENT ON COLUMN "NACOS"."config_tags_relation"."tag_name" IS 'tag_name';
COMMENT ON COLUMN "NACOS"."config_tags_relation"."tag_type" IS 'tag_type';
COMMENT ON COLUMN "NACOS"."config_tags_relation"."tenant_id" IS 'tenant_id';


CREATE  INDEX "INDEX27450417857800" ON "NACOS"."config_tags_relation"("tenant_id" ASC) STORAGE(ON "NACOS", CLUSTERBTR) ;

CREATE TABLE "NACOS"."group_capacity"
(
"id" BIGINT IDENTITY(1, 1) NOT NULL,
"group_id" VARCHAR(128) DEFAULT '' NOT NULL,
"quota" BIGINT DEFAULT 0 NOT NULL,
"usage" BIGINT DEFAULT 0 NOT NULL,
"max_size" BIGINT DEFAULT 0 NOT NULL,
"max_aggr_count" BIGINT DEFAULT 0 NOT NULL,
"max_aggr_size" BIGINT DEFAULT 0 NOT NULL,
"max_history_count" BIGINT DEFAULT 0 NOT NULL,
"gmt_create" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"gmt_modified" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
NOT CLUSTER PRIMARY KEY("id"),
CONSTRAINT "uk_group_id" UNIQUE("group_id"),
CHECK("quota" >= 0)
,CHECK("usage" >= 0)
,CHECK("max_size" >= 0)
,CHECK("max_aggr_count" >= 0)
,CHECK("max_aggr_size" >= 0)
,CHECK("max_history_count" >= 0)) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."group_capacity" IS '集群、各Group容量信息表';
COMMENT ON COLUMN "NACOS"."group_capacity"."gmt_create" IS '创建时间';
COMMENT ON COLUMN "NACOS"."group_capacity"."gmt_modified" IS '修改时间';
COMMENT ON COLUMN "NACOS"."group_capacity"."group_id" IS 'Group ID,空字符表示整个集群';
COMMENT ON COLUMN "NACOS"."group_capacity"."id" IS '主键ID';
COMMENT ON COLUMN "NACOS"."group_capacity"."max_aggr_count" IS '聚合子配置最大个数,,0表示使用默认值';
COMMENT ON COLUMN "NACOS"."group_capacity"."max_aggr_size" IS '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值';
COMMENT ON COLUMN "NACOS"."group_capacity"."max_history_count" IS '最大变更历史数量';
COMMENT ON COLUMN "NACOS"."group_capacity"."max_size" IS '单个配置大小上限,单位为字节,0表示使用默认值';
COMMENT ON COLUMN "NACOS"."group_capacity"."quota" IS '配额,0表示使用默认值';
COMMENT ON COLUMN "NACOS"."group_capacity"."usage" IS '使用量';


CREATE TABLE "NACOS"."his_config_info"
(
"id" DECIMAL(20,0) NOT NULL,
"nid" BIGINT IDENTITY(1, 1) NOT NULL,
"data_id" VARCHAR(255) NOT NULL,
"group_id" VARCHAR(128) NOT NULL,
"app_name" VARCHAR(128),
"content" CLOB NOT NULL,
"md5" VARCHAR(32),
"gmt_create" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"gmt_modified" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"src_user" TEXT,
"src_ip" VARCHAR(50),
"op_type" CHAR(10),
"tenant_id" VARCHAR(128) DEFAULT '',
"encrypted_data_key" TEXT NOT NULL,
NOT CLUSTER PRIMARY KEY("nid"),
CHECK("id" >= 0)) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."his_config_info" IS '多租户改造';
COMMENT ON COLUMN "NACOS"."his_config_info"."app_name" IS 'app_name';
COMMENT ON COLUMN "NACOS"."his_config_info"."encrypted_data_key" IS '秘钥';
COMMENT ON COLUMN "NACOS"."his_config_info"."tenant_id" IS '租户字段';


CREATE  INDEX "idx_gmt_create" ON "NACOS"."his_config_info"("gmt_create" ASC) STORAGE(ON "NACOS", CLUSTERBTR) ;
CREATE  INDEX "idx_did" ON "NACOS"."his_config_info"("data_id" ASC) STORAGE(ON "NACOS", CLUSTERBTR) ;
CREATE  INDEX "idx_gmt_modified" ON "NACOS"."his_config_info"("gmt_modified" ASC) STORAGE(ON "NACOS", CLUSTERBTR) ;

CREATE TABLE "NACOS"."permissions"
(
"role" VARCHAR(50) NOT NULL,
"resource" VARCHAR(255) NOT NULL,
"action" VARCHAR(8) NOT NULL,
CONSTRAINT "uk_role_permission" UNIQUE("role", "resource", "action")) STORAGE(ON "NACOS", CLUSTERBTR) ;

CREATE TABLE "NACOS"."roles"
(
"username" VARCHAR(50) NOT NULL,
"role" VARCHAR(50) NOT NULL,
CONSTRAINT "idx_user_role" UNIQUE("username", "role")) STORAGE(ON "NACOS", CLUSTERBTR) ;
insert into "NACOS"."roles"("username", "role")  VALUES('nacos', 'ROLE_ADMIN');


CREATE TABLE "NACOS"."tenant_capacity"
(
"id" BIGINT IDENTITY(1, 1) NOT NULL,
"tenant_id" VARCHAR(128) DEFAULT '' NOT NULL,
"quota" BIGINT DEFAULT 0 NOT NULL,
"usage" BIGINT DEFAULT 0 NOT NULL,
"max_size" BIGINT DEFAULT 0 NOT NULL,
"max_aggr_count" BIGINT DEFAULT 0 NOT NULL,
"max_aggr_size" BIGINT DEFAULT 0 NOT NULL,
"max_history_count" BIGINT DEFAULT 0 NOT NULL,
"gmt_create" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
"gmt_modified" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,
NOT CLUSTER PRIMARY KEY("id"),
CONSTRAINT "uk_tenant_id" UNIQUE("tenant_id"),
CHECK("quota" >= 0)
,CHECK("usage" >= 0)
,CHECK("max_size" >= 0)
,CHECK("max_aggr_count" >= 0)
,CHECK("max_aggr_size" >= 0)
,CHECK("max_history_count" >= 0)) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."tenant_capacity" IS '租户容量信息表';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."gmt_create" IS '创建时间';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."gmt_modified" IS '修改时间';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."id" IS '主键ID';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."max_aggr_count" IS '聚合子配置最大个数';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."max_aggr_size" IS '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."max_history_count" IS '最大变更历史数量';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."max_size" IS '单个配置大小上限,单位为字节,0表示使用默认值';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."quota" IS '配额,0表示使用默认值';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."tenant_id" IS 'Tenant ID';
COMMENT ON COLUMN "NACOS"."tenant_capacity"."usage" IS '使用量';


CREATE TABLE "NACOS"."tenant_info"
(
"id" BIGINT IDENTITY(3, 1) NOT NULL,
"kp" VARCHAR(128) NOT NULL,
"tenant_id" VARCHAR(128) DEFAULT '',
"tenant_name" VARCHAR(128) DEFAULT '',
"tenant_desc" VARCHAR(256),
"create_source" VARCHAR(32),
"gmt_create" BIGINT NOT NULL,
"gmt_modified" BIGINT NOT NULL,
NOT CLUSTER PRIMARY KEY("id"),
CONSTRAINT "uk_tenant_info_kptenantid" UNIQUE("kp", "tenant_id")) STORAGE(ON "NACOS", CLUSTERBTR) ;

COMMENT ON TABLE "NACOS"."tenant_info" IS 'tenant_info';
COMMENT ON COLUMN "NACOS"."tenant_info"."create_source" IS 'create_source';
COMMENT ON COLUMN "NACOS"."tenant_info"."gmt_create" IS '创建时间';
COMMENT ON COLUMN "NACOS"."tenant_info"."gmt_modified" IS '修改时间';
COMMENT ON COLUMN "NACOS"."tenant_info"."id" IS 'id';
COMMENT ON COLUMN "NACOS"."tenant_info"."kp" IS 'kp';
COMMENT ON COLUMN "NACOS"."tenant_info"."tenant_desc" IS 'tenant_desc';
COMMENT ON COLUMN "NACOS"."tenant_info"."tenant_id" IS 'tenant_id';
COMMENT ON COLUMN "NACOS"."tenant_info"."tenant_name" IS 'tenant_name';


CREATE  INDEX "idx_tenant_id" ON "NACOS"."tenant_info"("tenant_id" ASC) STORAGE(ON "NACOS", CLUSTERBTR) ;

CREATE TABLE "NACOS"."users"
(
"username" VARCHAR(50) NOT NULL,
"password" VARCHAR(500) NOT NULL,
"enabled" TINYINT NOT NULL,
NOT CLUSTER PRIMARY KEY("username")) STORAGE(ON "NACOS", CLUSTERBTR) ;
insert into "NACOS"."users"("username", "password", "enabled") VALUES('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

  1. 启动Nacos.java,访问http://localhost:8848/nacos
    在这里插入图片描述
  2. 源码打包:
    (1).跳过格式校验:父工程pom.xml中注掉maven-pmd-plugin,maven-checkstyle-plugin相关控件配置
    (2).跳过认证:父工程pom.xml中注掉apache-rat-plugin控件配置
    (3).在idea终端执行打包命令

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
在这里插入图片描述
打包成功后的压缩包是在distribution模块下的target下:

在这里插入图片描述

### 回答1: Docker和Nacos是两个非常流行的开源项目,能够方便地实现应用程序的容器化和服务的注册与发现。然而,在应用中使用数据库是非常普遍的,而使用达梦数据库则是一种可能的选择。在这种情况下,如何在Docker和Nacos适配达梦数据库呢? 首先,我们需要考虑各个组件之间的兼容性。Docker和Nacos本身都是与多种数据库兼容的,但是达梦数据库是否被兼容还需要进行测试。如果达梦数据库本身已经支持Docker容器,那么整个适配过程就会相对简单。 其次,我们需要将达梦数据库的连接信息配置到Nacos中,这样就可以在应用程序中使用Nacos进行服务的注册与发现,并且使用达梦数据库进行数据存储。Nacos提供了一些配置管理的功能,可以方便地将数据库连接信息作为配置信息被注册到Nacos中。 最后,我们需要在Docker容器中安装达梦数据库,以便应用程序能够访问到数据库。这需要我们对Docker容器的部署和配置有一定的了解。 综上所述,适配达梦数据库需要我们对Docker、Nacos达梦数据库都有深入的了解,需要进行多方面的测试和调试。如果我们成功地实现了这个适配,那么就能够为应用程序提供更加稳定和可靠的服务,并且实现更好的数据存储和管理。 ### 回答2: Docker与Nacos适配达梦的过程需要注意以下几点: 首先,需要安装Docker和Nacos。Docker是一个容器化技术,使得应用程序能够在不同的平台上运行,Nacos是服务发现和配置管理平台,它可以协助实现多个服务之间的通讯。而达梦则是一种高效的数据库管理系统,是深圳达梦信息技术有限公司自主研发的数据管理系统。 其次,需要进行适配适配是指将Docker和Nacos达梦进行连接。这样,Docker容器中的应用程序就可以通过Nacos发现其他服务,并连接到达梦数据库。 最后,需要进行测试。测试是为了确保适配成功。测试需要验证数据库的读写操作是否正常,并测试所有服务之间的通讯。如果测试成功,则说明Docker和Nacos已经适配达梦。 总之,Docker和Nacos适配达梦是一项非常重要的技术,它可以优化服务器资源的使用,并实现多个应用程序之间的通讯和数据共享。同时,这项技术还可以提高系统的可靠性、可扩展性和安全性,适配达梦将大大提高企业的效率和竞争力。 ### 回答3: Docker是一种在容器上运行应用程序的平台,而Nacos是一个分布式系统服务治理平台,两者都是当前软件开发中非常流行的工具。达梦是一种数据库管理系统,为了使Docker和Nacos能够与达梦数据库适配,需要进行适当配置和调整。 在开始配合前,首先要确保Docker和Nacos服务均已安装并运行。然后,在Nacos配置文件中,需要添加相应的配置项,如JDBC driver class、JDBC URL、username、password等,以便能够连接到达梦数据库。在Docker容器中,还需安装达梦数据库和JDBC驱动程序,以便能够正确连接和操作达梦数据库。 由于Nacos是一个服务治理平台,因此在适配达梦数据库时,还需将数据库服务注册到Nacos上,并配置相应的元数据信息,并在客户端中使用Nacos的服务发现功能来获取达梦数据库的相关信息。 总的来说,Docker和Nacos适配达梦需要进行多项配置和调整,包括在Nacos的配置文件中添加达梦数据库的相关信息,安装达梦数据库和JDBC驱动程序,将数据库服务注册到Nacos上,以及在客户端中使用Nacos的服务发现功能来获取达梦数据库的信息。适配达梦的过程可能会有些复杂,但是这些工具的使用和适配能够大幅提高开发人员的工作效率和开发质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream答案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值