# Spring Cloud Alibaba Nacos_配置中心与服务发现(五)-- Nacos 服务发现 -- 快速入门(1)

Spring Cloud Alibaba Nacos_配置中心与服务发现(五)-- Nacos 服务发现 – 快速入门(1)

一、Nacos 服务发现-内容介绍

1.1 nacos 服务发现 概览

1)从单体架构到微服务
2)什么是服务发现。
3)主流服务发现与配置中心对比。
4)nacos 简介。
5)nacos 特性。

1.2 nacos 服务发现快速入门

1)spring cloud 服务协作流程。
2)搭建 nacos 服务端。
3)创建父工程。
4)服务生产者。
5)服务消费者。

1.3 nacos 服务发现基础应用

1)服务发现数据模型。
2)服务管理。

1.4 spring cloud alibaba 综合集成架构演示

1)总体结构。
2)创建父工程。
3)实现 application1
4)实现 service1 
5)实现 application1 调用 service1。
6)实现 service2

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

  nacos-server-1.png    述

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-server-2.png

   nacos-server-3.png

上一节关联链接请点击
# Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
相关链接:【Nacos 配置管理:Nacos 下载,安装 Nacos Server】点击下列链接
Nacos 下载,安装 Nacos Server

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

段子手-168

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

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

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

打赏作者

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

抵扣说明:

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

余额充值