点击这里直接看作者开源的成品
遇到问题可在评论区给我留言
加微信:pky86676022 有偿提供技术支持(请说明来意)
从2.2.0版本开始,nacos可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应多数据源插件。
下面我来演示通过多数据源插件实现nacos适配达梦数据库
一、准备工作
首先要下载nacos源码,nacos-plugin源码,还要准备好达梦数据库环境。
这里我采用nacos2.3.2的源码,下载路径https://github.com/alibaba/nacos/archive/refs/tags/2.3.2.zip
nacos插件源码,下载路径https://github.com/pkyit/nacos-plugin/archive/refs/heads/develop.zip
将下载的2个压缩包解压缩并用idea打开:
在达梦数据库中新建一个名叫NACOS的数据库,然后在NACOS数据库下创建如下表:(注意最后有个commit提交事务)- CREATE TABLE "NACOS"."USERS"
- (
- "USERNAME" VARCHAR(50) NOT NULL,
- "PASSWORD" VARCHAR(500) NOT NULL,
- "ENABLED" TINYINT NOT NULL
- );
- CREATE TABLE "NACOS"."TENANT_INFO"
- (
- "ID" BIGINT IDENTITY(1,1) NOT NULL,
- "KP" VARCHAR(128) NOT NULL,
- "TENANT_ID" VARCHAR(128) DEFAULT ''
- NULL,
- "TENANT_NAME" VARCHAR(128) DEFAULT ''
- NULL,
- "TENANT_DESC" VARCHAR(256) NULL,
- "CREATE_SOURCE" VARCHAR(32) NULL,
- "GMT_CREATE" BIGINT NOT NULL,
- "GMT_MODIFIED" BIGINT NOT NULL
- );
- 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
- );
- CREATE TABLE "NACOS"."ROLES"
- (
- "USERNAME" VARCHAR(50) NOT NULL,
- "ROLE" VARCHAR(50) NOT NULL
- );
- CREATE TABLE "NACOS"."PERMISSIONS"
- (
- "ROLE" VARCHAR(50) NOT NULL,
- "RESOURCE" VARCHAR(255) NOT NULL,
- "ACTION" VARCHAR(8) NOT NULL
- );
- 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) NULL,
- "CONTENT" CLOB NOT NULL,
- "MD5" VARCHAR(32) NULL,
- "GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "SRC_USER" TEXT NULL,
- "SRC_IP" VARCHAR(50) NULL,
- "OP_TYPE" CHAR(10) NULL,
- "TENANT_ID" VARCHAR(128) DEFAULT ''
- NULL,
- "ENCRYPTED_DATA_KEY" TEXT NOT NULL
- );
- 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
- );
- CREATE TABLE "NACOS"."CONFIG_TAGS_RELATION"
- (
- "ID" BIGINT NOT NULL,
- "TAG_NAME" VARCHAR(128) NOT NULL,
- "TAG_TYPE" VARCHAR(64) NULL,
- "DATA_ID" VARCHAR(255) NOT NULL,
- "GROUP_ID" VARCHAR(128) NOT NULL,
- "TENANT_ID" VARCHAR(128) DEFAULT ''
- NULL,
- "NID" BIGINT IDENTITY(1,1) NOT NULL
- );
- 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 ''
- NULL,
- "TAG_ID" VARCHAR(128) NOT NULL,
- "APP_NAME" VARCHAR(128) NULL,
- "CONTENT" CLOB NOT NULL,
- "MD5" VARCHAR(32) NULL,
- "GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "SRC_USER" TEXT NULL,
- "SRC_IP" VARCHAR(50) NULL
- );
- 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) NULL,
- "CONTENT" CLOB NOT NULL,
- "BETA_IPS" VARCHAR(1024) NULL,
- "MD5" VARCHAR(32) NULL,
- "GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "SRC_USER" TEXT NULL,
- "SRC_IP" VARCHAR(50) NULL,
- "TENANT_ID" VARCHAR(128) DEFAULT ''
- NULL,
- "ENCRYPTED_DATA_KEY" TEXT NOT NULL
- );
- CREATE TABLE "NACOS"."CONFIG_INFO_AGGR"
- (
- "ID" BIGINT IDENTITY(1,1) NOT NULL,
- "DATA_ID" VARCHAR(255) NOT NULL,
- "GROUP_ID" VARCHAR(128) NOT NULL,
- "DATUM_ID" VARCHAR(255) NOT NULL,
- "CONTENT" CLOB NOT NULL,
- "GMT_MODIFIED" TIMESTAMP(0) NOT NULL,
- "APP_NAME" VARCHAR(128) NULL,
- "TENANT_ID" VARCHAR(128) DEFAULT ''
- NULL
- );
- CREATE TABLE "NACOS"."CONFIG_INFO"
- (
- "ID" BIGINT IDENTITY(1,1) NOT NULL,
- "DATA_ID" VARCHAR(255) NOT NULL,
- "GROUP_ID" VARCHAR(128) NULL,
- "CONTENT" CLOB NOT NULL,
- "MD5" VARCHAR(32) NULL,
- "GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
- NOT NULL,
- "SRC_USER" TEXT NULL,
- "SRC_IP" VARCHAR(50) NULL,
- "APP_NAME" VARCHAR(128) NULL,
- "TENANT_ID" VARCHAR(128) DEFAULT ''
- NULL,
- "C_DESC" VARCHAR(256) NULL,
- "C_USE" VARCHAR(64) NULL,
- "EFFECT" VARCHAR(64) NULL,
- "TYPE" VARCHAR(64) NULL,
- "C_SCHEMA" TEXT NULL,
- "ENCRYPTED_DATA_KEY" TEXT NOT NULL
- );
- ALTER TABLE "NACOS"."USERS"
- ADD CONSTRAINT PRIMARY KEY ("USERNAME");
- ALTER TABLE "NACOS"."TENANT_INFO"
- ADD CONSTRAINT PRIMARY KEY ("ID");
- ALTER TABLE "NACOS"."TENANT_INFO"
- ADD CONSTRAINT "UK_TENANT_INFO_KPTENANTID" UNIQUE ("KP", "TENANT_ID");
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CONSTRAINT PRIMARY KEY ("ID");
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CONSTRAINT "UK_TENANT_ID" UNIQUE ("TENANT_ID");
- ALTER TABLE "NACOS"."ROLES"
- ADD CONSTRAINT "IDX_USER_ROLE" UNIQUE ("USERNAME", "ROLE");
- ALTER TABLE "NACOS"."PERMISSIONS"
- ADD CONSTRAINT "UK_ROLE_PERMISSION" UNIQUE ("ROLE", "RESOURCE", "ACTION");
- ALTER TABLE "NACOS"."HIS_CONFIG_INFO"
- ADD CONSTRAINT PRIMARY KEY ("NID");
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CONSTRAINT PRIMARY KEY ("ID");
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CONSTRAINT "UK_GROUP_ID" UNIQUE ("GROUP_ID");
- ALTER TABLE "NACOS"."CONFIG_TAGS_RELATION"
- ADD CONSTRAINT PRIMARY KEY ("NID");
- ALTER TABLE "NACOS"."CONFIG_TAGS_RELATION"
- ADD CONSTRAINT "UK_CONFIGTAGRELATION_CONFIGIDTAG" UNIQUE ("ID", "TAG_NAME", "TAG_TYPE");
- ALTER TABLE "NACOS"."CONFIG_INFO_TAG"
- ADD CONSTRAINT PRIMARY KEY ("ID");
- ALTER TABLE "NACOS"."CONFIG_INFO_TAG"
- ADD CONSTRAINT "UK_CONFIGINFOTAG_DATAGROUPTENANTTAG" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID", "TAG_ID");
- ALTER TABLE "NACOS"."CONFIG_INFO_BETA"
- ADD CONSTRAINT PRIMARY KEY ("ID");
- ALTER TABLE "NACOS"."CONFIG_INFO_BETA"
- ADD CONSTRAINT "UK_CONFIGINFOBETA_DATAGROUPTENANT" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID");
- ALTER TABLE "NACOS"."CONFIG_INFO_AGGR"
- ADD CONSTRAINT PRIMARY KEY ("ID");
- ALTER TABLE "NACOS"."CONFIG_INFO_AGGR"
- ADD CONSTRAINT "UK_CONFIGINFOAGGR_DATAGROUPTENANTDATUM" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID", "DATUM_ID");
- ALTER TABLE "NACOS"."CONFIG_INFO"
- ADD CONSTRAINT PRIMARY KEY ("ID");
- ALTER TABLE "NACOS"."CONFIG_INFO"
- ADD CONSTRAINT "UK_CONFIGINFO_DATAGROUPTENANT" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID");
- CREATE INDEX "IDX_TENANT_ID"
- ON "NACOS"."TENANT_INFO" ("TENANT_ID");
- COMMENT
- ON TABLE "NACOS"."TENANT_INFO" IS 'tenant_info';
- 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_ID" IS 'tenant_id';
- COMMENT
- ON COLUMN "NACOS"."TENANT_INFO"."TENANT_NAME" IS 'tenant_name';
- COMMENT
- ON COLUMN "NACOS"."TENANT_INFO"."TENANT_DESC" IS 'tenant_desc';
- 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 '修改时间';
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CHECK ("QUOTA" >= 0) ENABLE;
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CHECK ("MAX_HISTORY_COUNT" >= 0) ENABLE;
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CHECK ("MAX_AGGR_SIZE" >= 0) ENABLE;
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CHECK ("MAX_AGGR_COUNT" >= 0) ENABLE;
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CHECK ("MAX_SIZE" >= 0) ENABLE;
- ALTER TABLE "NACOS"."TENANT_CAPACITY"
- ADD CHECK ("USAGE" >= 0) ENABLE;
- COMMENT
- ON TABLE "NACOS"."TENANT_CAPACITY" IS '租户容量信息表';
- COMMENT
- ON COLUMN "NACOS"."TENANT_CAPACITY"."ID" IS '主键ID';
- COMMENT
- ON COLUMN "NACOS"."TENANT_CAPACITY"."TENANT_ID" IS 'Tenant ID';
- COMMENT
- ON COLUMN "NACOS"."TENANT_CAPACITY"."QUOTA" IS '配额,0表示使用默认值';
- COMMENT
- ON COLUMN "NACOS"."TENANT_CAPACITY"."USAGE" IS '使用量';
- COMMENT
- ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_SIZE" IS '单个配置大小上限,单位为字节,0表示使用默认值';
- 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"."GMT_CREATE" IS '创建时间';
- COMMENT
- ON COLUMN "NACOS"."TENANT_CAPACITY"."GMT_MODIFIED" IS '修改时间';
- ALTER TABLE "NACOS"."HIS_CONFIG_INFO"
- ADD CHECK ("ID" >= 0) ENABLE;
- CREATE INDEX "IDX_GMT_MODIFIED"
- ON "NACOS"."HIS_CONFIG_INFO" ("GMT_MODIFIED");
- CREATE INDEX "IDX_GMT_CREATE"
- ON "NACOS"."HIS_CONFIG_INFO" ("GMT_CREATE");
- CREATE INDEX "IDX_DID"
- ON "NACOS"."HIS_CONFIG_INFO" ("DATA_ID");
- 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"."TENANT_ID" IS '租户字段';
- COMMENT
- ON COLUMN "NACOS"."HIS_CONFIG_INFO"."ENCRYPTED_DATA_KEY" IS '密钥';
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CHECK ("QUOTA" >= 0) ENABLE;
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CHECK ("MAX_HISTORY_COUNT" >= 0) ENABLE;
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CHECK ("MAX_AGGR_SIZE" >= 0) ENABLE;
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CHECK ("MAX_AGGR_COUNT" >= 0) ENABLE;
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CHECK ("MAX_SIZE" >= 0) ENABLE;
- ALTER TABLE "NACOS"."GROUP_CAPACITY"
- ADD CHECK ("USAGE" >= 0) ENABLE;
- COMMENT
- ON TABLE "NACOS"."GROUP_CAPACITY" IS '集群、各Group容量信息表';
- COMMENT
- ON COLUMN "NACOS"."GROUP_CAPACITY"."ID" IS '主键ID';
- COMMENT
- ON COLUMN "NACOS"."GROUP_CAPACITY"."GROUP_ID" IS 'Group ID,空字符表示整个集群';
- COMMENT
- ON COLUMN "NACOS"."GROUP_CAPACITY"."QUOTA" IS '配额,0表示使用默认值';
- COMMENT
- ON COLUMN "NACOS"."GROUP_CAPACITY"."USAGE" IS '使用量';
- COMMENT
- ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_SIZE" IS '单个配置大小上限,单位为字节,0表示使用默认值';
- 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"."GMT_CREATE" IS '创建时间';
- COMMENT
- ON COLUMN "NACOS"."GROUP_CAPACITY"."GMT_MODIFIED" IS '修改时间';
- COMMENT
- ON TABLE "NACOS"."CONFIG_TAGS_RELATION" IS 'config_tag_relation';
- 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"."DATA_ID" IS 'data_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."GROUP_ID" IS 'group_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."TENANT_ID" IS 'tenant_id';
- COMMENT
- ON TABLE "NACOS"."CONFIG_INFO_TAG" IS 'config_info_tag';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_TAG"."ID" IS 'id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_TAG"."DATA_ID" IS 'data_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_TAG"."GROUP_ID" IS 'group_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_TAG"."TENANT_ID" IS 'tenant_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_TAG"."TAG_ID" IS 'tag_id';
- 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"."MD5" IS 'md5';
- 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"."SRC_USER" IS 'source user';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_TAG"."SRC_IP" IS 'source ip';
- COMMENT
- ON TABLE "NACOS"."CONFIG_INFO_BETA" IS 'config_info_beta';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."ID" IS 'id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."DATA_ID" IS 'data_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."GROUP_ID" IS 'group_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."APP_NAME" IS 'app_name';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."CONTENT" IS 'content';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."BETA_IPS" IS 'betaIps';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."MD5" IS 'md5';
- 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"."SRC_USER" IS 'source user';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."SRC_IP" IS 'source ip';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."TENANT_ID" IS '租户字段';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_BETA"."ENCRYPTED_DATA_KEY" IS '密钥';
- COMMENT
- ON TABLE "NACOS"."CONFIG_INFO_AGGR" IS '增加租户字段';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."ID" IS 'id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."DATA_ID" IS 'data_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."GROUP_ID" IS 'group_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."DATUM_ID" IS 'datum_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."CONTENT" IS '内容';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."GMT_MODIFIED" IS '修改时间';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."TENANT_ID" IS '租户字段';
- COMMENT
- ON TABLE "NACOS"."CONFIG_INFO" IS 'config_info';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."ID" IS 'id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."DATA_ID" IS 'data_id';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."CONTENT" IS 'content';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."MD5" IS 'md5';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."GMT_CREATE" IS '创建时间';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."GMT_MODIFIED" IS '修改时间';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."SRC_USER" IS 'source user';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."SRC_IP" IS 'source ip';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."TENANT_ID" IS '租户字段';
- COMMENT
- ON COLUMN "NACOS"."CONFIG_INFO"."ENCRYPTED_DATA_KEY" IS '密钥';
- INSERT INTO "NACOS"."USERS"("USERNAME", "PASSWORD", "ENABLED")
- VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1);
- INSERT INTO "NACOS"."ROLES"("USERNAME", "ROLE")
- VALUES ('nacos', 'ROLE_ADMIN');
- commit;
复制代码
二、实现步骤
2.1 nacos源码中引入达梦8数据库的驱动包
建议使用达梦数据库自带的驱动,达梦数据库安装目录下drivers/jdbc下的驱动,否则可能会出现驱动版本不兼容的问题 (读取超长CLOB,TEXT)
在naming模块和console模块的resources目录下新建lib目录,把DmJdbcDriver18.jar包拷贝进去,自行找一个合适的驱动jar包。
分别在naming模块和console模块的pom.xml下新增依赖项:- <dependency>
- <groupId>com.dameng</groupId>
- DmJdbcDriver18</artifactId>
- <version>8.1.3.140</version>
- </dependency>
复制代码
2.2 修改nacos源码
(1).把下载的nacos-plugin-develop中的nacos-datasource-plugin-ext模块下的nacos-datasource-plugin-ext-base中的源码依次拷贝进入nacos-2.3.2中的datasource模块下,注意路径。如图所示:
(2).把下载的nacos-plugin-develop中的nacos-datasource-plugin-ext模块下的nacos-dm-datasource-plugin-ext中的源码依次拷贝进入nacos-2.3.2中的datasource模块下,注意路径。
注意不要拷贝src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper这个文件,防止覆盖,等下我们要自己新增一些内容。
(3).修改nacos-2.3.2\plugin\datasource\src\main\resources\META-INF\services\com.alibaba.nacos.plugin.datasource.mapper.Mapper的这个文件,在最下面新增如下:- com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoAggrMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoBetaMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoTagMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.ConfigTagsRelationMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.HistoryConfigInfoMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.TenantInfoMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.TenantCapacityMapperByDaMeng
- com.alibaba.nacos.plugin.datasource.impl.dm.GroupCapacityMapperByDaMeng
复制代码
2.3 编译打包
在终端打开nacos-2.3.2,运行如下命令:- mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Drat.skip=true -Dcheckstyle.skip=true clean install -U
复制代码
如果构建成功,则在distribution模块下有生成的nacos包:
三、运行验证
把nacos-server-2.3.2.zip取出解压缩,修改conf目录下的application.properties配置文件:- ### Default web context path:
- server.servlet.contextPath=/nacos
- ### Include message field
- server.error.include-message=ALWAYS
- ### Default web server port:
- server.port=8848
- ### Count of DB:
- db.num=1
- ### Connect URL of DB:
- spring.sql.init.platform=dm
- db.url.0=jdbc:dm://10.10.10.104:5236?schema=NACOS
- db.user.0=SYSDBA
- db.password.0=SYSDBA001
- db.pool.config.driverClassName=dm.jdbc.driver.DmDriver
- ### Connection pool configuration: hikariCP
- db.pool.config.connectionTimeout=30000
- db.pool.config.validationTimeout=10000
- db.pool.config.maximumPoolSize=20
- db.pool.config.minimumIdle=2
- ### the maximum retry times for push
- nacos.config.push.maxRetryTime=50
- #***********Metrics for tomcat **************************#
- server.tomcat.mbeanregistry.enabled=true
- #***********Expose prometheus and health **************************#
- #management.endpoints.web.exposure.include=prometheus,health
- ### Metrics for elastic search
- management.metrics.export.elastic.enabled=false
- #management.metrics.export.elastic.host=http://localhost:9200
- ### Metrics for influx
- management.metrics.export.influx.enabled=false
- #*************** Access Log Related Configurations ***************#
- ### If turn on the access log:
- server.tomcat.accesslog.enabled=true
- ### file name pattern, one file per hour
- server.tomcat.accesslog.rotate=true
- server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH
- ### The access log pattern:
- server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
- ### The directory of access log:
- server.tomcat.basedir=file:.
- #*************** Access Control Related Configurations ***************#
- ### If enable spring security, this option is deprecated in 1.2.0:
- #spring.security.enabled=false
- ### The ignore urls of auth
- nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
- ### The auth system to use, currently only 'nacos' and 'ldap' is supported:
- nacos.core.auth.system.type=nacos
- ### If turn on auth system:
- nacos.core.auth.enabled=true
- ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
- nacos.core.auth.caching.enabled=true
- ### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
- nacos.core.auth.enable.userAgentAuthWhite=false
- ### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
- ### The two properties is the white list for auth and used by identity the request from other server.
- nacos.core.auth.server.identity.key=nacos
- nacos.core.auth.server.identity.value=nacos
- ### worked when nacos.core.auth.system.type=nacos
- ### The token expiration in seconds:
- nacos.core.auth.plugin.nacos.token.cache.enable=false
- nacos.core.auth.plugin.nacos.token.expire.seconds=18000
- ### The default token (Base64 String):
- nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
- nacos.istio.mcp.server.enabled=false
复制代码 具体的配置规则参考官网:https://nacos.io/docs/latest/concepts/
在bin目录下运行cmd,输入startup.cmd -m standalone
访问localhost:8848/nacos
新增一些配置文件,在达梦数据库的NACOS.CONFIG——INFO表中看到如下:
也可以创建一个简单的spring cloud的demo来实验注册中心和配置中心:
如上图,springcloud-demo已经成功注册到nacos,并且能读出nacos中的配置文件的值,说明此达梦数据库版nacos可用。
至此nacos适配达梦数据库成功!
四、福利(直接看这里可以拿到已经做好的成品)
2025-7-12 新版本的nacos2.4.3达梦版在这里: https://gitee.com/pengkaiyan/nacos-dm
我这里已经把弄好的源码发布在了github上,需要的话可以下载直接运行mvn编译就好了
https://github.com/pkyit/nacos-2.3.2
点击这里下载源码和nacos达梦版压缩包
如果不想编译也可以直接用我已经构建好的nacos,解压缩就可以使用了。
点击这里免费下载达梦版nacos-2.3.2.tar.gz
https://github.com/pkyit/nacos-2.3.2/releases/download/v2.3.2/nacos-server-2.3.2.tar.gz
docker版的也有哦,请看这里(arm64和amd64) 点这里看docker的nacos-dm8
docker pull pkyit/nacos:2.3.2-dm8
参考:https://github.com/nacos-group/nacos-plugin
参考:https://github.com/alibaba/nacos
参考:https://nacos.io/
参考:https://blog.csdn.net/zhuyangyong/article/details/136215650
参考:https://blog.csdn.net/weixin_45726578/article/details/129835862
如果我的文章对您有帮助,还请您多多支持我。支付宝帮忙扫一下吧
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |