Dubbo项目将Nacos作为其注册中心和配置中心
Nacos提供了四个主要功能
- 服务发现和服务运行状况检查(服务治理):Nacos使服务易于注册自己并通过DNS或HTTP接口发现其他服务。Nacos还提供服务的实时运行状况检查,以防止向不正常的主机或服务实例发送请求。
- 动态配置管理:动态配置服务使您可以在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序和服务的需求,这使配置更改更加有效和敏捷。
- 动态DNS服务:Nacos支持加权路由,使您可以更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。
- 服务和元数据管理(分布式配置):Nacos提供了易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes
DNS,服务运行状况和指标统计信息。
Nacos既可以作为服务治理中心(可以替代 Spring Cloud Eureka)也可以作为配置中心(可替代 Spring Cloud Config)。
Nacos作为一个单独的服务进行部署,不需要用户搭建项目作为服务治理节点。
Dubbo整合Nacos
服务提供者的相关配置
注入依赖
<!--dubbo依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.6</version>
</dependency>
<!-- Nacos Spring dependency -->
<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>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
dubbo-provider.xml:以xml形式配置dubbo
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="springcloud-alibaba-producer" />
<dubbo:registry id="nacos_service" address="nacos://127.0.0.1:8848" timeout="15"/>
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" threads="1000" />
<!-- dubbo监控配置 -->
<dubbo:monitor protocol="registry" />
<!-- dubbo管理平台接口 -->
<bean id="UserService" class="com.luo.producer.service.impl.UserServiceImpl" />
<dubbo:service interface="com.luo.api.service.IUserService" ref="UserService" cluster="failfast"
registry="nacos_service" />
</beans>
调用接口
public interface IUserService {
public String ceshi(String input);
}
服务的实现类
public class UserServiceImpl implements IUserService {
@Override
public String ceshi(String input) {
return "Hello World,"+input;
}
}
服务调用者的相关配置
注入依赖
<!--dubbo依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.6</version>
</dependency>
<!-- Nacos Spring dependency -->
<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>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
bootstrap.properties 配置Nacos配置中心
#应用名
spring.application.name=springcloud-alibaba-consumer
#配置文件的前缀
spring.cloud.nacos.config.prefix=springcloud-alibaba-consumer
#当前生效的配置文件
spring.profiles.active=Test
#配置中心路径
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#配置文件后缀
spring.cloud.nacos.config.file-extension=properties
服务降级的实现类
public class MockUserService implements IUserService {
public MockUserService(){
}
@Override
public String ceshi(String input) {
return "服务暂时不可用,请重试";
}
}
Controller层
@RestController
@RefreshScope
public class DubboComsumerController {
@Autowired
IUserService userService;
@Value("${name:未知者}")
private String name;
@RequestMapping("/hello")
public String hello(){
return userService.ceshi(name);
}
}
启动项目,进行验证
第一步:Nacos管理平台,查看到服务的注册信息
第二步:访问localhost:8081/hello,进行验证
第三步:配置Nacos分布式配置文件
第四步:再次访问localhost:8081/hello,进行验证
第五步:关闭服务提供者后,再次访问:localhost:8081/hello,进行验证