目录
- 注册微服务到Nacos(服务提供者)
- 创建项目
- 修改依赖信息
- 添加启动注解
- 添加配置信息
- 启动服务,Nacos控制台查看服务列表
- 注册微服务到Nacos(服务消费者)
- 创建项目
- 添加依赖信息
- 添加启动注解
- 添加配置信息
- 启动服务,Nacos控制台查看服务列表
- 远程调用
- 服务提供者添加服务接口
- 复制一个服务提供者出来,端口暴露为9082
- 访问接口内容稍作修改
- 服务消费者启动类加注解@EnableFeignClients
- 远程调用接口
- 服务消费者访问接口
- 启动服务消费者,访问接口
- Nacos与其他注册中心特性对比
注册微服务到Nacos(服务提供者)
创建项目
- 指定artifactId为cloudalibaba-user-provider
- IDEA中的ServerUrl使用阿里云地址:
https://start.aliyun.com
修改依赖信息
添加启动注解
@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class CloudalibabaUserProviderApplication {
public static void main(String[] args) {
SpringApplication.run(CloudalibabaUserProviderApplication.class, args);
}
}
添加配置信息
server:
port: 8082
spring:
application:
name: cloudalibaba-user-provider
cloud:
nacos:
discovery:
username: nacos
password: nacos
server-addr: 127.0.0.1:8848
namespace: public
启动服务,Nacos控制台查看服务列表
注册微服务到Nacos(服务消费者)
创建项目
指定artifactId为cloudalibaba-user-consumer
添加依赖信息
添加启动注解
@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class CloudalibabaUserConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudalibabaUserConsumerApplication.class, args);
}
}
添加配置信息
server:
port: 8083
spring:
application:
name: cloudalibaba-user-consumer
cloud:
nacos:
discovery:
username: nacos
password: nacos
server-addr: 127.0.0.1:8848
namespace: public
启动服务,Nacos控制台查看服务列表
远程调用
服务提供者添加服务接口
- 在服务提供者项目中添加ResuUserController类
- 添加服务接口
@RestController
@RequestMapping("/user")
public class UserProviderController {
@RequestMapping("/view/{userId}")
public String getUser(@PathVariable Integer userId){
System.out.println("服务提供者接收到用户ID:" + userId);
return "{\"userId\":" + userId + ",\"userName\":\"zhangsan\",\"source\":\"8082\"}";
}
}
复制一个服务提供者出来,端口暴露为9082
访问接口内容稍作修改
```java
@RestController
@RequestMapping("/user")
public class UserProviderController {
@RequestMapping("/view/{userId}")
public String getUser(@PathVariable Integer userId){
System.out.println("服务提供者接收到用户ID:" + userId);
return "{\"userId\":" + userId + ",\"userName\":\"zhangsan\",\"source\":\"9082\"}";
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/134c7962ba664066a5d9413234abbbea.png)
## 服务消费者远程调用服务接口
### 服务消费者添加依赖
```xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
服务消费者启动类加注解@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class CloudalibabaUserConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudalibabaUserConsumerApplication.class, args);
}
}
远程调用接口
@FeignClient(name = "cloudalibaba-user-provider")
public interface UserProviderFeign {
@RequestMapping("/user/view/{userId}")
String getUser(@PathVariable("userId") @RequestParam("userId") Integer userId);
}
服务消费者访问接口
@RestController
public class UserConsumerController {
@Resource
private UserProviderFeign userProviderFeign;
@RequestMapping("/detail/{uid}")
public String getUser(@PathVariable("uid") Integer uid) {
return userProviderFeign.getUser(uid);
}
}
启动服务消费者,访问接口
访问:http://localhost:8083/detail/1
Nacos与其他注册中心特性对比
特性 | Nacos | Eureka | Zookeeper | Consul | CoreDNS |
---|---|---|---|---|---|
服务注册与发现 | 支持 | 支持 | 支持 | 支持 | 不支持 |
多数据中心支持 | 支持 | 不支持 | 不支持 | 支持 | 不支持 |
服务健康检查 | 支持 | 不支持 | 不支持 | 支持 | 不支持 |
配置管理 | 支持 | 不支持 | 不支持 | 支持 | 不支持 |
分布式锁 | 支持 | 不支持 | 支持 | 支持 | 不支持 |
事件监听 | 支持 | 不支持 | 支持 | 支持 | 不支持 |
多语言支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
可扩展性 | 高 | 低 | 中 | 高 | 中 |
社区支持 | 较好 | 较好 | 较好 | 较好 | 较好 |
访问协议 | HTTP/DNS/UDP | HTTP | TCP | HTTP/DNS | DNS |
负载均衡 | 权重/DSL/metadata/CMDB | Ribbon | / | fabio | RR |
一致性协议 | CP+AP | AP | CP | CP | / |