SpringCloud Alibaba--nacos简介和注册中心和登录

这篇具有很好参考价值的文章主要介绍了SpringCloud Alibaba--nacos简介和注册中心和登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.理论基础

二.nacos

2.1 简介

2.2 安装

三.父项目

三.生产者

3.1 配置依赖

3.2 配置文件

3.3 启动类

3.4 控制类

四.消费者

4.1 配置依赖

4.2 配置文件

4.3 启动类

4.4 feign的接口

五.效果

六.负载均衡--权重算法

6.1重启nacos

6.2 设置权重

6.3 设置配置

6.4 效果

SpringCloudAlibaba-登录

1.登录页面

父依赖

2.消费者

2.1 依赖

2.2配置文件

2.3 控制层

2.4 servie层

3.生产者

3.1 依赖

3.2 配置文件

3.3 控制层

3.4 访问层

3.5 实体类

3.6 实现类

3.7 mapper

4.效果


 文章来源地址https://www.toymoban.com/news/detail-859220.html


 

一.理论基础

Spring Cloud Alibaba 为分布式应用开发提供一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用 Spring Cloud 微服务框架开发应用程序。

有了Spring Cloud Alibaba,您只需要添加一些注释和少量配置,就可以将Spring Cloud的应用程序连接到阿里巴巴的分布式解决方案上,并利用阿里巴巴的中间件构建分布式应用系统。

主要功能:

服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

Spring Cloud Alibaba和Spring Cloud和Spring Boot之间的版本对应:

Spring Cloud Alibaba Version

Spring Cloud Version

Spring Boot Version

2021.0.4.0*

Spring Cloud 2021.0.4

2.6.11

2021.0.1.0

Spring Cloud 2021.0.1

2.6.3

2021.1

Spring Cloud 2020.0.1

2.4.2

 

Spring Cloud Alibaba Version

Spring Cloud Version

Spring Boot Version

2022.0.0.0-RC2

2022.0.0

3.0.2

2022.0.0.0-RC1

2022.0.0

3.0.0

Spring Cloud Alibaba和各组件间的版本对应:

Spring Cloud Alibaba Version

Sentinel Version

Nacos Version

RocketMQ Version

Dubbo Version

Seata Version

2.2.9.RELEASE

1.8.5

2.1.0

4.9.4

~

1.5.2

2021.0.4.0

1.8.5

2.0.4

4.9.4

~

1.5.2

2.2.8.RELEASE

1.8.4

2.1.0

4.9.3

~

1.5.1

2021.0.1.0

1.8.3

1.4.2

4.9.2

~

1.4.2

2.2.7.RELEASE

1.8.1

2.0.3

4.6.1

2.7.13

1.3.0

2.2.6.RELEASE

1.8.1

1.4.2

4.4.0

2.7.8

1.3.0

2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE

1.8.0

1.4.1

4.4.0

2.7.8

1.3.0

2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE

1.8.0

1.3.3

4.4.0

2.7.8

1.3.0

2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE

1.7.1

1.2.1

4.4.0

2.7.6

1.2.0

2.2.0.RELEASE

1.7.1

1.1.4

4.4.0

2.7.4.1

1.0.0

2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE

1.7.0

1.1.4

4.4.0

2.7.3

0.9.0

2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE

1.6.3

1.1.1

4.4.0

2.7.3

0.7.1

二.nacos

2.1 简介

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。能够替代Eureka做服务注册中心,替代Config做服务配置中心。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

2.2 安装

安装地址

解压后可直接使用。

在环境变量中配置JDK,需要先配置JAVA_。

打开nacos下的bin文件,用记事本打开startup.cmd,将set MODE="cluster"改为set 。MODE="standalone"后保存。

再次双击打开startup.cmd。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

使用localhost:8848/nacos,访问注册中心,用户名和密码为nacos。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

三.父项目

 配置依赖管理,alibaba-dependencies需要在dependencies的基础上运行,所以需要spring-cloud-dependencies的依赖。

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2022.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>3.0.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0-RC2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

三.生产者

3.1 配置依赖

需要加入web依赖和nacos依赖

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

3.2 配置文件

application

定义好nacos路径和端口

server:
  port: 8003
spring:
  application:
    name: provider
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848

3.3 启动类

编写启动类并加注解。

@EnableDiscoveryClient注解,开启nacos服务中心。

@SpringBootApplication
@EnableDiscoveryClient
public class nacosClient3Application {
    public static void main(String[] args) {
        SpringApplication.run(nacosClient3Application.class,args);
    }
}

3.4 控制类

进行feign和负载均衡使用。

@RestController
public class MyController {
    @RequestMapping("/test")
    public String gotoTest(){
        return "nacosClient3";
    }
}

四.消费者

4.1 配置依赖

需要加入web依赖、nacos依赖、feign依赖和负载均衡依赖

 

<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>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    </dependencies>

4.2 配置文件

定义好nacos路径、端口和名字

server:
  port: 9000
spring:
  application:
    name: consumer
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848

4.3 启动类

编写启动类并加注解。

@EnableDiscoveryClient注解,开启nacos服务中心。

@EnableFeignClients注解,开启feign

@EnableFeignClients//启动feign
@SpringBootApplication
@EnableDiscoveryClient开启nacos服务中心
public class nacosCostomerApplication {
    public static void main(String[] args) {
        SpringApplication.run(nacosCostomerApplication.class,args);
    }
}

4.4 feign的接口

@Service
@FeignClient(name = "provider")
public interface ServiceCostomer {
    @RequestMapping("/test")
    public String gotoTest();
}

五.效果

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

六.负载均衡--权重算法

负载均衡中默认方法为轮询算法,但在实际应用中,是需要给每个生产者有不同的任务,根据服务区的内存等原因,分配不同的任务量。

权重:后端服务器处理请求的优先级,设置权重较高的服务器会更频繁地被选中处理请求。

6.1重启nacos

直接更改权重会出现错误。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

 

首先停止nacos,将nacos文件下的data包删除。删除后重启nacos。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

 

6.2 设置权重

在生产者中点击详情,编辑生产者权重。

注意:生产者的权重之和为1,每个生产者的权重设置为0.n。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

 

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

6.3 设置配置

在消费者中开启nacos的负载均衡策略。

 

cloud:
    loadbalancer:
      nacos:
        enabled: true

6.4 效果

将会给生产者1的分配次数变多。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

SpringCloudAlibaba-登录

页面输入用户名和密码,提交到后端消费者,消费者传到生产者后端在进行判断,返回登录成功或登录失败到消费者,消费者再放到页面上进行显示。

restTemplate.getForObject 向远程取数据 两个参数url和数据类型

restTemplate.postForObject 向远程服务传参数 三个参数url、参数、返回值类型

@RequestBody 跨域(端口不同)得到对象数据,必须是post提交

1.登录页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
<form th:action="@{/loginEntity}" method="post">
    <span th:text="${result}"></span>
    <input type="username" th:placeholder="请输入用户名" name="username"/>
    <input type="password" placeholder="请输入密码" name="password" />
    <input type="submit" th:value="登录"/>
</form>

</body>
</html>

父依赖

管理spring-cloud、spring-boot、spring-cloud-alibaba、mysql和mybatis的版本号,添加共用的lombok依赖

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2022.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>3.0.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0-RC2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
                <version>8.0.33</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>3.0.3</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
        <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

 

2.消费者

需要将页面的值传递给生产者,并接受生产者的返回值。

2.1 依赖

<dependencies>
    使用公共实体类
        <dependency>
            <groupId>org.example.entity</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    nacos依赖
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    feign依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    负载均衡依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    thymeleaf页面依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    </dependencies>

2.2配置文件

server:
  port: 9000
spring:
  application:
    name: customer
  thymeleaf:
    #设置页面路径的前缀
    prefix: classpath:/templates/
    #设置页面路径的后缀
    suffix: .html
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848
    loadbalancer:
      nacos:
        enabled: true

2.3 控制层

在该层写好逻辑,使用feign。

@Controller
public class MyController {
    @Autowired
    ServiceCostomer serviceCostomer;
    ModelAndView mav = new ModelAndView();
   
    @RequestMapping("/login")
    private String login(){
        return "login";
    }
   
    @RequestMapping("/loginEntity")
    public ModelAndView loginEntity(User user) {
        String result = serviceCostomer.loginProvider(user);
        mav.addObject("result", result);
        mav.setViewName("login");
        return mav;
    }
}

2.4 servie层

通过生产者的名字和路径找到对应生产者的方法并传值。

@Service
@FeignClient(name = "provider")
public interface ServiceCostomer {
    @RequestMapping("/login")
    public String loginProvider(@RequestBody User user);
}

3.生产者

因为使用负载均衡,所以不知道第一次回去那个生产者,所以每个生产者都需要写loginProvider。这里以其中一个为例。

3.1 依赖

加入sql依赖、mybatis依赖、nacos依赖

<dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

3.2 配置文件

三个生产者每个生产者各使用一个数据库,所以这里以生产者3为例

server:
  port: 8001
spring:
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/my_sql_1
    username: root
    password: root
  application:
    name: provider
mybatis:
  mapper-locations: classpath:/mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-aliases-package: org.example.client.dao

 

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

3.3 控制层

@RestController
public class MyController {
    @Autowired
    MyUserService myUserService;

    @RequestMapping("/login")
    public String loginProvider(@RequestBody UserEntity user) {
        UserEntity user1 = myUserService.getUser(user);
        if (user1 != null) {
            return "登录成功,欢迎";
        } else {
            return "登录失败,暂无该用户,请注册";
        }
    }
}

3.4 访问层

@Mapper
public interface MyUserDao {
  public userEntity getUser(userEntity user);
}

3.5 实体类

@Data
public class userEntity {
    public int id;
    public String username;
    public String password;
}

3.6 实现类

@Service
public class MyUserServiceImpl implements MyUserService {
    @Autowired
    MyUserDao myUserDao;
    @Override
    public userEntity getUser(userEntity user) {
        return myUserDao.getUser(user);
    }
}

3.7 mapper

<mapper namespace="org.example.client.dao.MyUserDao">
    <select id="getUser">
        select *
        from my_user
        where username = #{username} and password=#{password}
    </select>
</mapper>

4.效果

给每个生产者设置不同的权重。

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

进入login页面

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

登录失败

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

登录成功

SpringCloud Alibaba--nacos简介和注册中心和登录,spring cloud,微服务,架构

 

到了这里,关于SpringCloud Alibaba--nacos简介和注册中心和登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Cloud Alibaba 微服务2,注册中心演变 + Nacos注册中心与配置中心

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

    2024年02月02日
    浏览(320)
  • Spring Cloud Alibaba--Nacos服务注册和配置中心

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

    2024年02月05日
    浏览(61)
  • 【微服务 Spring Cloud Alibaba】- Nacos 服务注册中心

    目录 1. 什么是注册中心? 1.2 注册中心的作用 2. SpringBoot 整合 Nacos 实现服务注册中心 2.1 将服务注册到 Nacos 2.2 实现消费者 3. 服务列表各个参数的含义、作用以及应用场景 注册中心是微服务架构中的一个重要组件,它用于实现 服务注册 与 服务发现 。 【思考一】什么叫服务

    2024年02月06日
    浏览(79)
  • Spring Cloud Alibaba Nacos(服务注册及配置中心)

    Nacos是由阿里巴巴提供的一款专门构建云本地应用的 动态服务发现、配置中心和服务管理平台 。 在Spring Cloud Alibaba中常使用Nacos作为注册中心和分布式配置中心。  (1)服务发现和管理 动态服务发现是以服务为中心(例如微服务或云原生)体系结构的关键。Nacos支持基于DN

    2024年02月16日
    浏览(70)
  • SpringCloud(H版&alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)

    源码地址:https://gitee.com/jackXUYY/springboot-example 创建订单服务,支付服务,公共api服务(共用的实体),eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.cloud-eureka-server7001 5.cloud-eureka-server7002 如图所示 修改本地host映射 修改数据库地址为自己的地址,并初始

    2024年02月03日
    浏览(50)
  • 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日
    浏览(56)
  • 【深入了解Spring Cloud Alibaba Nacos:服务注册和配置中心】—— 每天一点小知识

                                                                💧 深入了解 S p r i n g C l o u d A l i b a b a N a c o s :服务注册和配置中心 color{#FF1493}{深入了解Spring Cloud Alibaba Nacos:服务注册和配置中心} 深入了解 Sp r in g Cl o u d A l ibaba N a cos :服务注

    2024年02月11日
    浏览(69)
  • SpringCloud Alibaba(一)微服务简介+Nacos的安装部署与使用+Nacos集成springboot实现服务注册+Feign实现服务之间的远程调用+负载均衡+领域划分

    目录 一.认识微服务 1.0.学习目标 1.1.单体架构 单体架构的优缺点如下: 1.2.分布式架构 分布式架构的优缺点: 1.3.微服务 微服务的架构特征: 1.4.SpringCloud 1.5Nacos注册中心 1.6.总结 二、Nacos基本使用安装部署+服务注册 (一)linux安装包方式单节点安装部署 1. jdk安装配置 2. na

    2024年02月09日
    浏览(46)
  • 【微服务SpringCloud-Alibaba】:Nacos 配置中心

    在 SpringCloud 中,我们使用了 Config 组件管理所有配置文件,使用了 Bus 消息总线更新配置,两者需要配合使用才能动态的管理配置文件。而 Nacos 可以替代这两个组件,实现动态的管理所有配置文件。 2.1、添加配置文件 想要管理配置,先要有配置文件。在使用 Config 组件管理配

    2023年04月27日
    浏览(51)
  • 微服务简介,Springcloud-alibaba中的Nacos简介

    目录 一:微服务架构 1.0:单体架构 1.1:微服务架构 1.2:微服务架构的优势 1.3:微服务架构的缺点(挑战) 1.4:SpringCloud与微服务关系 1.5:SpringBoot和SpringCloud关系 二:服务注册与发现 2.1:服务注册与发现 2.2:注册中心对比 nacos功能与架构 三:nacos简介 nacos功能:  nacos安装

    2024年02月10日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包