nacos注册不成功(Nacos简介注册中心)
nacos注册不成功(Nacos简介注册中心)Nacos = Spring Cloud Eureka Spring Cloud Config相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。常见的注册中心:
1. Nacos概述官方地址:https://nacos.io
github地址:https://github.com/alibaba/nacos
面试题:微服务间远程交互的过程?
- 先去注册中心查询服务的服务器地址
- 调用方给对方发送http请求
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
1.2. 为什么是Nacos常见的注册中心:
- Eureka(原生,2.0遇到性能瓶颈,停止维护)
- Zookeeper(支持,专业的独立产品。例如:dubbo)
- Consul(原生,GO语言开发)
- 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 实现服务的注册与发现。
Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。
Nacos主要提供以下四大功能:
- 服务发现和服务健康监测
- 动态配置服务
- 动态DNS服务
- 服务及其元数据管理
结构图:
Nacos 依赖 java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8
- Maven 3.2.x
你可以通过源码和发行包两种方式来获取 Nacos。
- 从 Github 上下载源码方式
```bash git clone https://github.com/alibaba/nacos.git cd nacos/
切换到nacos根目录,执行下列命令mvn -Prelease-nacos clean install -U # 要下载很多依赖 会比较慢 ls -al distribution/target/ # 切换目录
change the $version to your actual pathcd distribution/target/nacos-server-$version/nacos/bin ```
- 下载源码压缩包方式
您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。
bash unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin
2.2. 启动nacos服务Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
Windows
启动命令:
cmd startup.cmd
或者双击startup.cmd运行文件。
访问:http://localhost:8848/nacos
用户名密码:nacos/nacos
2.3. 注册中心首先创建两个工程:nacos-provider、nacos-consumer
创建生产者:
创建消费者:
然后,一路下一步或者ok。效果如下:
ProviderController代码如下:
```java @RestController public class ProviderController {
@Value("${myName}")
private String name;
@GetMapping("hello")
public String hello(){
return "hello " name;
}
} ```
application.properties配置如下:
```properties server.port=8070
自定义参数myName=nacos ```
2.3.2. 生产者注册到nacos生产者注册到nacos注册中心,步骤:
- 添加依赖:spring-cloud-starter-alibaba-nacos-discovery及SpringCloud
```xml org.springframework.boot spring-boot-starter-web
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
org.springframework.cloud spring-cloud-dependencies Greenwich.SR2 pom import ```
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
- 在 application.properties 中配置nacos服务地址和应用名
properties server.port=8070 spring.application.name=nacos-provider # nacos服务地址 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 # 自定义参数 myName=nacos
- 通过Spring Cloud原生注解 @EnableDiscoveryClient 开启服务注册发现功能
```java @SpringBootApplication @EnableDiscoveryClient public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class args);
}
} ```
效果:
ConsumerController代码:
```java @RestController public class ConsumerController {
@GetMapping("hi")
public String hi() {
return "hi provider!";
}
} ```
application.properties:
properties server.port=8080
2.3.4. 消费者注册到nacos消费者注册到nacos跟生产者差不多,也分3步:
- 添加依赖:同生产者
- 在application.properties中配置nacos的服务名及服务地址:同生产者
- 在引导类(NacosConsumerApplication.java)中添加@EnableDiscoveryClient注解:同生产者
效果:
2.3.5. 使用feign调用服务前我们使用feign来远程调用,这里也一样。引入feign的依赖:
```xml org.springframework.boot spring-boot-starter-web
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- SpringCloud的依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
```
在NacosConsumerApplication类上添加@EnableFeignClients注解:
```java @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class args);
}
} ```
编写feignClient:
```java @FeignClient("nacos-provider") public interface ProviderFeign {
@RequestMapping("hello")
public String hello();
} ```
在Controller中使用feignClient:
```java @RestController public class ConsumerController {
@Autowired
private ProviderFeign providerFeign;
@GetMapping("hi")
public String hi() {
return this.providerFeign.hello();
}
} ```
测试访问: