Dubbo+Nacos实现服务注册和发现

很多公司都用Dubbo作为自己的RPC远程服务调用框架,其优异的性能也是得到了大家的认可。目前的标配是用ZooKeeper进行服务注册,用Dubbo自带的Dubbo Admin进行服务管理,基本来说是够用的。

在讲今天的内容之前,还是看看Dubbo+ZooKeeper是怎么玩的。

Dubbo+ZooKeeper配置流程

1.POM依赖


   com.alibaba.spring.boot
   dubbo-spring-boot-starter
   2.0.0


	com.101tec
	zkclient
	0.10

2.暴露服务接口

    接口:

public interface StuRpcService {
    int add(int a, int b);
}

   实现类:(这里的@service注解是dubbo的,不要用spring的)

@Service
@Component
public class StuRpcServiceImpl implements StuRpcService {
    private final static Logger logger = LoggerFactory.getLogger(StuRpcServiceImpl.class);

    @Override
    public int add(int a, int b) {
        logger.info("StuRpcServiceImpl#add》》》》》》》");
        System.out.println("StuRpcServiceImpl#add》》》》》》》");
        return a+b;
    }
}

3. 消费服务

@RequestMapping("rpc")
@RestController
public class RpcConsumerController {
    @Reference
    private StuRpcService stuRpcService;

    @RequestMapping("invoke")
    public String invokeRpcService(){
        return String.valueOf(stuRpcService.add(1, 2));
    }
}

4. dubbo注册配置

dubbo.application.name=microservice
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

5. 起zookeeper,起自己的应用,就可以玩起来了。

上面讲解了一遍原有的zookeeper是怎么玩的,现在如果要用nacos来做服务注册和发现,改动大吗?答案是,改动很小,只需要改application.properties和pom依赖即可。

Dubbo+Nacos配置流程要做的改动

1. pom依赖


	com.alibaba
	dubbo-registry-nacos
	0.0.2


	com.alibaba.nacos
	nacos-client
	0.6.1

2. application.properties

nacos.discovery.server-addr=127.0.0.1:8848
nacos.config.server-addr=127.0.0.1:8848
dubbo.registry.address = nacos://127.0.0.1:8848
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1

3. 启动nacos,看看服务提供者和消费者是不是都注册上来了

Dubbo+Nacos实现服务注册和发现_第1张图片

4. 调用一把服务

我是用idea通过8090端口起的服务,这里把服务提供的@Service给注释掉了,然后用dos命令窗口通过8091端口起了一遍应用,这里是没有注释掉@Service的包。造成的结果是:8090端口的应用没有提供服务,8091端口的应用提供了add服务。

http://localhost:8090/rpc/invoke

调用后的结果:

网页上显示3,idea控制台没有打印任何日志,dos命令窗口打印了日志

总结

使用Nacos替换掉Zookeeper,对整个项目的改动并不大。至于为什么用Nacos,不用Zookeeper,有下面的原因

1)分布式系统有CAP理论,Nacos实现了AP,Zookeeper实现了CP,为了系统的HA,宁愿选用AP

2)Zookeeper仅仅是一个简单的服务注册工具,Nacos不仅仅支持服务注册发现,而且实现了配置中心

3)Nacos作为SpringCloud全家桶一员,未来的发展肯定是和微服务路线图发展一致

你可能感兴趣的:(微服务实战)