SpringCloud微服务框架的原理及应用详解(五)

本系列文章简介:

        随着云计算、大数据和物联网等技术的飞速发展,企业应用系统的规模和复杂度不断增加,传统的单体架构已经难以满足快速迭代、高并发、高可用性等现代业务需求。在这样的背景下,微服务架构应运而生,成为了一种主流的分布式系统构建方法。

        微服务架构的核心思想是将一个庞大的单体应用拆分成若干个小的、独立的、可自治的服务,每个服务运行在其独立的进程中,服务与服务之间通过轻量级的通信机制进行交互。这种架构模式具有高度的可扩展性、灵活性和可维护性,能够快速地响应业务需求的变化,提高系统的整体性能和可靠性。

        然而,微服务架构的实施并不是一蹴而就的,它需要一系列的工具和技术来支撑。在Java生态系统中,SpringCloud是一个备受关注的微服务框架,它基于Spring Boot开发,提供了一整套的微服务解决方案,包括服务注册与发现、负载均衡、声明式服务调用、断路器与容错、配置中心、API网关等功能,大大简化了微服务的开发和管理工作。

        本系列文章旨在深入探讨SpringCloud微服务框架的原理及应用。首先,我们将从微服务架构的概述入手,介绍微服务架构的定义、优势、挑战以及适用场景。接着,我们将详细阐述SpringCloud微服务框架的原理,包括服务注册与发现、负载均衡、声明式服务调用、断路器与容错、配置中心、API网关等核心组件的工作原理和机制。然后,我们将结合具体的案例,分析SpringCloud在实际项目中的应用实践,包括微服务架构的设计与拆分、安全与治理、持续集成与持续部署、性能优化与容灾处理等方面。最后,我们将总结SpringCloud微服务框架的优势和不足,展望微服务架构的发展趋势和未来发展方向。

        通过本系列文章的研究,我们希望能够帮助大家更好地理解微服务架构和SpringCloud微服务框架的原理及应用,为企业在构建微服务架构时提供参考和借鉴。同时,我们也希望激发更多的研究者和开发者对微服务架构和SpringCloud微服务框架的深入研究和探索,共同推动微服务架构的发展和应用。

        欢迎大家订阅《Java技术栈高级攻略》专栏(PS:近期会涨价),一起学习,一起涨分!

目录

一、引言

二、SpringCloud核心组件详解

2.1 服务注册与发现组件(Nacos)

2.1.1 Nacos的架构与组件

2.1.2 Nacos的配置与使用

2.2 负载均衡组件(Ribbon)

2.2.1 Ribbon的配置与策略

2.2.2 Ribbon与Nacos的集成

2.3 声明式服务调用组件(Feign)

2.4 断路器与容错组件(Hystrix)

2.5 配置中心组件(Spring Cloud Config)

2.6 API网关组件(Gateway)

三、SpringCloud微服务框架的应用实践

3.1 微服务架构设计与拆分

3.2 微服务的安全与治理

3.3 微服务的持续集成与持续部署(CI/CD)

3.4 微服务架构下的性能优化与容灾处理

四、SpringCloud微服务框架的挑战与未来展望

五、结论

六、结语


一、引言

        Spring Cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务。它提供了一系列框架和组件,如服务发现、配置管理、熔断器、智能路由等,用于简化分布式系统的开发。Spring Cloud通过提供一系列开箱即用的组件和工具,帮助开发者快速构建和部署微服务架构的系统。

        本文将跟随《SpringCloud微服务框架的原理及应用详解(四)》的进度,继续介绍Spring Boot框架。希望通过本系列文章的学习,您将能够更好地理解Spring Boot框架的内部工作原理,掌握Spring Boot框架的使用技巧,以及通过合理的设计完成最佳实践,充分发挥优化Spring Boot框架的潜力,为系统的高效运行提供有力保障。

二、SpringCloud核心组件详解

2.1 服务注册与发现组件(Nacos)

2.1.1 Nacos的架构与组件

SpringCloud中的Nacos是一个更现代化、功能更丰富的服务发现和配置管理平台,由阿里巴巴开源。下面是对Nacos的架构与组件的详细解析:

1. 架构概述

Nacos的架构基于客户端-服务器模式,包含两个主要组件:Nacos服务器(Nacos Server)和Nacos客户端(Nacos Client)。

  • Nacos Server:提供服务的注册、发现、配置管理等功能。它通常是以集群模式部署,确保高可用性和容错性。
  • Nacos Client:用于与Nacos Server进行交互,提供服务的注册、订阅、配置获取等功能。它内嵌于微服务应用中,使得应用能够轻松地与Nacos Server进行通信。

2. 核心组件

2.1 注册中心

  • 功能:用于服务的注册与发现。服务提供者在启动时,会将自己的元数据信息注册到Nacos Server中;服务消费者在需要调用服务时,可以通过Nacos Server的服务发现功能获取服务提供者的地址列表。
  • 特点
    • 支持多种服务注册与发现协议(如Dubbo、gRPC、Spring Cloud等)。
    • 提供心跳检测机制,确保服务的可用性。
    • 支持服务权重、元数据等扩展功能。

2.2 配置中心

  • 功能:用于应用程序的配置信息管理。Nacos提供了一个可视化的配置管理界面,支持多种格式的配置文件(如YAML、Properties等),并支持动态配置管理。当配置信息发生变化时,Nacos会自动推送最新的配置信息给应用程序,实现配置的实时更新。
  • 特点
    • 支持配置版本控制,方便历史配置的回滚与追踪。
    • 提供命名空间、配置组等概念,方便对配置进行分组管理。
    • 支持监听机制,当配置发生变化时,可以通知订阅了该配置的应用程序。

2.3 集群管理

  • 功能:确保Nacos Server的高可用性和容错性。Nacos Server通常以集群模式部署,通过选举算法(如Raft)选举出主节点(Leader),其他节点作为从节点(Follower)。主节点负责处理写请求,并将数据同步给从节点;从节点负责处理读请求,提供负载均衡。
  • 特点
    • 支持多种集群模式(如主从模式、多主模式等)。
    • 提供多种数据同步机制,确保数据的一致性和可靠性。
    • 提供故障转移和恢复机制,当主节点发生故障时,能够自动选举出新的主节点。

3. 总结

Nacos作为SpringCloud的核心组件之一,提供了强大的服务发现和配置管理功能。通过注册中心、配置中心和集群管理等核心组件的协同工作,Nacos能够确保微服务架构中的服务注册与发现、配置管理的稳定性和高效性。同时,Nacos还提供了丰富的扩展功能和灵活的配置选项,使得开发人员能够根据自己的需求进行定制和优化。

2.1.2 Nacos的配置与使用

Spring Cloud中的Nacos是一个核心组件,它提供了服务发现、配置管理和服务管理等功能。以下是关于Nacos的配置与使用的详细解释:

1、Nacos简介

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它具备服务发现、配置管理、服务健康监测等功能,可以帮助开发者更轻松地构建、部署和管理微服务应用。

2、Nacos的配置

  1. 下载与启动
    • 下载地址:https://github.com/alibaba/nacos/releases
    • 下载完成后解压并进入bin目录,执行startup.cmd -m standalone命令启动Nacos服务(单机模式)。
    • 访问http://127.0.0.1:8848/nacos,使用默认账号nacos/nacos登录Nacos控制台。
  2. 持久化配置(可选)
    • 如果需要使用Nacos的配置中心功能,建议将配置数据保存到数据库以实现持久化。
    • 创建数据库,并执行Nacos服务的conf目录下的nacos-mysql.sql脚本以创建所需的表和索引。
    • 修改Nacos服务的application.properties文件,配置数据库连接信息。
    • 重启Nacos服务后,新增的配置内容将会保存到数据库中。

3、Nacos的使用

  1. 微服务集成Nacos注册中心
    • 在Spring Cloud项目的pom.xml文件中添加Nacos客户端依赖:
      <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

    • 在启动类上添加@EnableDiscoveryClient注解以启用服务发现功能。
    • application.ymlbootstrap.yml文件中配置Nacos地址:
      spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848

    • 启动微服务后,Nacos控制台中的“服务管理”菜单下的“服务列表”中会显示已注册的服务实例。
  2. 微服务集成Nacos配置中心
    • 在Spring Cloud项目的pom.xml文件中添加Nacos配置管理依赖:
      <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>

    • bootstrap.yml文件中配置Nacos配置中心的地址和配置文件的Data ID、Group等信息:
      spring: application: name: your-service-name cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml # 配置文件后缀名 data-id: your-data-id # Data ID group: your-group # Group profiles: active: dev # 环境标识,如dev、test、prod等

    • 启动微服务后,Spring Cloud会自动从Nacos配置中心加载对应的配置文件。

4、Nacos配置管理的特性

  • 集中式的配置管理:允许在一个中心位置管理所有微服务的配置。
  • 动态推送:当配置发生变化时,Nacos可以实时推送给相关的服务。
  • 版本控制和回滚:Nacos为配置变更提供了版本控制,支持历史版本查询与回滚。
  • 访问控制:通过命名空间、角色和权限控制配置的访问。

5、总结

Nacos作为Spring Cloud的核心组件之一,为微服务架构提供了强大的服务发现、配置管理和服务管理功能。通过合理的配置和使用,可以极大地提升微服务应用的可靠性、可维护性和可扩展性。

2.2 负载均衡组件(Ribbon)

2.2.1 Ribbon的配置与策略

Spring Cloud Ribbon是Spring Cloud微服务架构中的一个核心组件,主要用于客户端的负载均衡。以下是关于Ribbon的配置与策略的详细解析:

1、Ribbon的配置

Ribbon的配置方式主要有三种:

  1. 使用配置类粗粒度控制
    • 开发者可以直接编写一个配置类,通过@Bean注解定义需要使用的接口实现。例如,可以通过定义一个MyRibbonConfiguration类,并在其中返回自定义的IPing实现类,如PingUrl
  2. 使用配置类细粒度控制
    • 这种方式允许开发者针对特定的服务进行配置。例如,可以针对服务“EUREKA-CLIENT”创建一个HelloRibbonConfiguration类,并在其中定义所需的IPing实现。然后,通过@RibbonClient注解将该配置类与特定的服务名称关联起来。
  3. 使用配置文件控制
    • 开发者可以使用配置文件(如application.yml或application.properties)来配置Ribbon。配置格式通常为<clientName>.ribbon.<key>=<value>。例如,为“EUREKA-CLIENT”服务配置负载均衡器的实现类,可以写成EUREKA-CLIENT: ribbon: NFLoadBalancerClassName: com.netflix.loadbalancer.ZoneAwareLoadBalancer

2、Ribbon的负载均衡策略

Ribbon提供了多种负载均衡策略,这些策略由IRule接口定义,包括:

  1. RandomRule(随机策略)
    • 从服务提供者列表中随机选择一个服务实例进行调用。
  2. RoundRobinRule(轮询策略)
    • 按照顺序循环选择服务提供者列表中的服务实例进行调用。
  3. AvailabilityFilteringRule(可用过滤策略)
    • 先过滤掉由于多次访问故障的服务,以及并发连接数超过阈值的服务,然后对剩下的服务按照轮询策略进行访问。
  4. WeightedResponseTimeRule(响应时间权重策略)
    • 根据平均响应时间计算所有服务的权重,响应时间越快服务权重就越大,被选中的概率即越高。如果服务刚启动时统计信息不足,则使用RoundRobinRule策略,待统计信息足够后切换到该策略。
  5. RetryRule(重试策略)
    • 先按照RoundRobinRule策略分发,如果分发到的服务不能访问,则在指定时间内进行重试,然后分发其他可用的服务。
  6. BestAvailableRule(最少连接策略)
    • 在进行服务器选择时,遍历服务提供者列表,选出可用的且连接数最少的一个服务提供者。
  7. ZoneAvoidanceRule(区域感知策略,默认策略)
    • 综合判断服务节点所在区域的性能和服务节点的可用性,来决定选择哪个服务。

3、总结

Spring Cloud Ribbon通过提供多种配置方式和负载均衡策略,使得开发者能够灵活地实现客户端的负载均衡。这些策略可以根据实际的应用场景和需求进行选择,以达到最优的负载均衡效果。同时,Ribbon的配置也非常灵活,可以通过配置文件、配置类等多种方式进行配置,满足不同的开发需求。

2.2.2 Ribbon与Nacos的集成

SpringCloud中的Ribbon与Nacos的集成允许我们实现客户端的负载均衡和服务发现功能。以下是关于Ribbon与Nacos集成的详细解释:

1、Ribbon简介

Ribbon是Netflix发布的开源项目,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。它主要用于在微服务架构中,客户端(服务消费者)调用服务提供者的接口时,通过负载均衡策略选择最优的服务实例进行调用,以达到系统的高可用性和扩展性。

2、Nacos服务发现

Nacos是阿里巴巴开源的一个对微服务架构中服务发现、配置管理和服务管理平台。它可以帮助服务提供者自动注册到Nacos服务端,并且能够动态感知和刷新服务实例的服务列表。这使得服务消费者可以通过Nacos获取到服务提供者的地址信息,从而进行服务调用。

3、Ribbon与Nacos的集成

  1. 依赖引入
    在Spring Cloud项目中,需要同时引入Ribbon和Nacos的依赖,以便实现负载均衡和服务发现的功能。

    <!-- Ribbon 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <!-- Nacos 服务发现与配置管理依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

  2. 配置Nacos
    application.ymlbootstrap.yml文件中配置Nacos的地址以及其他相关参数。

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

  3. 服务提供者的注册
    服务提供者启动后,会向Nacos服务端注册自己的服务实例,包括IP地址、端口号、服务名等信息。

  4. 服务消费者的发现
    服务消费者启动时,会通过Nacos服务发现组件获取到服务提供者的地址列表,并缓存在本地。

  5. Ribbon的负载均衡
    服务消费者在调用服务提供者的接口时,会通过Ribbon客户端负载均衡器从本地的服务地址列表中选择一个最优的服务实例进行调用。Ribbon支持多种负载均衡策略,如轮询、随机、权重等。

  6. 优雅下线
    Nacos支持服务实例的优雅下线。当服务提供者需要下线时,可以通过Nacos的API或控制台将服务实例的权重设置为0,这样Ribbon在调用时就不会再选择该服务实例,从而实现优雅下线。

4、总结

Ribbon与Nacos的集成使得Spring Cloud微服务架构中的服务调用更加灵活、高效和可靠。通过Nacos的服务发现功能,服务消费者可以动态获取服务提供者的地址列表;而Ribbon的负载均衡功能则可以根据配置的策略选择最优的服务实例进行调用,从而实现系统的高可用性和扩展性。

2.3 声明式服务调用组件(Feign)

        详见《SpringCloud微服务框架的原理及应用详解(六)

2.4 断路器与容错组件(Hystrix)

        详见《SpringCloud微服务框架的原理及应用详解(六)

2.5 配置中心组件(Spring Cloud Config)

        详见《SpringCloud微服务框架的原理及应用详解(七)

2.6 API网关组件(Gateway)

        详见《SpringCloud微服务框架的原理及应用详解(七)

三、SpringCloud微服务框架的应用实践

3.1 微服务架构设计与拆分

        详见《SpringCloud微服务框架的原理及应用详解(八)

3.2 微服务的安全与治理

        详见《SpringCloud微服务框架的原理及应用详解(八)

3.3 微服务的持续集成与持续部署(CI/CD)

        详见《SpringCloud微服务框架的原理及应用详解(九)

3.4 微服务架构下的性能优化与容灾处理

        详见《SpringCloud微服务框架的原理及应用详解(九)

四、SpringCloud微服务框架的挑战与未来展望

        详见《SpringCloud微服务框架的原理及应用详解(十)

五、结论

        详见《SpringCloud微服务框架的原理及应用详解(十)

六、结语

        文章至此,已接近尾声!希望此文能够对大家有所启发和帮助。同时,感谢大家的耐心阅读和对本文档的信任。在未来的技术学习和工作中,期待与各位大佬共同进步,共同探索新的技术前沿。最后,再次感谢各位的支持和关注。您的支持是作者创作的最大动力,如果您觉得这篇文章对您有所帮助,请分享给身边的朋友和同事!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式架构的优势与实现

目录 前言1. 什么是分布式架构1.1 分布式架构的定义1.2 分布式架构的基本原理 2. 分布式架构的优势2.1 可扩展性2.2 容错性和高可用性2.3 性能优化2.4 灵活性和可维护性 3. 分布式架构的实现方法3.1 服务拆分3.1.1 功能拆分3.1.2 垂直拆分3.1.3 水平拆分 3.2 数据分布与存储3.2…

力扣907.子数组的最小值之和

力扣907.子数组的最小值之和 考虑每个数对答案的贡献 对于每个元素 找到左边界(严格小于) 右边界(小于等于) 这样出现重复元素也不会重复计算答案对于答案贡献为 arr[i] * (i - l) * (r - i) class Solution {const int MOD 1e97;public:int sumSubarrayMins(vector<int…

java—Mybatis缓存

缓存的作用 缓存(cache&#xff09;的作用是为了减轻数据库的压力&#xff0c;提高查询性能。 为什么使用缓存 mysql数据库保存的数据均在硬盘中&#xff0c;CPU是不会直接和硬盘进行交互的&#xff0c;因为硬盘的数据传输率很低&#xff0c;而CPU的数据传输率很高, CPU和内存直…

VBA技术资料MF165:关闭当前打开的所有工作簿

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

springBoot不同module之间互相依赖

在 Spring Boot 多模块项目中&#xff0c;不同模块之间的依赖通常是通过 Maven 或 Gradle 来管理的。以下是一个示例结构和如何设置这些依赖的示例。 项目结构 假设我们有一个多模块的 Spring Boot 项目&#xff0c;结构如下&#xff1a; my-springboot-project │ ├── p…

「前端+鸿蒙」鸿蒙应用开发-UI组件

在鸿蒙应用开发中,UI组件是构建用户界面的基本元素。以下是一些常用UI组件的介绍,包括它们的使用方式和示例代码。 1. 文本(Text) 文本组件用于在界面上显示文本内容。 import {Component, render, Text } from @ohos/arkui;class TextComponent extends Component {rend…

Spring (75)Spring Boot的部署最佳实践

在部署Spring Boot应用程序时&#xff0c;最佳实践通常涉及应用程序的打包、配置管理、健康检查、日志记录、安全、环境隔离和监控。以下是结合一些最佳实践的详细步骤和解释。 1. 打包和构建 Spring Boot应用程序通常打包为可执行的JAR文件&#xff0c;它包括应用程序和所有…

四年Android,终于咸鱼翻身!8K到25K全靠这份高级面试题+解析!

1、哪些情况下的对象会被垃圾回收机制处理掉&#xff1f; 2、讲一下常见编码方式&#xff1f; 3、utf-8 编码中的中文占几个字节&#xff1b;int 型几个字节&#xff1f; 4、静态代理和动态代理的区别&#xff0c;什么场景使用&#xff1f; 5、Java 的异常体系 6、谈谈你对解析…

写一个坏越的个人天地(一)

好久没写什么大点的项目了,今天想着写一个个人博客好了。I did it! 做个人天地。肯定得有个主题色吧。整个下拉界面,先准备三个色系吧 <el-header class="title"><el-dropdown @command="handleCommand"><span class="el-dropdown-…

若依4.7.8版本计划任务rce复现

0x00 背景 最近项目中发现很多单位都使用了若依二开的系统&#xff0c;而最近若依有个后台计划任务rce的漏洞&#xff0c;比较新&#xff0c;我还没复现过&#xff0c;于是本地搭建一个若依环境复现一下这个漏洞。 这个漏洞在4.7.8版本及之前都存在&#xff0c;现在最新版的若…

管理端开发如何快速理解并实现权限控制总结

管理端开发如何快速理解并实现权限控制总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在管理端开发中&#xff0c;权限控制是至关重要的一环。通过权限控…

647. 回文子串(leetcode)

647. 回文子串&#xff08;leetcode&#xff09; 题目描述 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 示例1 输入&#xff1a;s “abc” 输出…

Golang | Leetcode Golang题解之第179题最大数

题目&#xff1a; 题解&#xff1a; func largestNumber(nums []int) string {sort.Slice(nums, func(i, j int) bool {x, y : nums[i], nums[j]sx, sy : 10, 10for sx < x {sx * 10}for sy < y {sy * 10}return sy*xy > sx*yx})if nums[0] 0 {return "0"…

Android 天气APP(八)城市切换 之 自定义弹窗与使用

然后在模块的utils包中新建一个LiWindow类 代码如下&#xff1a; package com.llw.mvplibrary.utils; import android.app.Activity; import android.content.Context; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; im…

element-ui里message抖动问题

由于element默认屏蔽滚动条&#xff0c;导致取消时弹message时 侧边滚动栏突然回来后引起抖动问题 是由于打开弹窗时出现遮罩层dialog对话框 时引起了元素内容超出自身尺寸 对应的overflow样式内容为hidden&#xff0c;且新建了一个class类内容为增加17 内右边距&#xff0c;当…

某md5魔改-js还原

我们先把js 扣下来看一下 整体扣一下 ,运行后发现结果一致。 到这里就结束了吗,不不,这次我们要看到它里面具体的变动 <-_-> 先看一下md5的初步加密流程 void MD5Init(MD5_CTX *context) {context->count[0] = 0;context->count[1] = 0;context->state[0]…

注解详解系列 - @Order:控制Bean加载顺序

注解简介 在今天的注解详解系列中&#xff0c;我们将探讨Order注解。Order是Spring框架中的一个重要注解&#xff0c;用于控制Spring容器中Bean的加载顺序。通过Order注解&#xff0c;可以指定多个Bean的优先级&#xff0c;从而决定它们的执行或加载顺序。 注解定义 Order注解…

AI网络爬虫:搜狗图片的时间戳反爬虫应对策略

如何批量爬取下载搜狗图片搜索结果页面的图片&#xff1f;以孙允珠这个关键词的搜索结果为例&#xff1a; https://pic.sogou.com/pics?query%E5%AD%99%E5%85%81%E7%8F%A0&mode2 翻页规律如下&#xff1a; https://pic.sogou.com/napi/pc/searchList?mode2&start38…

目标检测YOLO实战应用案例100讲-【目标检测】YOLOV9

目录 前言 算法原理 Methodology—方法 可编程梯度信息PGI 辅助可逆分支 多级辅助信息 广义 ELAN 实验效果 实施细节 与最先进实时目标检测器的比较 消融实验 表6展示了从基线 YOLOv7 到 YOLOv9 逐渐增加组件的结果。我们提出的 GELAN 和 PGI 为我们带来了较大优势…

Flutter开发环境搭建和调试

[你的Flutter文件夹路径]\flutter\bin 这样我们的Flutter SDK的环境变量就配置完毕了。接下来在命令提示符窗口中输入命令&#xff1a; flutter doctor 它可以帮助我们检查Flutter环境变量是否设置成功&#xff0c;Android SDK是否下载以及配置好环境变量等等。如果有相关的…