当前位置 博文首页 > RtxTitanV的博客:SpringCloudAlibaba 服务注册发现与注册中心Na
本文主要对SpringCloudAlibaba组件Nacos实现服务注册发现和作为配置中心使用进行简单总结,其中SpringBoot使用的2.4.5
版本,SpringCloud使用的2020.0.2
版本,SpringCloudAlibaba使用的2021.1
版本。
Spring Cloud Alibaba为分布式应用开发提供了一个一站式解决方案。它包含了开发分布式应用服务的必需组件,使开发者能轻松使用Spring Cloud进行分布式应用服务开发。通过Spring Cloud Alibaba,只需添加一些注解和少量配置,就可以将Spring Cloud应用接入阿里分布式应用解决方案,并通过阿里中间件来迅速搭建分布式应用系统。
Spring Cloud Alibaba常用组件:
Nacos致力于发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,用于快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos使地构建、交付和管理微服务平台变得更容易。 Nacos是构建以“服务”为中心的现代应用架构的服务基础设施。
Nacos关键特性:
Nacos依赖Java环境来运行。如果是从代码开始构建并运行Nacos,还需要为此配置Maven环境,请确保是在以下版本环境中安装使用:
从Github上下载源码方式:
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
从最新稳定版本下载编译后压缩包nacos-server-$version.zip
的方式:
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果使用的是ubuntu系统,或者运行脚本报错提示[[
符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
Nacos下载的2.0.1版本,在Windows运行成功后,可以访问http://localhost:8848/nacos查看Nacos的管理页面,默认账号密码都是nacos:
Linux/Unix/Mac关闭命令:
sh shutdown.sh
Windows关闭命令:
shutdown.cmd
或者双击shutdown.cmd
运行文件。
通过maven新建一个名为spring-cloud-alibaba-nacos-discovery-provider
的项目作为服务提供者(服务生产者),一个名为spring-cloud-alibaba-nacos-discovery-consumer
的项目作为服务消费者。
编写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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.rtxtitanv</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery-provider</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>spring-cloud-alibaba-nacos-discovery-provider</name>
<description>nacos discovery provider</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-boot.version>2.4.5</spring-boot.version>
<spring-cloud.version>2020.0.2</spring-cloud.version>
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- SpringBoot 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud 依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloudAlibaba 依赖 -->
<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>
<dependencies>
<!-- Spring Cloud Alibaba Nacos Discovery 服务发现起步依赖 -->
<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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Nacos Discovery Starter可以将服务自动注册到Nacos服务端并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery Starter也将服务实例自身的一些元数据信息-例如host,port,健康检查URL,主页等-注册到Nacos。
主启动类:
package com.rtxtitanv;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @author rtxtitanv
* @version 1.0.0
* @name com.rtxtitanv.NacosDiscoveryProviderApplication
* @description 主启动类
* @date 2021/4/30 17:57
*/
@SpringBootApplication
@EnableDiscoveryClient
public class NacosDiscoveryProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDiscoveryProviderApplication.class, args);
}
}
@EnableDiscoveryClient
:开启SpringCloud服务注册于发现
编写配置文件,在application.yml
中进行如下配置:
server:
port: ${PORT:8090}
spring:
application:
name: nacos-discovery-provider
cloud:
nacos:
discovery:
# nacos服务器地址
server-addr: 127.0.0.1:8848
如果不想使用Nacos实现服务注册与发现,可以将
spring.cloud.nacos.discovery.enabled
设置为false
。
创建测试用的Controller:
package com.rtxtitanv.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author rtxtitanv
* @version 1.0.0
* @name com.rtxtitanv.controller.ProviderController
* @description ProviderController
* @date 2021/4/30 18:01
*/
@RestController
public class ProviderController {
@Value("${server.port}")
private String port;
@Value("${spring.cloud.client.ip-address}")
private String ip;
@GetMapping("/home")
public String home