Spring Cloud Alibaba:Nacos服务注册

安装(docker)

docker pull nacos/nacos-server
#备注:MODE=standalone 单机模式运行
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

然后访问http://192.168.10.137:8848/nacos/,账号密码默认都是nacos

服务注册

引入nacos依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

配置文件properties:

server.port=9001
spring.application.name=nacos-payment-provider
spring.cloud.nacos.discovery.server-addr=192.168.10.137:8848
management.endpoints.web.exposure.include=*

主启动类,以及controller

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain9001.class,args);
    }
}

@RestController
public class PaymentController {
    @Value("${server.port}")
    private String port;

    @GetMapping(value = "/payment/nacos/{id}")
    public String echo(@PathVariable Integer id) {
        return "Hello Nacos Discovery :id ="+id+":port="+port;
    }
}

启动后,打开nacos,发现服务已经注册进nacos:

然后拷贝虚拟端口映射,点击copy configuration

修改一些属性:

然后Services中出现了刚才配置的一个服务,启动它

观察nacos,同一个微服务名字下有两个实例。

nacos负载均衡

nacos默认是支持负载均衡的,其中依赖了Netflix-Ribbon包

下面新建一个服务消费者
配置文件

server.port=83
spring.application.name=nacos-order-consumer
spring.cloud.nacos.discovery.server-addr=192.168.10.137:8848
management.endpoints.web.exposure.include=*

主启动类省略(需要导入open-feign依赖),controller和service接口如下:

@RestController
public class OrderController {
    @Value("${server.port}")
    private String port;

    @Autowired
    private PaymentService paymentService;

    @GetMapping(value = "/order/nacos/{id}")
    public String echo(@PathVariable Integer id) {
        return paymentService.getPaymentById(id);
    }
}
@Component
@FeignClient("nacos-payment-provider")
public interface PaymentService {
    @GetMapping("/payment/nacos/{id}")
    public String getPaymentById(@PathVariable("id") Integer id);
}

运行三个服务提供者以及一个服务消费者,发现三个服务提供者轮流提供服务,也证明了nacos默认支持负载均衡。

服务注册中心对比


nacos支持AP和CP模式的切换,C是所有节点在同一时间看到的数据是一致的,A是所有的请求都收到响应

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
原文地址:https://www.cnblogs.com/wwjj4811/p/13629969.html