二、快速入门
2.1 初始化 “服务注册中心” 数据库
请下载项目源码并解压,获取 “服务注册中心” 数据库初始化SQL脚本并执行即可
数据库初始化SQL脚本位置为:
/xxl-registry/doc/db/xxl-registry-mysql.sql
“服务注册中心” 支持集群部署,集群情况下各节点务必连接同一个mysql实例;
2.2 编译项目
解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:
- /doc
- /xxl-registry-admin :分布式服务中心
- /xxl-registry-client :客户端核心依赖;
2.3 配置部署“服务注册中心”
步骤一:配置项目:
配置文件地址:
/xxl-registry/xxl-registry-admin/src/main/resources/application.properties
消息中心配置内容说明:
### 数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl-registry?Unicode=true&characterEncoding=UTF-8
### 服务注册数据磁盘同步目录
xxl.registry.data.filepath=/data/applogs/xxl-registry/registrydata
### 登陆信息配置
xxl.registry.login.username=admin
xxl.registry.login.password=123456
步骤二:部署项目:
如果已经正确进行上述配置,可将项目编译打包部署。访问地址:http://localhost:8080/xxl-registry-admin (该地址接入方项目将会使用到,作为注册地址),登录后运行界面如下图所示
至此“服务注册中心”项目已经部署成功。
步骤三:服务注册中心集群(可选):
服务注册中心支持集群部署,提升消息系统容灾和可用性。
集群部署时,几点要求和建议:
- DB配置保持一致;
- 登陆账号配置保持一致;
- 建议:推荐通过nginx为集群做负载均衡,分配域名。访问、客户端使用等操作均通过该域名进行。
其他:Docker 镜像方式搭建消息中心:
- 下载镜像
// Docker地址:https://hub.docker.com/r/xuxueli/xxl-registry-admin/
docker pull xuxueli/xxl-registry-admin
- 创建容器并运行
docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-registry-admin -d xuxueli/xxl-registry-admin
/**
* 如需自定义 mysql 等配置,可通过 "PARAMS" 指定,参数格式 RAMS="--key=value --key2=value2" ;
* 配置项参考文件:/xxl-registry/xxl-registry-admin/src/main/resources/application.properties
*/
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl-registry?Unicode=true&characterEncoding=UTF-8" -p 8080:8080 -v /tmp:/data/applogs --name xxl-registry-admin -d xuxueli/xxl-registry-admin
2.4 接入 “服务注册中心” 示例
a、XXL-RPC 接入示例;
XXL-RPC默认将 “XXL-REGISTRY” 作为原生注册中心。可前往 XXL-RPC (https://github.com/xuxueli/xxl-rpc ) 示例项目参考如何接入 “XXL-REGISTRY” 。
b、其他Java语言项目接入示例;
客户端maven依赖地址:
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-registry-client</artifactId>
<version>${最新稳定版}</version>
</dependency>
其他Java服务框架,可以借助原生提供的客户端JAR包快速接入使用,建议参考 XXL-RPC 提供的实例项目;
客户端JAR包内封装了与注册中心API服务交互的客户端代码,原生提供两个客户端类供实用:
- 基础客户端类(com.xxl.registry.client.XxlRegistryBaseClient):借助该客户端类,可方便的与注册中心进行注册数据交互,如:服务注册、续约、摘除、发现服务、监控等等;
- 增强客户端类(com.xxl.registry.client.XxlRegistryClient):该类为增强版本客户端类,内置客户端服务续约线程和服务注册信息监控线程。通过该客户端类注册的服务,底层线程将会主动维护续约操作,通过该客户端类发现的服务信息,底层线程将会主动定期刷新并实时监控变更。同时对服务数据进行缓存处理,业务方可放心实用不用担心性能问题。
客户端API实用示例代码如下:
// 注册中心客户端(基础类)
XxlRegistryBaseClient registryClient = new XxlRegistryBaseClient("http://localhost:8080/xxl-registry-admin/", null, "xxl-rpc", "test");
// 注册中心客户端(增强类)
XxlRegistryClient registryClient = new XxlRegistryClient("http://localhost:8080/xxl-registry-admin/", null, "xxl-rpc", "test");
// 服务注册 & 续约:
List<XxlRegistryDataParamVO> registryDataList = new ArrayList<>();
registryDataList.add(new XxlRegistryDataParamVO("service01", "address01"));
registryDataList.add(new XxlRegistryDataParamVO("service02", "address02"));
registryClient.registry(registryDataList);
// 服务摘除:
List<XxlRegistryDataParamVO> registryDataList = new ArrayList<>();
registryDataList.add(new XxlRegistryDataParamVO("service01", "address01"));
registryDataList.add(new XxlRegistryDataParamVO("service02", "address02"));
registryClient.remove(registryDataList);
// 服务发现:
Set<String> keys = new TreeSet<>();
keys.add("service01");
keys.add("service02");
Map<String, TreeSet<String>> serviceData = registryClient.discovery(keys);
// 服务监控:
Set<String> keys = new TreeSet<>();
keys.add("service01");
keys.add("service02");
registryClient.monitor(keys);
其他Java服务框架,如dubbo、springboot等,接入 “XXL-REGISTRY” 的示例项目,后续将会整理推出。
c、非Java语言项目接入;
非Java语言项目,可以借助提供的 RESTFUL 格式API接口实现服务注册与发现功能。
参考章节 “三、注册中心API服务”