CodeAshen's blog CodeAshen's blog
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)

CodeAshen

后端界的小学生
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)
  • 剖析Spring5核心原理

  • Spring源码轻松学

  • Spring Boot 2.0深度实践

  • Spring-Cloud

  • Spring-Cloud-Alibaba

    • 第01章-简介
    • 第02章-Nacos服务发现
      • 2.1 Nacos搭建及简介
      • 2.2 Nacos服务注册于发现
      • 2.3 服务发现的领域模型
      • 2.4 Nacos服务元数据
    • 第03章-Ribbon负载均衡
    • 第04章-Feign声明式HTTP客户端
    • 第05章-Sentinel集群容错
    • 第06章-RocketMQ消息队列
    • 第07章-Spring Cloud Gateway网关
    • 第08章-认证授权
    • 第09章-Nacos配置管理
    • 第10章-Sletuh调用链
  • Spring
  • Spring-Cloud-Alibaba
CodeAshen
2023-02-10
目录

第02章-Nacos服务发现

# 2.1 Nacos搭建及简介

启动Nacos Server:https://nacos.io/zh-cn/docs/quick-start.html

startup.cmd -m standalone
1

微服务全景架构图

image-20210127155821709

Nacos服务注册与发现模型

image-20210127161100907

# 2.2 Nacos服务注册于发现

  1. 加入依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    1
    2
    3
    4
  2. 加注解(非必须)

    @SpringBootApplication
    @EnableDiscoveryClient  // 非必须,早期需要
    public class UserCenterApplication {}
    
    1
    2
    3
  3. 写配置

    spring:
      cloud:
        nacos:
          #指定nacos server地址
          server-addr: localhost:8848
          discovery:
            #指定命名空间、集群
            namespace: 01511f2b-269d-442f-8cde-91a6220ce63d
            cluster-name: Shanghai
            #指定元数据
            metadata: 
              author: lucifer
              date: 2021-01-27 18:46
      application:
        # spring.application.name对应注册到nacos上的服务名
        name: content-center
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

测试获取服务列表

public class ShareService {
    @Autowired
    private DiscoveryClient discoveryClient;
    
    public ShareDTO findById(Integer id) {
        // 拿到所有用户中心实例信息
        List<ServiceInstance> instances = discoveryClient.getInstances("user-center");
        List<String> targetUrls = instances.stream()
                .map(instance -> instance.getUri().toString() + "/users/{id}")
                .collect(Collectors.toList());
                
        // 可以使用RestTemplate等发起请求了
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2.3 服务发现的领域模型

image-20210127174607383

  • Namespace:实现隔离,默认public,服务不能跨Namespace调用
  • Group:不同服务可以分到一个组,默认DEFAULT-GROUP
  • Service:微服务
  • Cluster:对指定微服务的一个虚拟划分,默认DEFAULT
  • Instance:微服务实例

# 2.4 Nacos服务元数据

服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据

作用:

  • 提供描述信息
  • 让微服务调用更加灵活,如版本控制

设置方式:可以在控制台设置,或者通过配置文件设置

编辑 (opens new window)
上次更新: 2023/06/04, 12:34:19
第01章-简介
第03章-Ribbon负载均衡

← 第01章-简介 第03章-Ribbon负载均衡→

最近更新
01
第01章-RabbitMQ导学
02-10
02
第02章-入门RabbitMQ核心概念
02-10
03
第03章-RabbitMQ高级特性
02-10
更多文章>
Theme by Vdoing | Copyright © 2020-2023 CodeAshen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式