Spring Cloud Alibaba学习笔记:Nacos安装及服务注册与发现

本篇要点

  • 简单了解Nacos提供的功能。
  • 简单介绍Nacos安装配置及启动。
  • 演示Nacos做为服务注册中心的用法。
  • Nacos与其余注册中心的对比。

Nacos简介

Nacos = (Dynamic) Naming and Configuration Service 注册中心+配置中心,也就是代替Eureka做为服务注册中心,替代Config做为配置中心,替代Bus做为消息总线。java

官方网站: http://nacos.iogit

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。github

服务是Nacos中的头等公民。Nacos支持几乎全部类型的服务,入:Dubbo/gRPC,Spring Cloud RESTFUL服务或Kubernetes服务。web

Nacos主要提供的四种功能

服务发现和服务运行情况检查

Nacos使服务易于注册本身并经过DNS或HTTP接口发现其余服务。 Nacos还提供服务的实时运行情况检查,以防止向不正常的主机或服务实例发送请求。spring

动态配置管理

动态配置服务使您能够在全部环境中以集中和动态的方式管理全部服务的配置。 Nacos消除了在更新配置时从新部署应用程序和服务的需求,这使配置更改更加有效和敏捷。windows

动态DNS服务

Nacos支持加权路由,使您能够更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流控制和简单的DNS解析服务。它能够帮助您轻松实现基于DNS的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。app

服务和元数据管理

Nacos提供了易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运行情况和指标统计信息。负载均衡

Windows中Nacos下载及安装

推荐下载稳定版本:Nacos1.3.1ide

下载地址:https://github.com/alibaba/nacos/releases/tag/1.3.1微服务

下载以后,进入bin目录,cmd startup.cmd -m standalone启动单机模式。

接着访问:http://localhost:8848/nacos/,帐号密码都是nacos

做为服务注册中心演示

新建服务模块

新建模块:cloudalibaba-provider-payment9001,引入依赖:

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

编写yml配置

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

主启动类

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

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,启动9001服务,访问localhost:8848/nacos

服务已经成功注册进nacos注册中心。

演示负载均衡

仿照9001模块再建一个9002模块,具体步骤就省略了,端口号改一改就能够。接着依次启动nacos,9001,9002,观察nacos服务注册中心的状况:

nacos-payment-provider服务下包含了两个实例。

新建消费者模块

新建cloudalibaba-consumer-nacos-order83,依旧引入依赖:

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

nacos默认支持负载均衡:是由于该依赖已经集成ribbon,故自然支持。

编写yml配置

server:
  port: 83


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

主启动类

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

Controller接口

@RestController
@Slf4j
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-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);
    }

}

配置类

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

测试一下

启动nacos,80消费者,9001,9002服务提供模块。

访问:http://localhost:83/consumer/payment/nacos/1,将会轮询访问服务接口。

Nacos与其余注册中心对比

源码下载

本系列文章为《尚硅谷SpringCloud教程》的学习笔记【版本稍微有些不一样,后续遇到bug再作相关说明】,主要作一个长期的记录,为之后学习的同窗提供示例,代码同步更新到Gitee:https://gitee.com/tqbx/spring-cloud-learning,而且以标签的形式详细区分每一个步骤,这个系列文章也会同步更新。

相关文章
相关标签/搜索