【配置中心】xxl-conf集成GCP Cloud sql postgresql

目录

前言

一、xxl-conf是什么?

1.概述

2.特性

二、集成步骤

1.下载代码到本地

2.去掉mysql依赖

3.添加GCP Cloud sql postgresql依赖

4.添加基础表

5.添加xxl-conf初始数据

6.通过代理方式配置postgresql连接

7.更改配置存放地址

8.更改日志存放地址

9.更改Dockfilejdk版本,改成jdk11

 三、启动后效果


前言

xxl-conf是一个配置中心,具体请参考作者的博客:

分布式配置管理平台XXL-CONF

一、xxl-conf是什么?

1.概述

XXL-CONF 是一个轻量级分布式配置管理平台,拥有"轻量级、秒级动态推送、多环境、跨语言、跨机房、配置监听、权限控制、版本回滚"等特性。现已开放源代码,开箱即用。

2.特性

  • 1、简单易用: 接入灵活方便,一分钟上手;
  • 2、轻量级: 部署简单,不依赖第三方服务,一分钟上手;
  • 3、配置中心HA:配置中心支持集群部署,提升配置中心系统容灾和可用性。
  • 4、在线管理: 提供配置中心, 通过Web界面在线操作配置数据,直观高效;
  • 5、多环境支持:单个配置中心集群,支持自定义多套环境,管理多个环境的的配置数据;环境之间相互隔离;
  • 6、多数据类型配置:支持多种数据类型配置,如:String、Boolean、Short、Integer、Long、Float、Double 等;
  • 7、跨语言:底层通过http服务(long-polling)拉取配置数据并实时感知配置变更,从而实现多语言支持。
  • 8、跨机房:得益于配置中心集群关系对等特性,集群各节点提供幂等的配置服务;因此,异地跨机房部署时,只需要请求本机房配置中心即可,实现异地多活;
  • 9、高性能:得益于配置中心的 "磁盘配置" 与客户端的 "LocalCache",因此配置服务性能非常高;单机可承担大量配置请求;
  • 10、实时性: 秒级动态推送;配置更新后, 实时推送配置信息, 项目中配置数据会实时更新并生效, 不需要重启线上机器;
  • 11、配置变更监听功能:可开发Listener逻辑,监听配置变更事件,可据此动态刷新JDBC连接池等高级功能;
  • 12、最终一致性:底层借助内置广播机制,保障配置数据的最终一致性,从而保证配置数据的同步;
  • 13、配置备份: 配置数据同时在磁盘与MySQL中存储和备份,并定期同步, 提高配置数据的安全性;
  • 14、多种获取配置方式:支持 "API、 注解、XML占位符" 等多种方式获取配置,可灵活选择使用;
  • 15、兼容Spring原生配置:兼容Spring原生配置方式 "@Value"、"${}" 加载本地配置功能;与分布式配置获取方式隔离,互不干扰;
  • 16、分布式: 支持多业务线接入并统一管理配置信息,支撑分布式业务场景;
  • 17、项目隔离: 以项目为维度管理配置, 方便隔离不同业务线配置;
  • 18、高性能: 通过LocalCache对配置数据做缓存, 提高性能;
  • 19、客户端断线重连强化:设置守护线程,周期性检测客户端连接、配置同步,提高异常情况下配置稳定性和时效性;
  • 20、空配置处理:主动缓存null或不存在类型配置,避免配置请求穿透到远程配置Server引发雪崩问题;
  • 21、用户管理:支持在线添加和维护用户,包括普通用户和管理员两种类型用户;
  • 22、配置权限控制;以项目为维度进行配置权限控制,管理员拥有全部项目权限,普通用户只有分配才拥有项目下配置的查看和管理权限;
  • 23、历史版本回滚:记录配置变更历史,方便历史配置版本回溯,默认记录10个历史版本;
  • 24、配置快照:客户端从配置中心获取到的配置数据后,会周期性缓存到本地快照文件中,当从配置中心获取配置失败时,将会使用使用本地快照文件中的配置数据;提高系统可用性;
  • 25、访问令牌(accessToken):为提升系统安全性,配置中心和客户端进行安全性校验,双方AccessToken匹配才允许通讯;

二、集成步骤

1.下载代码到本地

git地址

2.去掉mysql依赖

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>${mysql-connector-java.version}</version>
</dependency>

3.添加GCP Cloud sql postgresql依赖

因为作者的源代码的springboot版本是1.5.8,所以必须使用以下版本,要不然会报错。(踩过坑)

<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>42.3.6</version>
		</dependency>


		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
			<version>1.2.8.RELEASE</version>
		</dependency>

4.添加基础表

CREATE TABLE if not EXISTS "xxl_conf_env" (
  "env" varchar(100) NOT NULL primary  key ,--COMMENT 'Env',
  "title" varchar(100) NOT NULL ,-- COMMENT '环境名称',
  "order" smallint NOT NULL DEFAULT '0' -- COMMENT '显示排序',
);


COMMENT ON COLUMN "xxl_conf_env"."env" IS 'Env';
COMMENT ON COLUMN "xxl_conf_env"."title" IS '环境名称';
COMMENT ON COLUMN "xxl_conf_env"."order" IS '显示排序';


CREATE TABLE if not EXISTS "xxl_conf_project" (
  "appname" varchar(100) NOT NULL primary key ,-- COMMENT 'AppName',
  "title" varchar(100) NOT NULL -- COMMENT '项目名称'
);



COMMENT ON COLUMN "xxl_conf_project"."appname" IS 'AppName';
COMMENT ON COLUMN "xxl_conf_project"."title" IS '项目名称';



CREATE TABLE if not exists "xxl_conf_user" (
  "username" varchar(100) NOT NULL  primary key ,--COMMENT '账号',
  "password" varchar(100) NOT NULL ,-- COMMENT '密码',
  "permission" smallint NOT NULL DEFAULT '0' ,--COMMENT '权限:0-普通用户、1-管理员',
  "permission_data" varchar(1000) DEFAULT NULL -- COMMENT '权限配置数据',
) ;


COMMENT ON COLUMN "xxl_conf_user"."username" IS '账号';
COMMENT ON COLUMN "xxl_conf_user"."password" IS '密码';
COMMENT ON COLUMN "xxl_conf_user"."permission" IS '权限:0-普通用户、1-管理员';
COMMENT ON COLUMN "xxl_conf_user"."permission_data" IS '权限配置数据';


CREATE TABLE if not exists "xxl_conf_node" (
  "env" varchar(100) NOT NULL ,-- COMMENT 'Env',
  "key" varchar(200) NOT NULL ,-- COMMENT '配置Key',
  "appname" varchar(100) NOT NULL  ,--COMMENT '所属项目AppName',
  "title" varchar(100) NOT NULL,-- COMMENT '配置描述',
  "value" varchar(2000) DEFAULT NULL  ,-- COMMENT '配置Value',
  PRIMARY KEY ("env","key")
) ;

COMMENT ON COLUMN "xxl_conf_node"."env" IS 'Env';
COMMENT ON COLUMN "xxl_conf_node"."key" IS '配置key';
COMMENT ON COLUMN "xxl_conf_node"."appname" IS '所属AppName';
COMMENT ON COLUMN "xxl_conf_node"."title" IS '配置描述';
COMMENT ON COLUMN "xxl_conf_node"."value" IS '配置value';

CREATE TABLE if not exists "xxl_conf_node_log" (
  "env" varchar(255) NOT NULL ,-- COMMENT 'Env',
  "key" varchar(200) NOT NULL ,-- COMMENT '配置Key',
  "title" varchar(100) NOT NULL,-- COMMENT '配置描述',
  "value" varchar(2000) DEFAULT NULL ,-- COMMENT '配置Value',
  "addtime" timestamp (0) without time zone NOT NULL ,-- COMMENT '操作时间',
  "optuser" varchar(100) NOT NULL -- COMMENT '操作人'
) ;
COMMENT ON COLUMN "xxl_conf_node_log"."env" IS 'Env';
COMMENT ON COLUMN "xxl_conf_node_log"."key" IS '配置key';
COMMENT ON COLUMN "xxl_conf_node_log"."title" IS '配置描述';
COMMENT ON COLUMN "xxl_conf_node_log"."value" IS '配置value';
COMMENT ON COLUMN "xxl_conf_node_log"."addtime" IS '操作时间';
COMMENT ON COLUMN "xxl_conf_node_log"."optuser" IS '操作人';


CREATE TABLE if not exists "xxl_conf_node_msg" (
  "id" serial primary key,
  "addtime" timestamp (0) without time zone NOT NULL,
  "env" varchar(100) NOT NULL,-- COMMENT 'Env',
  "key" varchar(200) NOT NULL ,-- COMMENT '配置Key',
  "value" varchar(2000) DEFAULT NULL -- COMMENT '配置Value'
);
COMMENT ON COLUMN "xxl_conf_node_msg"."env" IS 'Env';
COMMENT ON COLUMN "xxl_conf_node_msg"."key" IS '配置key';
COMMENT ON COLUMN "xxl_conf_node_msg"."value" IS '配置value';
COMMENT ON COLUMN "xxl_conf_node_msg"."addtime" IS '操作时间';

5.添加xxl-conf初始数据

INSERT INTO "xxl_conf_env" VALUES ('test', '测试环境', 1), ('ppe', '预发布环境', 2), ('product', '生产环境', 3);
INSERT INTO "xxl_conf_project" VALUES ('default', '示例项目');
INSERT INTO "xxl_conf_user" VALUES ('admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL), ('user', 'e10adc3949ba59abbe56e057f20f883e', 0, 'default#test,default#ppe');
INSERT INTO "xxl_conf_node" VALUES ('test', 'default.key01', 'default', '测试配置01', '1'), ('test', 'default.key02', 'default', '测试配置02', '2'), ('test', 'default.key03', 'default', '测试配置03', '3');

6.通过代理方式配置postgresql连接

spring.datasource.username=***
spring.datasource.password=***
spring.cloud.gcp.project-id=***
spring.cloud.gcp.credentials.encoded-key=***
spring.cloud.gcp.sql.credentials.encoded-key=***
spring.cloud.gcp.sql.enabled=true
spring.cloud.gcp.sql.database-name=***
spring.cloud.gcp.sql.instance-connection-name=***
spring.datasource.driver-class-name=org.postgresql.Driver

7.更改配置存放地址

xxl.conf.confdata.filepath=confdata

8.更改日志存放地址

9.更改Dockfilejdk版本,改成jdk11

FROM openjdk:11-jre-slim
MAINTAINER xuxueli

ENV PARAMS=""

ADD target/xxl-conf-admin-*.jar /app.jar

#ENTRYPOINT ["java", "-jar", "$PARAMS /app.jar"]
ENTRYPOINT ["sh","-c","java -jar /app.jar"]

 三、启动后效果

我改成了英文版本的 

xxl-conf-core以及xxl-conf-admin的发布配置完成

下一篇讲解将改造后的xxl-conf部署在gcp cloud run平台

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值