SpringCloud高级(二) ——SpringCloud Alibaba Nacos篇一

Nacos简介

是什么

一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心
简单说:Nacos就是注册中心+配置中心的组合
等价于:Nacos = Eureka+Config+Bus
阿里牛逼~

能干嘛

替代Eureka做服务注册中心
替代Config做服务配置中心

去哪下

github地址:https://github.com/alibaba/Nacos

官网文档:

https://nacos.io/zh-cn/index.html
https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery

各种注册中心比较

在这里插入图片描述
在这里插入图片描述
Nacos支持APCP模式的切换:

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

在这里插入图片描述

安装并运行Nacos

先从官网下载Nacos:

https://github.com/alibaba/nacos/releases/tag/1.1.4

解压安装包,直接运行bin目录下的startup.cmd

命令运行成功后直接访问:http://localhost:8848/nacos
默认账号密码都是nacos
在这里插入图片描述

Nacos服务注册中心功能

参考来源:

https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

基于Nacos的服务提供者

pom

<!--spring cloud 阿里巴巴-->
<dependency>
	 <groupId>com.alibaba.cloud</groupId>
	 <artifactId>spring-cloud-alibaba-dependencies</artifactId>
	 <version>2.1.0.RELEASE</version>
	 <type>pom</type>
	 <scope>import</scope>
</dependency>

当前模块pom

 <dependencies>
         <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>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>1.2.62</version>
         </dependency>
 </dependencies>

配置文件:
应用名和服务端地址都要写上,不然注册不上去

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);
    }
}

测试

访问接口:http://localhost:9001/payment/nacos/1
在这里插入图片描述
nacos控制台:
在这里插入图片描述
nacos服务注册中心功能演示成功
服务提供者9001也成功的注册到了nacos

为演示nacos的负载均衡,参照9001新建9002

新建cloudalibaba-provider-payment9002,步骤同上
在这里插入图片描述
启动。
在这里插入图片描述
在这里插入图片描述
ok,环境准备完毕,继续往下走!

为啥nacos支持负载均衡?
因为集成了ribbon
在这里插入图片描述

基于Nacos的服务消费者

新建Modulecloudalibaba-consumer-nacos-order83

pom

<dependencies>
    <!--SpringCloud ailibaba nacos -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
        <dependency>
        <groupId>com.atguigu.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>
</dependencies>

配置文件:

server:
  port: 83
spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
#配置要调用的微服务,服务名nacos-payment-provider
#Controller里通过@value获取
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);
    }
}

配置类:

@Configuration
public class ApplicationContextConfig
{	//RestTemplate注入容器
    @Bean
    //开启负载均衡
    @LoadBalanced
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }
}

业务类:

@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);
    }
}

测试:启动提供者集群以及当前消费者
在这里插入图片描述
访问:http://localhost:83/consumer/payment/nacos/13

nacos registry, serverPort: 9002 id13
nacos registry, serverPort: 9001 id13

83访问9001/9002,轮询负载OK!
好了,nacos的注册中心功能演示完毕,顺带演示了负载均衡。
接下来看看它的另一个功能配置中心!

猜你喜欢

转载自blog.csdn.net/weixin_42412601/article/details/107228818