Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心

Springcloud-Alibaba 〖十三〗Nacos来啦!!

      • PS: github仓库[仓库地址](https://github.com/ktoking/springcloud-alibaba)项目都放到里面了
      • 一. Springcloud-Alibaba
      • 二. Nacos安装
      • 三. Nacos做服务注册中心 9001项目
        • 3.1 项目目录
        • 3.2 pom
        • 3.3 application.yml
        • 3.4 主启动
        • 3.5 业务类
          • controller层
        • 3.6 测试
      • 四. 集群测试
        • 4.1 配置集群(偷懒的办法~)
        • 4.2 测试
        • 4.3 为了更好演示集群,这里还是重新创建一个9002项目
          • 4.3.1 项目目录
          • 4.3.2 建pom
          • 4.3.3 application.yml
          • 4.3.4 主启动
          • 4.3.5 业务类(controller层)
          • 4.3.6 测试
      • 五. 新建module cloudalibaba-consumer-nacos-order83
        • 5.1 项目目录
        • 5.2 pom
        • 5.3 application.yml
        • 5.4 主启动类
        • 5.5 业务类
        • 5.6 测试
      • 六. 总结
      • Nacos确实比较方便而且功能强大!下一篇会讲Nacos作为服务配置中心~
      • 关注不迷路,点赞走一波~ 转载请标注~

PS: github仓库仓库地址项目都放到里面了

一. Springcloud-Alibaba

官网地址:Springcloud-Alibaba

  • 服务限流降级: 默认支持Servlet. Feign. RestTemplate、 Dubbo 和RocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降
    级规则,还支持查看限流降级Metrics监控。
  • 服务注册与发现: 适配Spring Cloud服务注册与发现标准,默认集成了Ribbon的支持。
  • 分布式配置管理: 支持分布式系统中的外部化配置,配置更改时自动刷新。
  • 消息驱动能力: Spring Cloud Stream为微服务应用构建消息驱动能力。阿里云对象存储:阿里云提供的海量、安全、低成本、可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • 分布式任务调度: 提供秒级、精准、可靠可用的定时(基于Cron表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有Worker (schedulerx- client). 上执行。
  • 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • 阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

二. Nacos安装

前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。

Nacos就是注册中心+配置中心的组合 Nacos=Eureka+Config+Bus

Nacos:官网下载地址

下载解压后,找到nacos/bin目录下的startup.cmd命令点开
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第1张图片
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第2张图片
默认的账号密码都是 nacos,进入local:8848/nacos就可以进入我们的控制台
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第3张图片

三. Nacos做服务注册中心 9001项目

首先你的父POM一定要有Springcloud-Alibaba依赖
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第4张图片

3.1 项目目录

Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第5张图片

3.2 pom


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud2020artifactId>
        <groupId>com.aiguigu.springcloudgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>cloudalibaba-provider-payment9001artifactId>

    
    <dependencies>
        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

project>

3.3 application.yml

server:
  port: 9001

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

management:
  endpoints:
    web:
      exposure:
        include: '*'  #监控

3.4 主启动

package com.atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

3.5 业务类

controller层
package com.atguigu.springcloud.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
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;
    }

}

3.6 测试

首先来测试方法,可以访问到
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第6张图片
这时候我们来访问Nacos的UI界面,发现服务已经注册上来
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第7张图片
点开详情可以看见更多信息
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第8张图片

四. 集群测试

4.1 配置集群(偷懒的办法~)

Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第9张图片
这时候可以从已经配置过的9001复制一份模板来
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第10张图片
这时候我们启动9011服务
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第11张图片

4.2 测试

打开我们的Nacos控制台发现实例数量为2
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第12张图片
测试方法9001
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第13张图片
测试方法9011
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第14张图片

4.3 为了更好演示集群,这里还是重新创建一个9002项目

4.3.1 项目目录

基本与9001一样,只是端口号不一样,所以以下只贴出步骤,不演示(一模一样的还让我演示?orz)
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第15张图片

4.3.2 建pom
4.3.3 application.yml
4.3.4 主启动
4.3.5 业务类(controller层)
4.3.6 测试

Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第16张图片

五. 新建module cloudalibaba-consumer-nacos-order83

Nacos天生支持负载均衡因为依赖引入了ribbon
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第17张图片

5.1 项目目录

Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第18张图片

5.2 pom


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud2020artifactId>
        <groupId>com.aiguigu.springcloudgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>cloudalibaba-consumer-nacos-order83artifactId>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>
        <dependency>
            <groupId>com.aiguigu.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>1.0-SNAPSHOTversion>
            <scope>compilescope>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>
project>

5.3 application.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

5.4 主启动类

package com.atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

5.5 业务类

controller层

package com.atguigu.springcloud.alibaba.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
public class OrderNacosController {
    /*
    因为在yml中配置了service-url.nacos-user-service,
    这里不需要再定义要访问微服务名常量,而是通过boot直接读出来
     */
    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id){
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}

5.6 测试

这里我们在Nacos看见消费者已经注册进来了
Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心_第19张图片
这时我们来测试负载均衡,访问controller层方法一次是9001,一次是9002,负载均衡测试成功!
在这里插入图片描述
在这里插入图片描述

六. 总结

组件名 语言 CAP 服务监控检查 对外暴露接口 Springcloud集成
Eureka Java AP 可配支持 HTTP 已集成
Consul Go CP 支持 HTTP/DNS 已集成
Zookeeper Java CP 支持 客户端 已集成
Nacos Java AP/CP 支持 HTTP/DNS/UDP 已集成

Nacos确实比较方便而且功能强大!下一篇会讲Nacos作为服务配置中心~

关注不迷路,点赞走一波~ 转载请标注~

你可能感兴趣的:(Springcloud-Alibaba 〖十三〗终于等到你 Nacos来啦!! Nacos做服务注册中心)