Spring Cloud和Spring Cloud Alibaba

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

1.Spring Cloud是什么?

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导层选举、分布式对话、集群状态)。分布式系统的协调导致了锅炉板模式,使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。他们在任何分布式环境中都能很好的工作,包括开发人员自己的笔记本电脑、数据中心,托管平台。

Spring Cloud是由Spring提供的一套能够快速搭建微服务架构程序,解决分布式微服务框架中各种问题的框架集(每个框架都针对微服务中问题提供了解决方案)

框架集表示Spring Cloud不是一个框架,而是很多框架的集合。

1.1 Spring Cloud Alibaba

Spring Cloud Alibaba和Spring Cloud的关系。

spring cloud提供的是接口 alibaba是根据这套接口实现的功能

一站式解决方案的选型

1.2 阿里巴巴的组件

nacos:注册中心,基础,配置中心

dubbo:远程调用 rpc框架

sentinel:熔断限流

rocketMQ:异步通信,提升性能

1.3 Spring Cloud原生组件

spring cloud gateway:网关

2、Nacos介绍

Nacos致力于帮助您发现、配置和管理微服务,Nacos提供了一组简单易用的特性集,帮助您快速发现实现动态服务发现、服务配置、服务元数据以及流量管理。

Nacos在微服务架构中,实现使用的功能包括 服务治理,配置的管理

当前时长上任何一种微服务落地方案,都需要这种软件存在,即使不使用nacos,也需要别的相同功能的软件技术来带提(console eureka zookeeper)

2.1 核心功能

注册中心:

        发现(抓取 查询)

        注册(新增)

配置中心

Nacos启动脚本:尽量在没有中文以及空格的目录下启动

startup.cmd -m standalone

 startup.cmd 是一个 Windows 平台下的脚本文件,用于执行一系列命令以启动应用程序。而-m standalone 参数指示应用程序以独立模式(standalone mode)启动。

停止关闭Nacos服务端

直接在cmd窗口 或者终端ctrl+c 看到提示符重新出现

2.2 页面介绍

 springcloud和springcloudalibaba,spring cloud,spring,后端

 配置管理:nacos作为配置保存管理的数据显示

服务管理:nacos作为注册中心保存的服务数据显示

权限管理:典型的用户 角色 权限管理的逻辑

命名空间:管理不同开发环境的配置和注册信息隔离的相关内容

集群管理:如果Nacos集群启动的,集群管理可以对集群中的nacos节点做管理操作,下线,查看状态

2.3 Nacos的客户端配置

2.3.1 客户端

Nacos是一个web应用绑定的组件,每个nacos客户端可以通过web应用的配置,和服务端进行逻辑交互,帮助web应用整合到微服务框架组件结构中.

springcloud和springcloudalibaba,spring cloud,spring,后端

2.3.2 Spring Boot整合Nacos

Spring Boot存在,任何经过整理优化的软件技术,可以通过非常简单的步骤完成 

1、添加依赖

<!--引入nacos的依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

 2、yaml配置

spring:
  #spring 应用名称
  #微服务中 服务名称
  application:
    name: luban-demo-cart
  #微服务 nacos客户端配置属性
  cloud:
    nacos:
      discovery:
        # 提供给当前底层客户端nacos的服务端地址 域名:端口
        server-addr: localhost:8848

3、做一些简单的代码配置或者注解的使用

2.4客户端和服务端交互基本原理

nacos服务端支持http协议的访问,可以将其当成一个支持http协议web服务

nacos客户端只要通过http协议访问nacos服务端暴露的接口,就可以实现和服务端交互

根据官网提示的信息

nacos客户端 具备一个接受post请求的接口地址

/nacos/v1/ns/instance

 nacos客户端请求到这个地址,携带一些参数,可以在nacos服务生成注册信息(服务信息)

serviceName=luban-demo-stock&ip=20.18.7.10&port=8080

 可以使用任何支持http请求的插件 实现在nacos服务端进行注册测试,比如postman

比如curl命令

curl支持http西医访问的插件命令,用法:

curl -X [METHOD] args目标地址

 如果使用curl发送一个post请求

 curl -X POST "http://localhost:8848/nacos/v1/ns/instance?serviceName=test-demo&ip=127.0.0.1&port=10010"

 springcloud和springcloudalibaba,spring cloud,spring,后端

 结论:客户端nacos进程已经组织好了所有交互代码逻辑,无需我们介入,我们只需要将这个客户端进程整合到web应用,自动和服务交互,注册当前服务实例信息,携带当前web应用中服务名称(spring.application.name),ip(自动获取),port(server.port)服务端会记录保存这个数据到内存。

nacos服务端除了提供注册的接口(新增)还提供了一个抓取的接口(查询)

接口地址:

/nacos/v1/ns/instance/list

通过这个接口,可以传递参数,获取某个服务的详细信息

serviceName=luban-demo-stock

通过curl命令来测试

 curl -X GET "http://localhost:8848/nacos/v1/ns/instance/list?serviceName=luban-demo-cart-haha"

 

{
  "hosts": [
    {
      "ip": "10.1.6.132",
      "port": 10005,
      "valid": true,
      "healthy": true,
      "marked": false,
      "instanceId": "10.1.6.132#10005#DEFAULT#DEFAULT_GROUP@@luban-demo-cart-haha",
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "enabled": true,
      "weight": 1.0,
      "clusterName": "DEFAULT",
      "serviceName": "luban-demo-cart-haha",
      "ephemeral": true
    }
  ],
  "dom": "luban-demo-cart-haha",
  "name": "DEFAULT_GROUP@@luban-demo-cart-haha",
  "cacheMillis": 3000,
  "lastRefTime": 1692176089735,
  "checksum": "e12bd76eb3558f8f25b480393365ea08",
  "useSpecifiedURL": false,
  "clusters": "",
  "env": "",
  "metadata": {
  }
}

nacos客户端进程 除了进行注册之外,还会根据自己的需求,对nacos客户端保存的注册信息进行抓取,隔一段时间进行更新

3、Nacos客户端yaml详解

3.1临时实例 永久实例

概念:服务 服务实例(每一个web应用进程)在一个服务中 服务实例多个

springcloud和springcloudalibaba,spring cloud,spring,后端

 

当前启动进程是永久实例还是临时实例true 表示临时实例 false表示永久实例

 spring:
    cloud:
        nacos:
            discovery:
                ephemeral: true

永久实例:nacos永远不删除的注册信息,就是永久实例

临时实例:暂时为某些应用,环境准备的扩容实例,就是定义为临时实例

3.1.1为什么要区分永久实例和临时实例

淘宝每一个功能都是一个服务,而且具备多个实例,平日访问时固定流量,所以使用永久实例支持,如果双11来临,流量激增,需要增加临时实例,等待11完成,删除临时实例

3.2服务实例的ip地址

ip值时nacos客户端默认情况下根据寻求网卡的逻辑,自动从某一个网卡获取的ip地址

概念:服务器多网卡,每个网卡都有本机的一个ip地址网段,功能不一样,网络范围也不一样

如果ip地址时nacos自己选的,不一定能够选择正确的ip地址

正确的IP地址:在nacos注册的ip 如果被别人抓取到,能够正常访问服务实例的ip地址

spring:
    cloud:
        nacos:
            discovery:
                ip: 

3.3命名空间 

开发过程中,使用的开发,测试,上线环境时不同的,所以nacos提供隔离的环境

不同的环境 对应使用微服务框架的时候,nacos注册在不同的命名空间

nacos默认命名空间-public

springcloud和springcloudalibaba,spring cloud,spring,后端

 nacos客户端配置的时候没有指定命名空间,默认使用public,可以在右上角创建命名空间,

nacos客户端指定注册命名空间,使用属性配置namespace

spring:
    cloud:
        nacos:
            discovery:
                namespace: 

springcloud和springcloudalibaba,spring cloud,spring,后端 

3.4 分组配置 

nacos管理的注册信息,同一个命名空间下有多个服务,但是服务注册可以放到不同的分组

分组的主要目的是--灰度发布,同时在环境中 存在多个版本不同的服务端进程

通过nacos客户端属性配置,默认不填写group 叫做DEFUALT_GROUP

spring:
    cloud:
        nacos:
            discovery:
                group: 

 3.5 服务剔除

nacos实例,作为一个进程,内部包含了一个nacos客户端,在启动注册之后,需要和nacos服务端建立一个健康状态检测机制

永久实例:nacos服务端会进行下探,主动询问,如果下探发现没有相应,记录健康状态为false,下探不会停止

临时实例:临时实例自己,主动上报(心跳检测)nacos服务端记录每次上报的时间戳

服务端会根据时间戳的值,判断是否健康,是否剔除

spring:
    cloud:
        nacos:
            discovery:
                heart-beat-interval: 5
                ip-delete-timeout: 20

  heart-beat-interval: 5

指定服务实例向 Nacos 服务器发送心跳的间隔时间。默认值为 30 秒。上述配置中将其设置为 5 秒,即每 5 秒就会向 Nacos 服务器发送一次心跳。较短的心跳间隔可以更快地检测出故障实例并进行替换。

 ip-delete-timeout: 20

指定 Nacos 服务器删除服务实例的超时时间。默认值为 30 秒。如果一个服务实例在这个时间内没有发送心跳,则将被认为已经下线。上述配置中将其设置为 20 秒,即如果一个服务实例在 20 秒内没有发送心跳,则将被从 Nacos 服务器中删除。

时间具体设置的值,取决于什么因素

1、超过时间不能小于 间隔时间

2、取决于网络因素

        网络畅通,抖动没有:时间缩小5 10

        网络经常抖动 放大 10 60

4 nacos配置中心

4.1应用场景

开发学习一个微服务架构,其中会有很多的服务,每个服务又有很多的实例

每个服务开发过程中,需要编辑配置大量的web文件,比如yaml,json,html,xml...

这么多配置文本,是不方便统一管理的,特点:重复,同时变动...

在多团队和多人员开发的场景中,一般这种文件都需要交给配置中心管理、

springcloud和springcloudalibaba,spring cloud,spring,后端

4.2实现nacos配置客户端整合

1、依赖nacos config 客户端

<!--引入nacos依赖-配置中心客户端依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--为属性配置yaml准备的一个依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

 2、yaml属性 告诉nacos到那个服务端读取哪些文件

在项目中引入一个bootstrap.yaml配置文件

如果当前spring boot版本是2.3.x或更早,不需要引用依赖spring-cloud-starter-bootstrap

但是如果springboot高于2.3.x就需要引用

引入新的配置文件,和application.yaml配置文件区别是什么?

        bootstrap.yaml先于application.yaml加载

bootstrap.yaml应该只需要支持nacosConfig客户端链接远程配置中心即可

配置bootstrap的格式

1、如果不区分开发环境,和application.yaml没区别

spring:
  application:
    # 连接配置中心的时候需要配置客户端提供的参数
    name: luban-demo-cart
  # 微服务配置管理
  cloud:
    nacos:
      config: 
        server-addr: localhost:8848

区分开发环境,和application配置稍有区别

spring:
  profiles:
    active: dev
---
spring:
  application:
    # 连接配置中心的时候需要配置客户端提供的参数
    name: luban-demo-cart
  # 微服务配置管理
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
  config:
    activate:
      on-profile: dev
---
spring:
  application:
    # 连接配置中心的时候需要配置客户端提供的参数
    name: luban-demo-cart
  # 微服务配置管理
  cloud:
    nacos:
      config:
        server-addr: 100.99.11.11:8848
  config:
    activate:
      on-profile: prod

4.3配置远程文件

默认情况下,没有指定远程文件名称(dataId),当前nacosConfig客户端也会在启动后读取

文件名称都是基于在bootstrap.yaml配置文件里指定属性值

spring.application.name=luban-demo-cart
file-extension 没给默认值 properties
spring.profiles.active=dev

springcloud和springcloudalibaba,spring cloud,spring,后端

springcloud和springcloudalibaba,spring cloud,spring,后端

 4.4本地配置远程化

保证能够读取到远程1个或者多个文件的前提下,可以将本地公用配置

spring.datasource从本地移除,放在远程文件

由于默认读取的文件,不一定满足文件后缀,格式的要求,而且,不能实现多个服务的共性化读取,所以我们需要指定让当前项目读取某一个,某几个文件

yaml属性 bootstrap

spring:
  profiles:
    active: dev
---
spring:
  application:
    name: luban-demo-cart
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
        shared-configs:
          - data-id: datasource.yaml
            refresh: true
          - data-id: mybatis.yaml
            refresh: true
          - data-id: nacos-registry.yaml
            refresh: true
  config:
    activate:
      on-profile: dev

 

bootstrap.yaml配置内容如上:

  • 帮助nacosconfig客户端提前连接nacosconfig服务端读取指定文件

  • 如果没指定文件 没有配置shared-configs,会根据spring.applicaiton.name 和spring.profiles.active,和spring.cloud.nacos.config.file-extensions属性值,读取默认的三个文件.

  • 通过shared-configs配置指定文件,可以实现公用文件的读取. 指定读取三个文件 datasource.yaml(spring.datasource.url) nacos-registry.yaml(spring.cloud.nacos.discovery.server-addr),mybatis.yaml(mybatis.configuration.**)文章来源地址https://www.toymoban.com/news/detail-847119.html

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

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

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

相关文章

  • Spring Cloud 和Spring Cloud Alibaba

    一、什么是SpringCloud? SpringCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,跟Spring Boot框架一起使用的话,会让你

    2024年02月12日
    浏览(31)
  • 【Spring Cloud 八】Spring Cloud Gateway网关

    【Spring Cloud一】微服务基本知识 【Spring Cloud 三】Eureka服务注册与服务发现 【Spring Cloud 四】Ribbon负载均衡 【Spring Cloud 五】OpenFeign服务调用 【Spring Cloud 六】Hystrix熔断 【Spring Cloud 七】Sleuth+Zipkin 链路追踪 在项目中是使用了Gateway做统一的请求的入口,以及统一的跨域处理以及

    2024年02月12日
    浏览(35)
  • Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系

    一、前言 在搭建SpringCloud项目环境架构的时候,经常需要选择SpringBoot和SpringCloud进行兼容的版本号。因此,对于选择SpringBoot版本与SpringCloud版本的对应关系很重要,如果版本关系不对应,常见的会遇见项目启动不起来,怪异的则会是你的项目出现一些诡异的问题,查资料也不

    2024年02月07日
    浏览(34)
  • 【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程

    JDK 1.8+ Maven 3.6+ Spring Boot 2.2.4.RELEASE Spring Cloud Hoxton.SR1 Spring Cloud Alibaba 2.2.0.RELEASE 官网推荐对应版本 本文主要介绍了如何搭建一个 Spring Cloud Alibaba 项目,适合已经熟练使用 Spring Boot ,想要学习搭建 Spring Cloud Alibaba 项目的小伙伴。 Spring Cloud Alibaba 为分布式应用程序开发提供了

    2023年04月18日
    浏览(35)
  • Spring Cloud Gateway 超时、CORS配置 | Spring Cloud 17

    Spring Cloud Gateway 可以为所有路由配置 Http 超时(响应和连接) ,并为每个特定路由覆盖设置。 配置全局 http 超时: connect-timeout 必须 以毫秒为单位 指定。 response-timeout 必须指定为 java.time.Duration 使用示例:

    2024年02月14日
    浏览(44)
  • 【Spring Cloud系列】Spring Cloud-网关Zuul详解与实战

    Spring Cloud Zuul 是 Spring Cloud Netflix 子项目的核心组件之一,是netflix开源的一个API Gateway服务器,本质上有一个Web Servlet应用,可以作为微服务架构中的 API 网关使用,支持动态路由与过滤功能;网关为微服务提供统一的访问入口;网关的定义类似设计模式中的门面模式,相当于

    2024年02月08日
    浏览(29)
  • Spring Cloud集成Nacos实现本地配置优先 | Spring Cloud 9

    Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator 接口,并将优先级设置为最高。 在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解

    2024年02月15日
    浏览(49)
  • 微服务 Spring Cloud 5,一图说透Spring Cloud微服务架构

    大家好,我是哪吒。 很多人都说现在是云原生、大模型的时代,微服务已经过时了,但现实的是,很多人开发多年,都没有在实际的开发中用过微服务,更别提搭建微服务框架和技术选型了。 面试的时候都会问,怎么办? 今天分享一张微服务的丐版架构图,让你可以和面试

    2024年02月05日
    浏览(35)
  • Spring Cloud集成Nacos实现服务配置中心 | Spring Cloud 7

    先我们来看一下,微服务架构下关于配置文件的一些问题: 配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。 配置文件无法区分环境,开发环境、测试环境、线上环境。微服务项目可能会

    2024年02月14日
    浏览(33)
  • 快速读懂什么是Spring Cloud 与 Spring Cloud Alibaba

    本文从spring和springboot 引出Spring Cloud,紧接着介绍Spring Cloud Alibaba。以及如何快速上手Spring Cloud Alibaba:Spring Cloud Alibaba核心技术与实战案例 等等。在我们深入研究Spring Cloud之前,让我们先了解一下Spring和Spring Boot。 我们都知道Spring框架已经存在很长时间了,它提供了以下功能

    2024年02月16日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包