1.什么是nacos
(1)Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
(2)Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
(3)Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
2.为什么要用nacos
常见的注册中心:
(1) Eureka(原生,2.0遇到性能瓶颈,停止维护)
(2) Zookeeper(支持,专业的独立产品。例如:dubbo)
(3) Consul(原生,GO语言开发)
(4) Nacos
相对于 Spring Cloud Eureka 来说,Nacos 更强大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
0.2.2.RELEASE
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
Greenwich.SR2
pom
import
provider配置文件
server.port=9001
spring.application.name=nacos-provider
# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 自定义参数
myName=nacos
consumer配置文件
server.port=9002
spring.application.name=nacos-consumer
# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
接下来是主启动类
注意@EnableDiscoveryClient是springcloud原生注解可加可不加
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
}
开启启动类就把provider注册到nacos中了,消费方也差不多一样(就配置文件和controller改一下)。然后使用feign调用服务
在consumer中加一个fegin依赖
org.springframework.cloud
spring-cloud-starter-openfeign
消费方controller:
@RestController
public class ConsumerController {
@Autowired
private ProviderFeign providerFeign;
@GetMapping("hi")
public String hi() {
return this.providerFeign.hello();
}
}
提供方的controller
@RestController
public class ProviderController {
@Value("${myName}")
private String name;
@GetMapping("hello")
public String hello(){
return "hello " + name;
}
}
消费方建feign,nacos-provider是提供服务名称
@FeignClient("nacos-provider")
public interface ProviderFeign {
@RequestMapping("hello")
public String hello();
}
controller代码里调用
@RestController
public class ConsumerController {
@Autowired
private ProviderFeign providerFeign;
@GetMapping("hi")
public String hi() {
return this.providerFeign.hello();
}
}
最后访问路径成功!!!
详细资料请移步官网