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

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

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

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

    步骤一:配置项目:

    配置文件地址:

    消息中心配置内容说明:

    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

    步骤二:部署项目:

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

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

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

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

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

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

    • 下载镜像
    • 创建容器并运行
    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. */

    a、XXL-RPC 接入示例;

    XXL-RPC默认将 “XXL-REGISTRY” 作为原生注册中心。可前往 XXL-RPC (https://github.com/xuxueli/xxl-rpc ) 示例项目参考如何接入 “XXL-REGISTRY” 。

    b、其他Java语言项目接入示例;

    其他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. // 服务摘除:
    10. List<XxlRegistryDataParamVO> registryDataList = new ArrayList<>();
    11. registryDataList.add(new XxlRegistryDataParamVO("service02", "address02"));
    12. registryClient.remove(registryDataList);
    13. // 服务发现:
    14. Set<String> keys = new TreeSet<>();
    15. keys.add("service01");
    16. keys.add("service02");
    17. Map<String, TreeSet<String>> serviceData = registryClient.discovery(keys);
    18. // 服务监控:
    19. Set<String> keys = new TreeSet<>();
    20. keys.add("service01");
    21. keys.add("service02");
    22. registryClient.monitor(keys);

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

    c、非Java语言项目接入;

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