Nacos服务注册与发现
一:服务注册与发现简介
大的分布式微服务项目会根据业务,把项目拆分成多个业务模块项目,然后互相调用;
如何互相调用呢?
这里我们每个项目模块都需要去nacos服务注册中心注册下,登记下每个项目自身的地址和端口,然后其他的项目模块就可以通过Nacos找到需要调用的其他模块项目的地址了;
这样就可以实现服务的发现和调用;
二:服务注册发现
服务提供者:
1:pom.xml 引入依赖:
<!-- 服务注册/发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
2:配置application.yml
配置服务发现:
spring: application: name: nacos-order cloud: nacos: discovery: server-addr: 127.0.0.1:8848
3: 启动类加主机:
@SpringBootApplication @EnableDiscoveryClient //能够让注册中心发现 public class NacosOrderApplication{ public static void main(String[] args) { SpringApplication.run(NacosStockApplication.class,args); } }
三:openfeign服务调用
1:pom.xml引入依赖:
<!-- openfeign --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2:定义Feign接口,生成动态代理对象
package com.java1234.feign; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @FeignClient("nacos-stock") public interface StockFeignService { @RequestMapping("/stock/test") public String test(@RequestParam("info") String info); }
3:启动类:
@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients(basePackages = "com.java1234.feign")//开启Feign客户端支持 public class NacosOrderApplication { public static void main(String[] args) { SpringApplication.run(NacosOrderApplication.class,args); } }
四:多实例服务负载均衡
1: 同一个模块注册多个服务,用同样的服务名,不同的端口注册
// nacos-stock 实例一
server: port: 8084 servlet: context-path: / spring: application: name: nacos-stock cloud: nacos: discovery: server-addr: 127.0.0.1:8848 namespace: f09c21bb-14e2-4377-a2a0-78664423967a cluster-name: JAVA1234
// nacos-stock 实例二 server: port: 8088 servlet: context-path: / spring: application: name: nacos-stock cloud: nacos: discovery: server-addr: 127.0.0.1:8848 namespace: f09c21bb-14e2-4377-a2a0-78664423967a cluster-name: JAVA1234
2: 可以配置权重,默认是轮训 具体详细的配置看文档