1. SpringCloud Alibaba Nacos 之 服务注册中心
SpringCloud Alibaba系列文章列表
0. SpringCloud Alibaba入门简介
1. SpringCloud Alibaba Nacos 之 服务注册中心
2. SpringCloud Alibaba Nacos 之 服务配置中心
3. SpringCloud Alibaba Nacos 之 集群
4. SpringCloud Alibaba Sentinel 服务限流熔断(万字长文)
文章目录
- **SpringCloud Alibaba系列文章列表**
- Nacos简介
- 1.1 是什么
- 1.2 能干嘛
- 1.3 去哪下
- 1.4 各种注册中心对比
- 安装运行Nacos
- 服务注册中心
- 3.1 简介
- 3.2 服务提供者
- 3.3 消费者
前言
官方文档:
https://nacos.io/zh-cn/docs/quick-start.html
https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/zh-cn/index.html\#\_spring\_cloud\_alibaba\_nacos\_discovery
1. Nacos简介
1.1 是什么
Nacos 是一个 Alibaba 开源的、易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
使用 Spring Cloud Alibaba Nacos Discovery,可基于 Spring Cloud 的编程模型快速接入 Nacos 服务注册功能。
Nacos是注册中心+配置中心的组合,等价于 Eureka + Config + Bus
1.2 能干嘛
- 服务注册中心
- 服务配置中心
1.3 去哪下
下载地址 : https://github.com/alibaba/nacos/releases
1.4 各种注册中心对比
服务注册与发现框架 | CAP模型 | 控制台管理 | 社区活跃度 |
Eureka | AP | 支持 | 低(2.x版本闭源) |
Zookeeper | CP | 不支持 | 中 |
Consul | CP | 支持 | 高 |
Nacos | AP/CP | 支持 | 高 |
2. 安装运行Nacos
当前以windows版本为例,下载nacos-server-1.4.0.zip
解压zip包,得到nacos文件夹
nacos/bin目录下,cmd命令行,执行命令
startup.cmd -m standalone (standalone代表着单机模式运行)
访问 http://127.0.0.1:8848/nacos , 用户名nacos,密码 nacos
登录成功如下图,则nacos启动成功。
3. 服务注册中心
3.1 简介
如上图,搭建
两个服务提供者 cloudalibaba-provider-payment9001、cloudalibaba-provider-payment9002
一个消费者 cloudalibaba-consumer-order83
通过Ribbon+ RestTemplate远程调用;(nacos自带负载均衡,因为依赖了ribbon)
3.2 服务提供者
新建子项目 cloudalibaba-provider-payment9001
pom.xml
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator application.yml
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #配置nacos地址
management: #暴露端口
endpoints:
web:
exposure:
include: '*'
启动类
@EnableDiscoveryClient
业务类 Controller
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@GetMapping(value = "/payment/nacos/{id}")
public String getPayment(@PathVariable("id") Integer id)
{
return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
}
}
接口测试
启动nacos,启动cloudalibaba-provider-payment9001
查看nacos,服务列表,如下图注册成功;
浏览器访问 http://localhost:9001/payment/nacos/123
新建子模块cloudalibaba-provider-payment9002,代码和9001相同;只需要把application.yml中的server.port改成9002即可;
3.3 消费者
新建子模块cloudalibaba-consumer-order83
pom.xml
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application.yml
server:
port: 83
spring:
application:
name: nacos-consumer83
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # nacos地址
register-enabled: false #不注册到nacos
service-url: #非必要;定义要调用的服务地址,便于远程调用
nacos-payment-service: http://nacos-payment-provider
启动类
@EnableDiscoveryClient
RestTemplate配置类
@Configuration
public class RestTempleteConfig {
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
业务类Controller
@RestController
public class ConsumerController {
@Autowired
RestTemplate restTemplate;
@Value("${service-url.nacos-payment-service}")
private String serverURL;
@GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id)
{
return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
}
}
测试
启动cloudalibaba-consumer-order83
浏览器访问 http://localhost:83/consumer/payment/nacos/86 看看能否远程调用到服务提供者
负载均衡测试
启动cloudalibaba-provider-payment9002
浏览器多次访问 http://localhost:83/consumer/payment/nacos/86
发现9001和9002交替出现;
点赞+评论+关注
本文源码地址: https://gitee.com/shuaidawang/SpringCloudDemo.git
有错误的地方欢迎指正!可以加入qq交流群: 700637673
还没有评论,来说两句吧...