AI智能
改变未来

SpringCloudAlibaba – 整合 Nacos 实现服务注册与发现

目录

  • 前言环境
  • Nacos是什么?
  • 服务发现原理
  • 搭建 Nacos Server
      Nacos Server 下载地址
    • Nacos Server 的版本选择
    • 运行 Nacos Server
  • Nacos Client56c注册
      user-center 用户中心微服务注册
    • content-center 内容中心微服务注册
    • 服务发现测试

    前言

    记录下

    Nacos

    的整合过程

    环境

    Win 10 + Spring Cloud 2020.0.1 + Spring Cloud Alibaba 2021.1 +  Nacos 2.0.0

    Nacos是什么?

    • Nacos

      是一个服务发现组件,也是一个配置服务器,

      Nacos

      解决的两个问题:

    1、服务A怎么找到服务B2、管理微服务的配置
    • Nacos

      官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html

    • Nacos

      简易架构图

    服务发现原理

    • 服务发现机制
      服务发现机制就是服务消费者总能找到服务提供者的机制,举个例子:服务发现就像手机中ad8的名片夹,记录一个人所有的联系方式,通过该名片可以联系到某个人,而当某个联系方式不存在时(服务DOWN)就将其从名片夹中删除。

    • 用于生产的服务发现机制:
      1、在微服务上做缓存,定时任务发送当前的地址,调用时取缓存中微服务的地址,该做法好处首先是压力小,不用每次都去实时取,其次是即使服务发现组件崩溃也可以取到缓存中的值,只是无法更新缓存中的值。
      2、每个微服务实例都向服务发现组件发送心跳(即一次请求),告诉服务发现组件自己是活着的,如果服务发现组件发现某一个实例长时间未向自己发送心跳,即认为该实例已挂,将其健康状态标记为

      DOWN

      ,服务消费者即不再调用该实例。

    搭建 Nacos Server

    Nacos Server 下载地址

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

    Nacos Server 的版本选择

    Nacos Server

    的版本选择参照标准在

    spring-cloud-alibaba-dependencies-xxx.pom

    中有记录,如我的

    Spring Cloud Alibaba

    的版本是

    2021.1

    ,其推荐的版本是

    1.4.1

    (生产环境优先选择)

    由于我这里是开发环境,我选择的版本是

    2.0.0

    运行 Nacos Server

    • 官方文档:https://nacos.io/zh-cn/docs/quick-start.html
    • 解压缩下载好的
      Nacos

      压缩包

    • cmd

      运行启动命令

    startup.cmd -m standalone

    • 访问
      http://localhost:8848/nacos/#/login

      (默认端口是8848)

    • 默认登录账号/密码:
      nacos/nacos

    … Nacos Server 搭建完毕

    Nacos Client 注册

    user-center 用户564中心微服务注册

    • pom.xml
    <?xml version=\"1.0\" encoding=\"UTF-8\"?><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 https://maven.apache.org/xsd/maven-4.0.0.xsd\"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.coisini</groupId><artifactId>user-center</artifactId><version>0.0.1-SNAPSHOT</version><name>user-center</name><description>user-center project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>2020.0.1</spring-cloud.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-ad8boot-starter-web</artifactId></dependency><!--spring-cloud-starter-{spring cloud子项目的名称}-[{模块名称}]--><!-- nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><dependencyManagement><dependencies><!-- 整合spring cloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- 整合spring cloud alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
    • application.yml
    spring:application:# 服务名称name: user-centercloud:nacos:discovery:# 指定nacos server的地址server-addr: localhost:8848
    • 启动项目
    • 访问
      Nacos

    content-center 内容中心微服务注册

    • pom.xml

      依赖同上

    • application.yml
    spring:application:# 服务名称name: content-centercloud:nacos:discovery:# 指定nacos server的地址server-addr: localhost:8848
    • 访问
      Nacos

    ad8

    服务发现测试

    • 内容中心编写测试代码
    @RestControllerpublic class TestController {@Autowiredprivate DiscoveryClient discoveryClient;/*** 测试:服务发现,证明内容中心总能找到用户中心* @return 用户中心所有实例的地址信息*/@GetMapping(\"test\")public List<ServiceInstance> getInstances() {// 查询指定服务的所有实例的信息return discoveryClient.getInstances(\"user-center\");}}
    • 如下所示,内容中心可以获取到用户中心所有实例的地址信息

    – End -﹀﹀﹀白嫖有风险点赞加收藏

  • 赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » SpringCloudAlibaba – 整合 Nacos 实现服务注册与发现