云原生微服务实战 Spring Cloud Alibaba 之 Nacos

这篇具有很好参考价值的文章主要介绍了云原生微服务实战 Spring Cloud Alibaba 之 Nacos。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

第一章 Java线程池技术应用
第二章 CountDownLatch和Semaphone的应用
第三章 Spring Cloud 简介
第四章 Spring Cloud Netflix 之 Eureka
第五章 Spring Cloud Netflix 之 Ribbon
第六章 Spring Cloud 之 OpenFeign
第七章 Spring Cloud 之 GateWay
第八章 Spring Cloud Netflix 之 Hystrix
第九章 代码管理gitlab 使用
第十章 SpringCloud Alibaba 之 Nacos discovery

云原生微服务实战 Spring Cloud Alibaba 之 Nacos,Java微服务,微服务,架构,云原生,Nacos discovery,服务发现,服务注册,SpringC Alibaba,1024程序员节


前言

Nacos 英文全称为 Dynamic Naming and Configuration Service,它是一个开源的、易于使用的、功能强大的配置和发现管理系统,由阿里巴巴团队使用 Java 语言开发的开源项目。Nacos 为微服务架构提供了一种简单、灵活、动态的配置管理方案,可以支持大规模的分布式系统和云原生应用。它旨在提供动态服务发现、配置管理和服务管理等功能,帮助开发者构建易于扩展、动态适应的分布式系统。

1、Nacos 的命名是由 3 部分组成

组成部分 全称 描述
Na naming/nameServer 即服务注册中心,与 Spring Cloud Eureka 的功能类似。
co configuration 即配置中心,与 Spring Cloud Config+Spring Cloud Bus 的功能类似。
s service 即服务,表示 Nacos 实现的服务注册中心和配置中心都是以服务为核心的。

1.1、技术升级和替换

前几章节我们介绍了Spring Cloud Netflix套件,今天开始我们升级成使用Spring Cloud Alibaba。
Spring Cloud Alibaba 的 Nacos discovery,会替换掉Spring Cloud Netflix 的 Eureka。
云原生微服务实战 Spring Cloud Alibaba 之 Nacos,Java微服务,微服务,架构,云原生,Nacos discovery,服务发现,服务注册,SpringC Alibaba,1024程序员节

1.2、系统架构图

整个电商微服务架构,选用Spring Cloud Alibaba套件,包括:

  • 熔断限流(Spring Cloud Alibaba Sentinel)
  • 微服务注册中心(Nacos Discovery)
  • 微服务配置(Nacos Discovery Config)
  • 微服务调用(Nacos Discovery)

再加上Spring Cloud组件:

  • 负载均衡(openFeign)
  • 网关(Gateway)

以及:

  • 分库分表(Apache ShardingSphere-JDBC)
  • 缓存集群(Redis主从)

云原生微服务实战 Spring Cloud Alibaba 之 Nacos,Java微服务,微服务,架构,云原生,Nacos discovery,服务发现,服务注册,SpringC Alibaba,1024程序员节

2、Nacos两大组件

组件 描述 功能
Nacos Server Nacos 服务端,与 Eureka Server 不同,Nacos Server 由阿里巴巴团队使用 Java 语言编写并将 Nacos Server 的下载地址给用户,用户只需要直接下载并运行即可。 Nacos Server 可以作为服务注册中心,帮助 Nacos Client 实现服务的注册与发现。
Nacos Server 可以作为配置中心,帮助 Nacos Client 在不重启的情况下,实现配置的动态刷新。
Nacos Client Nacos 客户端,通常指的是微服务架构中的各个服务,由用户自己搭建,可以使用多种语言编写。 Nacos Client 通过添加依赖 spring-cloud-starter-alibaba-nacos-discovery,在服务注册中心(Nacos Server)中实现服务的注册与发现。
Nacos Client 通过添加依赖 spring-cloud-starter-alibaba-nacos-config,在配置中心(Nacos Server)中实现配置的动态刷新。

云原生微服务实战 Spring Cloud Alibaba 之 Nacos,Java微服务,微服务,架构,云原生,Nacos discovery,服务发现,服务注册,SpringC Alibaba,1024程序员节

3、Nacos 实现服务注册与发现的流程如下:

3.1、下载软件

从 Nacos 官方提供的下载页面中,下载 Nacos Server 并运行。

3.2、服务提供者

Nacos Client 启动时,会把服务以服务名(spring.application.name)的方式注册到服务注册中心(Nacos Server)

3.3、 服务消费者

  • Nacos Client 启动时,也会将自己的服务注册到服务注册中心;
  • 服务消费者在注册服务的同时,它还会从服务注册中心获取一份服务注册列表信息,该列表中包含了所有注册到服务注册中心上的服务的信息(包括服务提供者和自身的信息);
  • 在获取了服务提供者的信息后,服务消费者通过 HTTP 或消息中间件远程调用服务提供者提供的服务。

4、实战应用

4.1、版本兼容说明

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

4.2、Nacos server安装

下载:
https://github.com/alibaba/nacos/releases/tag/2.0.4
云原生微服务实战 Spring Cloud Alibaba 之 Nacos,Java微服务,微服务,架构,云原生,Nacos discovery,服务发现,服务注册,SpringC Alibaba,1024程序员节

4.3、启动nacos

Nacos Server 下各目录说明如下:

  • bin:用于存放 Nacos 的可执行命令。
  • conf:用于存放 Nacos 配置文件。
  • target:用于存放 Nacos 应用的 jar 包。
    进入bin目录,执行启动命令:startup.cmd -m standalone
    http://localhost:8848/nacos
    用户名/密码:nacos/nacos

4.4、工程改造

4.4.1、父pom改造

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>2021.0.5</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--spring cloud alibaba 依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2021.0.4.0</version>
		<type>pom</type>
    <scope>import</scope>
</dependency>

4.4.2、服务提供者改造

  • 添加依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2021.0.4.0</version>
</dependency>

  • 添加配置
spring:
  application:
    name: app-provider-service #服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  • 启动类加注解
    @EnableDiscoveryClient
    启动应用,查看nacos后台

4.4.3、服务消费者改造

  • 添加依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2021.0.4.0</version>
</dependency>
  • 添加配置
spring:
  application:
    name: app-api-service #服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #Nacos server 的地址
  • 启动类添加注解
    @EnableDiscoveryClient

4.4.4、 Config配置

创建config文件夹,在下面添加LoadBalancedConfig配置

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class LoadBalancedConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

4.4.5、调用者实例

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Map;

@RestController
@RequestMapping("/user")
public class UserController {

    private final static String SERVER_URL = "http://localhost:8080";
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/getUserName")
    public Map getUserName() {
        String url = SERVER_URL + "/user/getUserName";
        Map map = restTemplate.getForObject(url , Map.class);
        map.put("type" , "caller");
        return map;
    }

}

5、集成openFeign

5.1、修改调用方配置文件

5.1.1、增加springcloud依赖

<dependencyManagement>
    <dependencies>
        <!--spring cloud 依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--spring cloud alibaba 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2021.0.4.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

5.1.2、增加openFeign依赖项

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

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

    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-loadbalancer -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
</dependencies>

5.2、调用方代码改造

5.2.1、在启动类增加openFeign配置

@EnableFeignClients

5.2.2、新增服务层接口:UserService

import com.xxx.common.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient(name = "app-provider-service")
public interface UserService {
    @GetMapping("/user/getUserName")
    public User getUserName() ;
}

5.2.3、改造控制层方法:

@Autowired
private UserService userService;

@GetMapping("/getUserName")
public Map getUserName() {
    User user = userService.getUserName();
    Map map = new HashMap();
    map.put("code" , 200);
    map.put("data" , user);
    map.put("type" , "caller");
    return map;
}

总结

云原生微服务治理有很多手段,但在Java生态里,最主流的还是Spring Cloud Alibaba 、Spring Cloud Netflix。
Spring Cloud文章的前部分已经把Spring Cloud Netflix相关组件讲解且实践过了,这章我们讲解了Spring Cloud Alibaba的Nacos discovery,后续还会继续讲解完Spring Cloud Alibaba其他组件。文章来源地址https://www.toymoban.com/news/detail-713647.html

到了这里,关于云原生微服务实战 Spring Cloud Alibaba 之 Nacos的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud Alibaba--Nacos服务注册和配置中心

    Nacos 是Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos的特性,官网解释如下: 服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Age

    2024年02月05日
    浏览(39)
  • 【springcloud 微服务】Spring Cloud Alibaba Nacos使用详解

    目录 一、前言 二、nacos介绍 2.1  什么是 Nacos 2.2 nacos 核心能力 2.2.1 服务发现和服务健康监测

    2024年01月22日
    浏览(41)
  • 【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)

    我们要搭建一个 Spring Cloud Alibaba 项目就绕不开 Nacos ,阿里巴巴提供的 Nacos 组件,可以提供服务注册与发现和分布式配置服务,拥有着淘宝双十一十几年的流量经验,还是非常的可靠的。 Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环

    2024年01月23日
    浏览(40)
  • day10-Spring Cloud Alibaba Nacos-服务注册与配置中心

    官网:https://github.com/alibaba/nacos,Nacos官方中文手册 Nacos:Spring Cloud Alibaba服务注册与配置中心(非常详细) (biancheng.net) Spring Cloud Alibaba系列-一文读懂Nacos原理 - 掘金 (juejin.cn) Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服

    2024年02月08日
    浏览(36)
  • Spring Cloud Alibaba-02-Nacos Discovery服务治理及负载均衡

    Lison dreamlison@163.com , v1.0.0 , 2023.05.10 先来思考一个问题 通过上一章的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 (ip,端口)等硬编码到了代码中,这种做法存在许多问题: 一旦服务提供者地址变化,就需要手工修改代码 一旦是多个服务提供

    2024年02月22日
    浏览(35)
  • SpringCloudAlibaba微服务实战系列(一)Nacos服务注册发现

    实战前先做一个背景了解。 单体架构:近几年技术的飞速发展,各种各样的服务已经进入到网络化。单体架构发布时只需要打成一个war或jar包发布即可;而随着业务量激增或网站流量的增加,必会暴露致命缺陷。 SOA:Service Oriented Architecture 面向服务的体系结构。旨在提升代

    2024年02月15日
    浏览(27)
  • Spring Cloud Alibaba 微服务部署

    一、安装jdk环境(1.8) 1、以Linux系统部署为主,我这边用的系统是ubuntu。 2、准备好一个JDK的压缩包,可以去官网下载,常用版本JDK8 3、将压缩包可以存放于 /opt 或者 /usr/local 目录下,然后进行解压,如果是.zip压缩文件,可以使用unzip 命令来解压缩。 4、配置环境变量 5、重

    2024年02月05日
    浏览(28)
  • 从0到1搭建spring cloud alibaba +springboot+nacos+dubbo微服务

      由以上版本对应关系:         springboot版本:2.3.2.RELEASE         spring cloud 版本选择:Hoxton.SR9         spring cloud alibaba版本选择:2.2.6.RELEASE 父工程的父工程:()  版本依赖关系:            其他业务模块依赖: 使用nacos做配置中心和注册中心+dubbo做RPC调用 配置文

    2024年02月11日
    浏览(28)
  • Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心

    🏆作者简介: 哪吒 ,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 , 专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于 Java基础教程系列(进阶篇) ,本专栏是针对大学生、初级Java工程师精心打造, 针对Java生态,逐个击破,

    2024年02月02日
    浏览(37)
  • Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一)

       目录 Spring Cloud Alibaba简介 Spring Cloud Alibaba版本与兼容性   分布式服务治理_什么是Nacos 分布式服务治理_Nacos Server下载安装   分布式服务治理_Docker安装Nacos Server服务 分布式服务治理_微服务聚合父工程构建  什么是Spring Cloud Alibaba Spring Cloud Alibaba致力于提供微服务开发的

    2024年02月17日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包