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

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

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

Dubbo+ZooKeeper配置流程

1.POM依赖

<dependency>
   <groupId>com.alibaba.spring.boot</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>2.0.0</version>
</dependency>
<dependency>
	<groupId>com.101tec</groupId>
	<artifactId>zkclient</artifactId>
	<version>0.10</version>
</dependency>

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依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>dubbo-registry-nacos</artifactId>
	<version>0.0.2</version>
</dependency>
<dependency>
	<groupId>com.alibaba.nacos</groupId>
	<artifactId>nacos-client</artifactId>
	<version>0.6.1</version>
</dependency>

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,看看服务提供者和消费者是不是都注册上来了

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全家桶一员,未来的发展肯定是和微服务路线图发展一致

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值