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

对于这个问题,作为一个聊天机器人,我可以提供一些基本的信息,但是对于具体的配置,可能需要您参考相关的文档或者向开发人员寻求帮助。您可以尝试通过以下步骤进行配置: 1. 配置注册中心 在dubbo的配置文件中,需要指定注册中心的地址和协议等信息,例如: ```xml <dubbo:registry address="nacos://localhost:8848"/> ``` 其中,地址是nacos注册中心的地址,对应的协议是nacos。 2. 配置服务提供者 为了让服务注册注册中心上,服务提供者需要在dubbo的配置文件中指定服务名称和端口号等信息,例如: ```xml <dubbo:service interface="com.example.demo.service.UserService" ref="userService" timeout="5000" version="1.0.0" protocol="dubbo" group="test"/> ``` 其中,interface指定了服务的接口,ref指定了服务实现类,timeout指定了超时时间,version指定了版本号,protocol指定了协议,group指定了分组名称。 3. 配置服务消费者 服务消费者需要在dubbo的配置文件中指定服务提供者的服务名称和地址等信息,例如: ```xml <dubbo:reference interface="com.example.demo.service.UserService" id="userService" version="1.0.0" protocol="dubbo" check="false"/> ``` 其中,interface指定了要消费的服务接口,id指定了对应的reference的id,version指定了服务的版本号,protocol指定了协议,check指定了是否检查服务提供者是否已经启动。 以上是一些基本的配置信息,具体的配置内容可能因项目而异。希望这些信息可以帮助到您。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值