1. 为什么叫Nacos :
前四个字母分别是Naming 和 Configuration 的前两个字母,最后的s为Service。
Nacos 就是注册中心 + 配置中心的组合
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。java项目www.fhadmin.org
在这里插入图片描述
安装并运行nacos
在docker上安装nacos
拉取nacos镜像:
docker pull nacos/nacos-server
运行nacos:
扫描二维码关注公众号,回复:
12962316 查看本文章

docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
在浏览器输入:http://ip地址:8848/nacos/
账号和密码都是nacos。
在这里插入图片描述
在这里插入图片描述
Nacos作为服务注册中心演示
- 新建模块cloudalibaba-provider-payment9001
- pom
<dependencies> <!--SpringCloud Alibaba nacos--> <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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
- yml
server: port: 9001 spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: 120.92.164.250:8848 #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址) management: endpoints: web: exposure: include: '*'
- 主启动类
//java项目www.fhadmin.org @EnableDiscoveryClient @SpringBootApplication public class PaymentMain9001 { public static void main(String[] args) { SpringApplication.run(PaymentMain9001.class, args); } }
- 新建controller包,包下新建PaymentController
//java项目www.fhadmin.org @RestController public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping("/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id){ return "nacos registry, serverPort: " + serverPort + "\t id: " + id; } }
- 启动9001
在这里插入图片描述
消费者 (整合Feign)
- 新建 cloudalibaba-consumer-nacos-order83
- pom
<dependencies> <!--SpringCloud Alibaba nacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 引用自己定义的api通用包,可以使用Payment支付Entity --> <dependency> <groupId>com.angenin.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- openfeign --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies>
- 建yml
server: port: 83 spring: application: name: nacos-order-consumer cloud: nacos: discovery: server-addr: 120.92.164.250:8848 #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址) #消费者要访问的微服务名称(成功注册进nacos的服务提供者) service-url: nacos-user-service: http://nacos-payment-provider
- 主启动类
@EnableDiscoveryClient @EnableFeignClients @SpringBootApplication public class OrderNacosMain83 { public static void main(String[] args) { SpringApplication.run(OrderNacosMain83.class, args); } }
- 新建 feign包 ,包下新增接口 PaymentFeignService
@Component @FeignClient(value = "nacos-payment-provider") public interface PaymentFeignService { @GetMapping("/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id); }
- 新建controller
@RestController public class OrderNacosController { @Resource private PaymentFeignService paymentFeignService; @GetMapping("/consumer/payment/feign/nacos/{id}") public String paymentInfo2(@PathVariable("id") Integer id){ return paymentFeignService.getPayment(id); } }
启动