Nacos 服务发现 快速入门

15 篇文章 0 订阅
3 篇文章 0 订阅

Nacos 服务发现 快速入门

一、Nacos 服务发现 – 什么是服务发现 ?

1、 Nacos 服务发现-什么是服务发现

在微服务架构中,整个系统会按职责能力划分为多个服务,通过服务之间协作来实现业务目标。
这样在我们的代码中免不了要进行服务间的远程调用,服务的消费方要调用服务的生产方,
为了完成一次请求,消费方需要知道服务生产方的网络位置(IP地址和端口号)。

2、目前市面上用的比较多的服务发现中心有:

Nacos, Eureka, Consul, Zookeeper 

3、nacos 简介:

<a name="anchor1-3"></a>

nacos 是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。

4、nacos 特性:

<a name="anchor1-4"></a>

1)服务发现与服务健康检查。
2)动态配置管理。
3)动态 DNS 服务。
4)服务和元数据管理。

二、Nacos 服务发现–快速入门–SpringCloud 服务协作流程

1 、spring cloud 常见的集成方式是:

使用 Feign + Ribbon 技术来完成服务间远程调用及负载均衡的。

2 、负载均衡:

负载均衡就是将用户请求(流量)通过一定的策略,分摊到多个服务实例上执行,
它是系统处理高并发、缓解网络压力和进行服务端扩容的重要手段之一。

1)服务端负载均衡:如:Nginx 
2)客户端负载均衡:如:Ribbon

3、Feign 介绍:

Feign 是 Netflix 开发的声明式、模板化的 HTTP 客户端,Feign 可以帮助我们更快捷、优雅地调用 HTTP API.

Feign 的英文表意为“假装、伪装、变形”,可以理解为将 HTTP 报文请求方式伪装为简单的 java 接口调用方式。

三、Nacos 服务发现–快速入门–服务生产者

1、 搭建 nacos 服务端

下载解压安装 nacos-1.1.3,并启动独立服务 startup.cmd -m standalone

在这里插入图片描述

2、打开 idea 创建一个父 Maven 工程 nacos_discovery 工程,为了规范依赖的版本。创建两个子模块( 服务提供者模块 provider, 服务消费者模块 consumer )。

–> idea
–> File
–> New Project
–> Maven
–> Groupld : ( djh.it )
Artifactld : ( nacos_discovery )
Version : 1.0-SNAPSHOT
–> Next
–> Project name: ( nacos_discovery )
Project location: ( C:\java-test\idea2019\nacos_discovery )
–> Finish

(父工程不编写代码,可以删除 src 目录)

3、 在 父工程的 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>djh.it</groupId>
		<artifactId>nacos_discovery</artifactId>
		<version>1.0-SNAPSHOT</version>

		<packaging>pom</packaging>

		<properties>
			<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
			<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
			<java.version>1.8</java.version>
		</properties>

		<dependencyManagement>
			<dependencies>
				<dependency>
					<groupId>com.alibaba.cloud</groupId>
					<artifactId>spring-cloud-alibaba-dependencies</artifactId>
					<version>2.1.0.RELEASE</version>
					<type>pom</type>
					<scope>import</scope>
				</dependency>
				<dependency>
					<groupId>org.springframework.cloud</groupId>
					<artifactId>spring-cloud-dependencies</artifactId>
					<version>Greenwich.RELEASE</version>
					<type>pom</type>
					<scope>import</scope>
				</dependency>
				<dependency>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-dependencies</artifactId>
					<version>2.1.3.RELEASE</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>

	<!-- C:\java-test\idea2019\nacos_discovery\pom.xml -->	

4、 新增 quickstart_provider, quickstart_consumer 子工程(子模块),

创建两个子模块:

--> 右键 nacos_discovery 父工程
--> Modules 
--> Maven 
--> Groupld : ( djh.it )
	Artifactld : ( quickstart_provider )
	Version : 1.0-SNAPSHOT
--> Next 
--> Module name: ( quickstart_provider )
	Content root : (  C:\java-test\idea2019\nacos_discovery\quickstart_provider )
	Module file location: (  C:\java-test\idea2019\nacos_discovery\quickstart_provider )
--> Finish

--> 右键 nacos_discovery 父工程
--> Modules 
--> Maven 
--> Groupld : ( djh.it )
	Artifactld : ( quickstart_consumer )
	Version : 1.0-SNAPSHOT
--> Next 
--> Module name: ( service1 )
	Content root : ( C:\java-test\idea2019\nacos_discovery\quickstart_consumer )
	Module file location: ( C:\java-test\idea2019\nacos_discovery\quickstart_consumer )
--> Finish

5、在子工程 quickstart_provider, quickstart_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">
    <parent>
        <artifactId>nacos_discovery</artifactId>
        <groupId>djh.it</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>quickstart_provider</artifactId>

    <dependencies>

        <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>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

    </dependencies>

</project>

<!-- C:\java-test\idea2019\nacos_discovery\quickstart_provider\pom.xml -->


6、创建 配置文件 application.yml

## C:\java-test\idea2019\nacos_discovery\quickstart_provider\src\main\resources\application.yml

server:
  port: 56010  # 启动端口

spring:
  application:
    name: quickstart_provider
  cloud:
    nacos:
      # config:  # 表示配置管理
      discovery:  # 表示服务发现
        server-addr: 127.0.0.1:8849
logging:
  level:
    root: info
    org.springframework: info

7、在 服务提供者模块 quickstart_provider 子工程中,编写 Controller

创建 ProviderController.java 类。

/**
 *  C:\java-test\idea2019\nacos_discovery\quickstart_provider\src\main\java\djh\it\nacos\controller\ProviderController.java
 *
 *  2024-4-3 服务提供者 provider Controller
 */

package djh.it.nacos.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProviderController {

    private static final Logger LOG = LoggerFactory.getLogger(ProviderController.class);

    @GetMapping("/service")
    public String service(){
        LOG.info("provider invoke");
        return "provider invoke";
    }
}

8、在 服务提供者模块 quickstart_provider 子工程中,创建启动类 NacosProviderApp.java。

/**
 *  C:\java-test\idea2019\nacos_discovery\quickstart_provider\src\main\java\djh\it\nacos\NacosProviderApp.java
 *
 *  2024-4-3 服务提供者 启动类 NacosProviderApp.java
 */

package djh.it.nacos;

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

@SpringBootApplication
@EnableDiscoveryClient  //引入服务发现客户端
@EnableFeignClients  //引入远程调用客户端
public class NacosProviderApp {
    public static void main(String[] args) {
        SpringApplication.run(NacosProviderApp.class, args);
    }
}

9、浏览器地址栏输入:http://127.0.0.1:8848/nacos/

点击 【服务管理】–> 【服务列表】
会发现如下界面:

在这里插入图片描述

在这里插入图片描述

相关链接:【Nacos 配置管理:Nacos 下载,安装 Nacos Server】点击下列链接
Nacos 下载,安装 Nacos Server

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Nacos服务发现消费的过程主要涉及到以下几个部分。首先,在Spring Cloud应用的配置文件中,需要设置Nacos的相关配置,包括Nacos Server的地址。其次,Nacos服务发现的核心代码是通过NacosDiscoveryClient类实现的。该类通过调用NacosServiceDiscovery的getInstances方法获取服务实例列表,并通过getServices方法获取服务列表。最后,当微服务需要调用其他微服务时,可以利用Nacos服务发现功能,通过NacosDiscoveryClient获取需要调用的服务实例列表,并进行负载均衡,实现微服务之间的相互调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Nacos 服务发现](https://blog.csdn.net/SUMMERENT/article/details/123003288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Nacos服务发现与注册中心之服务消费(发现)者(客户端源码)](https://blog.csdn.net/zmjmvp/article/details/126028247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [SpringCloud:nacos配置中心+nacos服务发现个人总结](https://blog.csdn.net/tiexiaorenyu/article/details/125495946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

段子手-168

你的鼓励将是我你的创作最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值