二、快速入门

2.1 初始化 “服务注册中心” 数据库

请下载项目源码并解压,获取 “服务注册中心” 数据库初始化SQL脚本并执行即可

数据库初始化SQL脚本位置为:

  1. /xxl-registry/doc/db/xxl-registry-mysql.sql

“服务注册中心” 支持集群部署,集群情况下各节点务必连接同一个mysql实例;

2.2 编译项目

解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:

  1. - /doc
  2. - /xxl-registry-admin :分布式服务中心
  3. - /xxl-registry-client :客户端核心依赖;

2.3 配置部署“服务注册中心”

步骤一:配置项目:

配置文件地址:

  1. /xxl-registry/xxl-registry-admin/src/main/resources/application.properties

消息中心配置内容说明:

  1. ### 数据库配置
  2. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl-registry?Unicode=true&characterEncoding=UTF-8
  3. ### 服务注册数据磁盘同步目录
  4. xxl.registry.data.filepath=/data/applogs/xxl-registry/registrydata
  5. ### 登陆信息配置
  6. xxl.registry.login.username=admin
  7. xxl.registry.login.password=123456

步骤二:部署项目:

如果已经正确进行上述配置,可将项目编译打包部署。访问地址:http://localhost:8080/xxl-registry-admin (该地址接入方项目将会使用到,作为注册地址),登录后运行界面如下图所示

输入图片说明

至此“服务注册中心”项目已经部署成功。

步骤三:服务注册中心集群(可选):

服务注册中心支持集群部署,提升消息系统容灾和可用性。

集群部署时,几点要求和建议:

  • DB配置保持一致;
  • 登陆账号配置保持一致;
  • 建议:推荐通过nginx为集群做负载均衡,分配域名。访问、客户端使用等操作均通过该域名进行。

其他:Docker 镜像方式搭建消息中心:

  • 下载镜像
  1. // Docker地址:https://hub.docker.com/r/xuxueli/xxl-registry-admin/
  2. docker pull xuxueli/xxl-registry-admin
  • 创建容器并运行
  1. docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-registry-admin -d xuxueli/xxl-registry-admin
  2. /**
  3. * 如需自定义 mysql 等配置,可通过 "PARAMS" 指定,参数格式 RAMS="--key=value --key2=value2" ;
  4. * 配置项参考文件:/xxl-registry/xxl-registry-admin/src/main/resources/application.properties
  5. */
  6. 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依赖地址:

  1. <dependency>
  2. <groupId>com.xuxueli</groupId>
  3. <artifactId>xxl-registry-client</artifactId>
  4. <version>${最新稳定版}</version>
  5. </dependency>

其他Java服务框架,可以借助原生提供的客户端JAR包快速接入使用,建议参考 XXL-RPC 提供的实例项目;

客户端JAR包内封装了与注册中心API服务交互的客户端代码,原生提供两个客户端类供实用:

  • 基础客户端类(com.xxl.registry.client.XxlRegistryBaseClient):借助该客户端类,可方便的与注册中心进行注册数据交互,如:服务注册、续约、摘除、发现服务、监控等等;
  • 增强客户端类(com.xxl.registry.client.XxlRegistryClient):该类为增强版本客户端类,内置客户端服务续约线程和服务注册信息监控线程。通过该客户端类注册的服务,底层线程将会主动维护续约操作,通过该客户端类发现的服务信息,底层线程将会主动定期刷新并实时监控变更。同时对服务数据进行缓存处理,业务方可放心实用不用担心性能问题。

客户端API实用示例代码如下:

  1. // 注册中心客户端(基础类)
  2. XxlRegistryBaseClient registryClient = new XxlRegistryBaseClient("http://localhost:8080/xxl-registry-admin/", null, "xxl-rpc", "test");
  3. // 注册中心客户端(增强类)
  4. XxlRegistryClient registryClient = new XxlRegistryClient("http://localhost:8080/xxl-registry-admin/", null, "xxl-rpc", "test");
  5. // 服务注册 & 续约:
  6. List<XxlRegistryDataParamVO> registryDataList = new ArrayList<>();
  7. registryDataList.add(new XxlRegistryDataParamVO("service01", "address01"));
  8. registryDataList.add(new XxlRegistryDataParamVO("service02", "address02"));
  9. registryClient.registry(registryDataList);
  10. // 服务摘除:
  11. List<XxlRegistryDataParamVO> registryDataList = new ArrayList<>();
  12. registryDataList.add(new XxlRegistryDataParamVO("service01", "address01"));
  13. registryDataList.add(new XxlRegistryDataParamVO("service02", "address02"));
  14. registryClient.remove(registryDataList);
  15. // 服务发现:
  16. Set<String> keys = new TreeSet<>();
  17. keys.add("service01");
  18. keys.add("service02");
  19. Map<String, TreeSet<String>> serviceData = registryClient.discovery(keys);
  20. // 服务监控:
  21. Set<String> keys = new TreeSet<>();
  22. keys.add("service01");
  23. keys.add("service02");
  24. registryClient.monitor(keys);

其他Java服务框架,如dubbo、springboot等,接入 “XXL-REGISTRY” 的示例项目,后续将会整理推出。

c、非Java语言项目接入;

非Java语言项目,可以借助提供的 RESTFUL 格式API接口实现服务注册与发现功能。

参考章节 “三、注册中心API服务”