5. 使用Nacos远程服务注册优化

本文介绍了如何使用Nacos作为服务注册中心,优化之前的RPC框架,使得服务提供者能够注册到Nacos,并且客户端可以从注册中心获取服务地址,实现了服务的动态注册和发现。在Nacos安装配置、远程服务注册类、客户端和服务端修改以及测试类的调整方面进行了详细说明,为后续的负载均衡优化打下基础。
摘要由CSDN通过智能技术生成

之前demo中客户端只能和一个服务端通信,实现的是一个服务端提供多个本地任务,客户端进行调用,如果服务端地址改变,Rpc框架就失效。因此需要一个远程服务注册中心,多个服务提供者将自己的服务注册到其中,客户端向服务注册中心申请调用。假设一个服务由多个提供者提供,其中一个失效,其余提供者也可以保障Rpc框架实现,同时还可以满足负载均衡。

这次优化使用的是Nacos服务注册中心,参考了博客

知识点

  1. InetSocketAddress
  2. Nacos

实现步骤

一、Nacos安装配置

  1. 首先是下载解压windows版下的Nacos,下载地址

  2. 解压以后打开bin目录下的startup.cmd文件,如果闪退,可能是jdk版本错误,更有可能是java配置环境变量的时候,因为存在多版本配置了多个名称。解决方案就是把jdk1.8对应的环境变量的名称改为JAVA_HOME,必须一致!解决方案参考

  3. 在Maven工程pom.xml中导入依赖

    <dependency>
          <groupId>com.alibaba.nacos</groupId>
          <artifactId>nacos-client</artifactId>
          <version>1.4.0</version>
        </dependency>
    

二、远程服务注册类

  1. 之前demo中的服务注册,是对一个本地服务器,可能实现的多种服务进行注册,因此将类名修改为LocalServiceRegistry。我们现在需要的远程服务注册中心,针对多个服务端(提供者),因此先创建一个通用接口RemoteServiceRegistry

    public interface RemoteServiceRegistry {
         
        // 根据服务名和提供服务的地址,注册服务
        void register(String serviceName, InetSocketAddress inetSocketAddress);
        // 根据服务名在远程注册中心查询提供服务的地址
        InetSocketAddress FindServiceAddr(String serviceName);
    }
    

    主要存在两个方法:根据服务名(其实是具体服务继承的接口名)和服务提供者的通信地址(ip加端口)来向注册中心注册服务;根据服务名,在远程服务注册中心查询对应服务提供者的地址。

  2. 创建一个使用Nacos继承上述接口的实现类 NacosRemoteServiceRegistry

    public class NacosRemoteServiceRegistry implements RemoteServiceRegistry {
         
        private static final Logger logger = LoggerFactory.getLogger(NacosRemoteServiceRegistry.class);
        // Nacos连接地址
        private static final String SERVER_ADDR = "127.0.0.1:8848";
        // Nacos实例对象
        private static final NamingService namingService;
        // 初始化
        static {
         
            try{
         
                // 连接到Nacos远程服务注册中心
                namingService = NamingFactory.createNamingService(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值