Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】

2024-06-13 00:20

本文主要是介绍Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】

1. 实现 ShardingSphereDriverURLProvider

由上一篇博文我们已经知道了 Sharding-JDBC 是基于 Java SPI 机制去加载 并实例化 ShardingSphereDriverURLProvider 的实现类

public interface ShardingSphereDriverURLProvider {boolean accept(String var1);byte[] getContent(String var1);
}

ShardingSphereDriverURLProvider接口有两个抽象方法 accept()方法用于判断当前的url是否满足条件,如果满足将调用 getContent ()方法获取数据源配置信息。因此我们可以新建一个 NacosDriverUrlProvider 实现 ShardingSphereDriverURLProvider ,并在 META-INF/services下新建一个文件 org.apache.shardingsphere.driver.jdbc.core.driver.ShardingSphereDriverURLProvider ,文件内容为 NacosDriverUrlProvider 的全限定类名。

image-20240612215136982

image-20240612215156026

2.NacosDriverUrlProvider

2.1 重写 accept() 方法

我们先重写 accept()方法,判断url中是否包含 “nacos:”,如果有,则适用于 NacosDriverUrlProvider 类去加载配置

private final static String NACOS_MARK = "nacos:";@Override
public boolean accept(String url) {return StringUtils.isNotBlank(url) && url.contains(NACOS_MARK);
}

2.2 重写 getContent() 方法

我们获取到nacos的url的连接后,通过 NacosFactory.createConfigService 去获取 nacos的配置信息,相关案例在nacos官网也有实例代码

try {String serverAddr = "{serverAddr}";String dataId = "{dataId}";String group = "{group}";Properties properties = new Properties();properties.put("serverAddr", serverAddr);ConfigService configService = NacosFactory.createConfigService(properties);String content = configService.getConfig(dataId, group, 5000);System.out.println(content);
} catch (NacosException e) {// TODO Auto-generated catch blocke.printStackTrace();
}

将url分割获取到参数后,封装到 Properties 中,然后通过 NacosFactory.createConfigService 获取 ConfigService 对象后获取到配置信息

 private final static String FIXED_PREFIX = "jdbc:shardingsphere:";public byte[] getContent(String url) {int nacosPrefix = url.indexOf(FIXED_PREFIX + NACOS_MARK);String realUrl = url.substring(nacosPrefix + (FIXED_PREFIX + NACOS_MARK).length(), url.length());int serverAddrEndIndex = realUrl.indexOf("?");String serverAddr = realUrl.substring(0, serverAddrEndIndex);String args = realUrl.substring(serverAddrEndIndex+1, realUrl.length());String[] split = args.split("&");String dataId = "";String group = "";String namespace = "";String username = "";String password = "";for (String str : split) {int index = str.indexOf("=");String substring = str.substring(0, index);switch (substring){case  "dataId" :dataId = str.substring(index+1,str.length());break;case  "group" :group = str.substring(index+1,str.length());break;case  "namespace" :namespace = str.substring(index+1,str.length());break;case  "username" :username = str.substring(index+1,str.length());break;case  "password" :password = str.substring(index+1,str.length());break;}}String content = "";try {Properties properties = new Properties();properties.put("serverAddr", serverAddr);properties.put("namespace", namespace);properties.put("username", username);properties.put("password", password);ConfigService configService = NacosFactory.createConfigService(properties);content = configService.getConfig(dataId, group, 5000);} catch (NacosException e) {// TODO Auto-generated catch blocke.printStackTrace();}return content.getBytes();
}

这篇关于Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055762

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与