SpringCloudAlibaba - 整合 Nacos 实现服务注册与发现
前言
记录下Nacos的整合过程
环境
Win 10 + Spring Cloud 2020.0.1 + Spring Cloud Alibaba 2021.1 + Nacos 2.0.0
Nacos是什么?
Nacos是一个服务发现组件,也是一个配置服务器,Nacos解决的两个问题:
1、服务A怎么找到服务B
2、管理微服务的配置
Nacos官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.htmlNacos简易架构图

服务发现原理
服务发现机制
服务发现机制就是服务消费者总能找到服务提供者的机制,举个例子:服务发现就像手机中的名片夹,记录一个人所有的联系方式,通过该名片可以联系到某个人,而当某个联系方式不存在时(服务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 用户中心微服务注册
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-boot-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-center
cloud:
nacos:
discovery:
# 指定nacos server的地址
server-addr: localhost:8848
- 启动项目
- 访问
Nacos

content-center 内容中心微服务注册
pom.xml依赖同上application.yml
spring:
application:
# 服务名称
name: content-center
cloud:
nacos:
discovery:
# 指定nacos server的地址
server-addr: localhost:8848
- 访问
Nacos

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

- End -
﹀
﹀
﹀
白嫖有风险
点赞加收藏
SpringCloudAlibaba - 整合 Nacos 实现服务注册与发现的更多相关文章
- Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...
- nacos 的服务注册与发现
nacos的服务注册于发现. 这个要求服务统一注册到注册中心,然后调用的时候就不需要通过ip来调用,直接通过服务名即可. 服务提供者 pom.xml配置,需要spring-cloud-starter- ...
- SpringCloud第二代实战系列:一文搞定Nacos实现服务注册与发现
一.背景:SpringCloud 生态圈 在正式开始本篇文章之前我们先岔开来讲一下SpringCloud的生态圈. SpringCloud大家都比较熟悉了,它制定了分布式系统的标准规范,做了高度抽象和 ...
- spring boot2X整合Consul一服务注册与发现
Consul 是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置. 关键特性: 服务注册/发现 数据强一致性保证 多数据中心 健康检查 key/value存储 1.下载 htt ...
- 用Nacos做微服务架构里的服务注册与发现中心
转自:https://www.jianshu.com/p/61608ff86344 Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服 ...
- 🏆【Alibaba中间件技术系列】「Nacos技术专题」服务注册与发现相关的原理分析
背景介绍 前几篇文章介绍了Nacos配置中心服务的能力机制,接下来,我们来介绍Nacos另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常 ...
- 2021升级版微服务教程4—Nacos 服务注册和发现
2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 默认文件1610014380163 教程全目录「含视 ...
- Spring Cloud Alibaba Nacos 服务注册与发现功能实现!
Nacos 是 Spring Cloud Alibaba 中一个重要的组成部分,它提供了两个重要的功能:服务注册与发现和统一的配置中心功能. 服务注册与发现功能解决了微服务集群中,调用者和服务提供者连 ...
- Spring Cloud Alibaba | Nacos服务注册与发现
目录 Spring Cloud Alibaba | Nacos服务注册与发现 1. 服务提供者 1.1 pom.xml项目依赖 1.2 配置文件application.yml 1.3 启动类Produ ...
随机推荐
- Azure 实践(1)- Azure Devops Server 安装
1.Azure Devops介绍 Azure DevOps Server 2020 (之前的名称为TFS),作为微软Azure DevOps 的企业私有(on-premises)服务器,是一个为开发团 ...
- Convert a Private Project on bitbucket.com to a github Public Project
Create a public repo on github, you can add README or License files on the master branch, suppose th ...
- Mybatis源码解析2—— 实例搭建
大家好,我是可乐. 上篇文章给大家撸了一遍用 JDBC 直接操作数据库的实例,还只是简单写了一个查询的接口,其代码量就已经很大了,并且可乐还给大家分析了直接使用 JDBC 带来的一些问题,总之是一种反 ...
- 当Transactional碰到锁,有个大坑,要小心。
你好呀,我是why. 前几天在某平台看到一个技术问题,很有意思啊. 涉及到的两个技术点,大家平时开发使用的也比较多,但是属于一个小细节,深挖下去,还是有点意思的. 来,先带你看一下问题是什么,同时给你 ...
- 进程之间的通信(multiprocess.Queue)
一.进程间通信 进程之间的数据是相互隔离的,例如 from multiprocessing import Process def task(): global n # 声明全局变量 n = 999 p ...
- C++类的构造函数后面加一个冒号的含义
最近在看侯捷老师讲解的C++知识,他讲到在构造函数加一个冒号初始化值的方法,会使代码更大气,在此记录一下使用方法 构造函数冒号后的初始化class complex{public: complex(do ...
- Qt MDI及其使用方法(详解版)
统的应用程序设计中有多文档界面(Multi-document Interface,MDI)应用程序,Qt 为设计 MDI 应用程序提供了支持. 本节的实例 samp6_4 是一个 MDI 应用程序,程 ...
- js中使用function定义类、实例化,函数的调用方法
function Test002(name, age){ name, age, this.printInfo = function(){ //定义的公有方法 console.log(name, age ...
- 【spring】69道Spring面试题和答案
原文地址:http://ifeve.com/spring-interview-questions-and-answers/ 目录 Spring 概述 依赖注入 Spring beans Spring注 ...
- linux 下的用户的管理