Nacos 服务发现 快速入门

news2024/11/18 6:24:37

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/

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

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1567622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[HackMyVM]靶场Zurrak

难度:medium kali:192.168.56.104 靶机:192.168.56.140 端口扫描 # nmap -sV -A 192.168.56.140 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-30 16:59 CST Nmap scan report for 192.168.56.140 Host is up (0.00039s latency). Not shown: 996 closed tcp po…

三相异步发电机在两相坐标系下的数学模型和状态方程

目录 1、异步发电机在两相静止坐标系下的数学模型 &#xff08;1&#xff09;磁链方程&#xff1a; &#xff08;2&#xff09;电压方程 &#xff08;3&#xff09;转矩方程 &#xff08;4&#xff09;异步电动机在两相静止坐标系&#xff08; &#xff09;上的数学模型 2、…

AcWing---转圈游戏---快速幂

太久没写快速幂了... 这是一道数学题orz&#xff0c;能看出来的话答案就是 &#xff0c;但是很大&#xff0c;同时还要mod n&#xff0c;直接用快速幂即可。 快速幂模版&#xff1a; long long int power(long long int a,long long int b,long long int mod){long long int r…

YUNBEE云贝-技术分享:PostgreSQL分区表

引言 PostgreSQL作为一款高度可扩展的企业级关系型数据库管理系统&#xff0c;其内置的分区表功能在处理大规模数据场景中扮演着重要角色。本文将深入探讨PostgreSQL分区表的实现逻辑、详细实验过程&#xff0c;并辅以分区表相关的视图查询、分区表维护及优化案例&#xff0c;…

基于深度学习的番茄成熟度检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;在本博客中&#xff0c;我们深入探讨了基于YOLOv8/v7/v6/v5的番茄成熟度检测系统。核心技术基于YOLOv8&#xff0c;同时融合了YOLOv7、YOLOv6、YOLOv5的算法&#xff0c;对比了它们在性能指标上的差异。本文详细介绍了国内外在此领域的研究现状、数据集的处理方…

OpenHarmony实战:轻量级系统之移植验证

OpenHarmony芯片移植完成后&#xff0c;需要开展OpenHarmony兼容性测试以及芯片SDK功能性测试。除可获得测试认证之外&#xff0c;还可以在开发阶段提前发现缺陷&#xff0c;大幅提高代码质量。 OpenHarmony兼容性测试 OpenHarmony兼容性测试是XTS&#xff08;OpenHarmony生态…

基于深度学习的植物叶片病毒识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5的植物叶片病毒识别系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Strea…

手搓链表(java)(不完整)

手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09; 文章目录 手搓链表&#xff08;java&#xff09;&#xff08;不完整&#xff09;前言一、代码1.MyLinkedList类&#xff1a;2.测试类&#xff1a; 总结 前言 提示&#xff1a;以下是本篇文章正文内容&…

精品PPT-2023年无人驾驶汽车车联网网络安全方案

以下是部分PPT内容&#xff0c;请您参阅。如需下载完整PPTX文件&#xff0c;请前往星球获取&#xff1a; 无人驾驶安全架构是一个复杂的系统&#xff0c;它涉及到多个关键组件和层次&#xff0c;以确保无人驾驶车辆在各种情况下都能安全、可靠地运行。以下是一些主要的无人驾驶…

苹果手表Apple Watch录了两个半小时的录音,却只能播放4秒,同步到手机也一样,还能修复好吗?

好多人遇到这个情况&#xff0c;用苹果手表Apple Watch录音&#xff0c;有的录1个多小时&#xff0c;有的录了3、4小时&#xff0c;甚至更长时间&#xff0c;因为手表没电&#xff0c;忘记保存等原因造成录音损坏&#xff0c;都是只能播放4秒&#xff0c;同步到手机也一样&…

AI绘图:Stable Diffusion ComfyUI局部重绘与智能扩图全面教程

前言 在数字艺术创作中&#xff0c;局部重绘和智能扩图是两个非常重要的功能。局部重绘允许我们在保留原有图像的基础上&#xff0c;对特定区域进行修改或创新。而智能扩图则能够帮助我们在图像的边缘添加新的元素&#xff0c;从而扩展图像的内容。本文将详细介绍如何在Stable…

鼎捷T100二次开发资料大全 T100 webservice开发明细 4GL从入门到实战 T100实战例子 鼎捷二次开发DEMO 鼎捷单档双档开发

在ERP实施公司做顾问四五年&#xff0c;参与企业实施ERP十多个项目&#xff0c;熟悉企业ERP流程&#xff0c;在实施过程遇到众多问题&#xff0c;提出了不少根据企业具体情况的解决方案。   曾经参与鼎捷Tiptop GP、T100实施十多个项目&#xff0c;具有丰富的二次开发经验&am…

代码随想录算法训练营DAY16|C++二叉树Part.3|104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

文章目录 104.二叉树的最大深度思路伪代码CPP代码 111.二叉树的最小深度思路伪代码CPP代码 222.完全二叉树的节点个数思路视为普通二叉树-递归视为普通二叉树-迭代利用完全二叉树特性-递归 伪代码视为普通二叉树-递归伪代码视为普通二叉树-迭代伪代码利用完全二叉树特性-递归伪…

SCP 从Linux快速下载文件到Windows本地

需求&#xff1a;通过mobaxterm将大文件拖动到windows本地速度太慢。 环境&#xff1a;本地是Windows&#xff0c;安装了Git。 操作&#xff1a;进入文件夹内&#xff0c;鼠标右键&#xff0c;点击Git Bash here&#xff0c;然后输入命令即可。这样的话&#xff0c;其实自己本…

维基百科推广方法及注意事项解析-华媒舍

1. 维基百科 维基百科是一个自由而开放的在线百科全书&#xff0c;由志愿者共同创建和编辑。它是全球最大的百科全书&#xff0c;包含了广泛的主题和知识。作为一个公共平台&#xff0c;维基百科是广告和宣传的禁区&#xff0c;但它可以是一个有效的推广工具&#xff0c;帮助您…

修改element-ui table组件展开/收起图标、支持点击行展开/收起、隐藏不可展开行得图标

Element中table默认支持的&#xff0c;展开和收起功能&#xff0c;如下&#xff1a; 针对表格的展开收起&#xff0c;本文改造的主要有3点&#xff1a; 1、修改展开/收起的图标&#xff1b; 2、对于不支持展开/收起的行&#xff0c;隐藏图标&#xff1b; 3、点击行&#xff0…

【Clang+LLVM+honggfuzz学习】(二)honggfuzz的安装与试用

书接上篇【ClangLLVMhonggfuzz学习】&#xff08;一&#xff09;LLVM简介、安装和第一个Hello Pass 本篇介绍honggfuzz的安装与简单使用 本文架构&#xff0c;PS:可选择观看哦 前言git安装试用编写测试文件demo.c设置环境变量开始fuzzFuzz-ing疑问 前言 漏洞检测做毕设&#…

mac/win使用pyinstaller打包app/exe文件,活着执行脚本,双击运行

&#x1f338; 踩坑记录 python环境最好使用虚拟环境&#xff0c;推荐使用conda管理&#xff0c;并且若本地有python环境&#xff0c;不要使用和 本地环境版本 相同的虚拟环境 这里踩坑较多&#xff0c;已经记不清楚注意点 虚拟环境python版本不要和本地环境一样 mac/win只能…

【Linux】从零认识文件操作

送给大家一句话&#xff1a; 要相信&#xff0c;所有的不美好都是为了迎接美好&#xff0c;所有的困难都会为努力让道。 —— 简蔓《巧克力色微凉青春》 开始理解基础 IO 吧&#xff01; 1 前言2 知识回顾3 理解文件3.1 进程和文件的关系3.2 文件的系统调用openwrite文件 fd 值…

问题解决:写CSDN博文时图片大小不适应,不清晰,没法排版

项目环境&#xff1a; Window10&#xff0c;Edge123.0.2420.65 问题描述&#xff1a; 当我在CSDN写博文的时候&#xff0c;会经常插入一些图片&#xff0c;但有时候我插入的图片太大了&#xff0c;影响了整体排版。 比如我加入了一张图片&#xff0c;就变成了下面这个样子&…