Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现

Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现

文章目录

  • Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现
  • 前言
  • 一、什么是Nacos?
  • 二、 Nacos架构部分会详细介绍。
    • 1.架构图
    • 2.Nacos 生态图
  • 二、SpringCloud 整合 Nacos架构实现服务注册
    • 1.创建Nacos配置服务
    • 2.创建provide:服务提供者
    • 3.创建consumer:服务消费者
    • 4.测试启动项目
      • 1、启动成功后,在日志中应该可以看到如下两条信息
      • 2、登录Nacos控制台查看服务
      • 3、发送请求调用服务提供者
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是Nacos?

欢迎来到 Nacos 的世界!
1、Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
2、Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
3、如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如
3.1、Spring Cloud
3.2、Apache Dubbo and Dubbo Mesh
3.3、Kubernetes and CNCF。
nacos-provide:服务提供者
nacos-consumer:服务消费者

二、 Nacos架构部分会详细介绍。

Nacos官方网站 : https://nacos.io/zh-cn/docs/what-is-nacos.html

1.架构图

Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现_第1张图片
特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求
架构大图:通过清晰架构,让您快速进入 Nacos 世界
业务大图:利用当前特性可以支持的业务场景,及其最佳实践
生态大图:系统梳理 Nacos 和主流技术生态的关系
优势大图:展示 Nacos 核心竞争力
战略大图:要从战略到战术层面讲 Nacos 的宏观优势

2.Nacos 生态图

Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现_第2张图片
如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如
Spring Cloud
Apache Dubbo and Dubbo Mesh
Kubernetes and CNCF。
使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。

关于如何在这些生态中使用 Nacos,请参考以下文档:(重点哦,拿小本本记住)

Nacos与Spring Cloud一起使用
Nacos与Kubernetes一起使用
Nacos与Dubbo一起使用
Nacos与gRPC一起使用
Nacos与Istio一起使用
(以上信息均来自官网文档)
下载地址: https://github.com/alibaba/nacos/releases

下载解压后进入bin文件夹(目录:nacos\bin),直接双击执行startup.cmd文件,启动成功如下图:

二、SpringCloud 整合 Nacos架构实现服务注册

1.创建Nacos配置服务

IDEA中创建聚合工程Nacos作为父工程,其pom.xml如下(重点关注dependencyManagement配置):

2.创建provide:服务提供者

1、创建启动类ProvideController,服务的请求入口 ,并添加注解@EnableDiscoveryClient 开启服务注册发现功能:

@RestController
@EnableDiscoveryClient
@SpringBootApplication
public class ProvideController {

    public static void main(String[] args) {
        SpringApplication.run(NProvideController .class, args);
    }

    @GetMapping("/helloNacos")
    public String helloNacos(){
        return "这是服务提供方,nacos!,小新新最帅";
    }
}

2、资源文件信息Resource中application.yml文件配置

server:
  port: 9527

spring:
  application:
    name: provide

  cloud:
    nacos:
      discovery:
        server-addr: 10.16.10.166

3、pom.xml配置文件信息


<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.0modelVersion>
    <parent>
        <artifactId>NacosartifactId>
        <groupId>com.zhx.zhxyydsgroupId>
        <version>0.0.1-SNAPSHOTversion>
    parent>

    <groupId>com.zhx.zhxyydsgroupId>
    <artifactId>provideartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>providename>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-autoconfigureartifactId>
            <version>2.3.0.RELEASEversion>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

3.创建consumer:服务消费者

1、在Nacos工程下创建一个SpringBoot项目子工程命名为consumer。创建启动类ConsumerController.java 并添加注解@EnableDiscoveryClient 开启服务注册发现功能

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ConsumerController {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerController.class, args);
    }
    
    @Autowired
    private RestTemplate restTemplate;

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

    @GetMapping("/consumer")
    public String test1() {
        return restTemplate.getForObject("http://provide/helloNacos",String.class);
    }
}

2、资源文件信息Resource中application.yml文件配置

server:
  port: 8089

spring:
  application:
    name: consumer

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3、pom.xml配置文件信息


<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.0modelVersion>
    <parent>
        <artifactId>NacosartifactId>
        <groupId>com.zhx.zhxyydsgroupId>
        <version>0.0.1-SNAPSHOTversion>
    parent>

    <groupId>com.zhx.zhxyydsgroupId>
    <artifactId>consumerartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>consumername>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-autoconfigureartifactId>
            <version>2.3.0.RELEASEversion>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

4.测试启动项目

1、启动成功后,在日志中应该可以看到如下两条信息

在这里插入图片描述

2、登录Nacos控制台查看服务

Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现_第3张图片
2.1、启动命令Win版本

startup.cmd -m standalone

启动成功页面
Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现_第4张图片
2.2 输入Nacos网址 http://127.0.0.1:8848/nacos
用户:nacos
密码:nacos
Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现_第5张图片进入首页。
Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现_第6张图片

在服务列表中,已经显示了我们刚才创建的两个项目,并可以对其进行简单的监控和管理。
Spring Cloud 微服务分布式架构 Nacos 作为注册中心实现服务的注册及发现_第7张图片

3、发送请求调用服务提供者

浏览器中访问服务消费者的接口 http://127.0.0.1:8089/consumer, 可以看到成功返回结果

这是服务提供方,nacos!,小新新最帅

总结

从以上将Nacos整合到Spring Cloud微服务项目当中,其实跟之前我写的文章有差异,差异就是我之前文章微服务注册用的是Eureka作为注册中心。zookeeper也是一样,其实在项目当中如果想要替换,其实直接替换当前的注册中心服务即可,可以无缝整合到SpringCloud的微服务框架当中。

你可能感兴趣的:(java后端技术架构,spring,cloud,服务发现,微服务,架构,分布式)