微服务项目搭建:Nacos以及网关的配置

nacos动态路由配置(二)-微服务启动自动配置网关路由 经过上一篇我们发现nacos通过配置动态路由routes-api-gateway.yaml配置json,监听动态路由变化即可实现动态路由,非常的银杏化。 那么有的小伙伴发现配置json也比较麻烦,有没有更简单更银杏的办法? 先看一下路由需要的几个参数 - id: service11 uri: lb://service1 predicates: - Path=/api/service1/** filters: - StripP... 阅读详情

Nacos

为什么要在Nacos进行配置?

方便管理,不用重启项目就可以更改配置。如果微服务的实例多了,里面的配置可以方便统一管理。

配置三要素

搭建完成Nacos服务发现中心,下边搭建Nacos为配置中心,其目的就是通过Nacos去管理项目的所有配置。

先将项目中的配置文件分分类:

1、每个项目特有的配置

是指该配置只在有些项目中需要配置,或者该配置在每个项目中配置的值不同。

比如:spring.application.name每个项目都需要配置但值不一样,以及有些项目需要连接数据库而有些项目不需要,有些项目需要配置消息队列而有些项目不需要。

2、项目所公用的配置

是指在若干项目中配置内容相同的配置。比如:redis的配置,很多项目用的同一套redis服务所以配置也一样。swagger的配置,log的配置等等

另外还需要知道nacos如何去定位一个具体的配置文件,即:namespace、group、dataid.

1、通过namespace、group找到具体的环境和具体的项目。

2、通过dataid找到具体的配置文件,dataid有三部分组成

比如:content-service-dev.yaml配置文件 由(content-service)-(dev). (yaml)三部分组成

content-service:第一部分,它是在application.yaml中配置的应用名,即spring.application.name的值。

dev:第二部分,它是环境名,通过spring.profiles.active指定,

Yaml: 第三部分,它是配置文件 的后缀,目前nacos支持properties、yaml等格式类型,本项目选择yaml格式类型。

所以,如果我们要配置content-service工程的配置文件:

在开发环境中配置content-service-dev.yaml

在测试环境中配置content-service-test.yaml

在生产环境中配置content-service-prod.yaml

我们启动项目中传入spring.profiles.active的参数决定引用哪个环境的配置文件,例如:传入spring.profiles.active=dev表示使用dev环境的配置文件即content-service-dev.yaml。

3.配置优先级

如果本地的配置和nacos的配置文件有冲突,那么,以谁的为主?

应用场景:该工程在开发环境启动一个实例,又由于开发需要,在启动一个实例,需要更改端口,但是只是开发需要,去改nacos不合理,这时候就适合在本地改动配置。

到目前为止已将所有微服务的配置统一在nacos进行配置,用到的配置文件有本地的配置文件 bootstrap.yaml和nacos上的配置文件,SpringBoot读取配置文件 的顺序如下:

image.png

引入配置文件的形式有:

1、以项目应用名方式引入

2、以扩展配置文件方式引入

3、以共享配置文件 方式引入

4、本地配置文件

1,2,3都在nacos。4在本地

各配置文件 的优先级:项目应用名配置文件 > 扩展配置文件 > 共享配置文件 > 本地配置文件。

有时候我们在测试程序时直接在本地加一个配置进行测试,比如下边的例子:

我们想启动两个内容管理微服务,此时需要在本地指定不同的端口,通过VM Options参数,在IDEA配置启动参数。

image.png

通过-D指定参数名和参数值,参数名即在bootstrap.yml中配置的server.port。

启动ContentApplication2,发现端口仍然是63040,这说明本地的配置没有生效。

这时我们想让本地最优先,可以在nacos配置文件 中配置如下即可实现。

再次启动ContentApplication2,端口为63041。

配置本地优先:


yaml

复制代码

#配置本地优先 spring: cloud: config:   override-none: true

之后再创建实例的时候,可以通过添加参数的方式去配置端口等。

如何灵活的切换配置文件?

传参:

image.png

spring.profiles.active=test还是dev还是prod等

实例
特有配置

yaml

复制代码

spring: application:   name: content-api #服务名称 datasource:   driver-class-name: com.mysql.cj.jdbc.Driver   url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false&   username: root   password: mysql cloud:   nacos:     server-addr: 192.168.101.65:8848     discovery:       namespace: devNeu       group: xuecheng-plus-project

这里在配置的时候,服务名称,server-addr和group,namespace都不能配到ncaos里,因为如果配置走,本地将无法发现nacos里的服务。

所以


yaml

复制代码

cloud:   nacos:     server-addr: 192.168.101.65:8848     discovery:       namespace: devNeu       group: xuecheng-plus-project   和   application:   name: content-api #服务名称 ​

不能配置到nacos的配置文件里。

需要拼装配置文件的例如content-api-dev.yaml里的东西在本地都不能删除。

本地配置的时候不要忘了配置config

注意区分profiles下的active的dev和自己的namespace里的

要注意区分服务注册发现和服务配置文件的信息。


yaml

复制代码

spring: application:   name: content-api #服务名称 # datasource: #   driver-class-name: com.mysql.cj.jdbc.Driver #   url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false& #   username: root #   password: mysql cloud:   nacos:     server-addr: 192.168.101.65:8848     discovery: #服务注册发现的相关配置       namespace: devNeu       group: xuecheng-plus-project     config: #配置文件的相关信息       namespace: devNeu #我的命名空间,无论是配置也好,服务也好,都在我的命名空间下       group: xuecheng-plus-project       file-extension: yaml       refresh-enabled: true profiles:   active: dev #环境名,拼接配置文件用的

注意对应配置文件的依赖

如果想用注册,就加discovery,如果想用配置中心,就加config


xml

复制代码

<!--       上报服务nacos-->        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>        </dependency> ​ <!--       nacos配置依赖--> <!--       微服务里有一个配置的客户端,去nacos定时的拉取配置-->        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>        </dependency>

结果:


ini

复制代码

2023-10-21 14:11:44,739 DEBUG [com.alibaba.nacos.client.Worker.longPolling.fixed-192.168.101.65_8848-devNeu][NacosRestTemplate.java:476] - HTTP method: POST, url: http://192.168.101.65:8848/nacos/v1/cs/configs/listener, body: {Listening-Configs=content-api-dev.yaml•xuecheng-plus-project•b1560ddf63798a362c47f567fa2516e2•devNeu•content-api.yaml•xuecheng-plus-project••devNeu•content-api•xuecheng-plus-project••devNeu•, tenant=devNeu} 2023-10-21 14:11:44,739 DEBUG [com.alibaba.nacos.client.Worker.longPolling.fixed-192.168.101.65_8848-devNeu][NacosRestTemplate.java:494] - Execute via interceptors :[com.alibaba.nacos.client.config.impl.ConfigHttpClientManager$LimiterHttpClientRequestInterceptor@403264c2] 2023-10-21 14:11:44,759 DEBUG [com.alibaba.nacos.client.Worker.longPolling.fixed-192.168.101.65_8848-devNeu][NacosRestTemplate.java:476] - HTTP method: POST, url: http://192.168.101.65:8848/nacos/v1/cs/configs/listener, body: {Listening-Configs=content-api-dev.yaml•xuecheng-plus-project•b1560ddf63798a362c47f567fa2516e2•devNeu•content-api.yaml•xuecheng-plus-project••devNeu•content-api•xuecheng-plus-project••devNeu•, tenant=devNeu}

从nacos里拿配置

接口层本身是不需要配置数据库的,但是他依赖着service层的代码,当打包启动的时候,就将service的mapper,service等代码全部依赖到接口层工程,接口层本身是不需要数据库连接的。

所以,在service层里配置数据库,在接口层去引用service工程的

service模块下的test里的bootstrap.yml里配置:


yaml

复制代码

spring: application:   name: content-service #服务名称  # datasource:  #   driver-class-name: com.mysql.cj.jdbc.Driver  #   url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false&  #   username: root  #   password: mysql cloud:   nacos:     server-addr: 192.168.101.65:8848     config: #配置文件的相关信息       namespace: devNeu #我的命名空间,无论是配置也好,服务也好,都在我的命名空间下       group: xuecheng-plus-project       file-extension: yaml       refresh-enabled: true profiles:   active: dev #环境名,拼接配置文件用的 # datasource: #   driver-class-name: com.mysql.cj.jdbc.Driver #   url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false& #   username: root #   password: mysql ​ # 日志文件配置路径 logging: config: classpath:log4j2-dev.xml ​

我们的接口工程里不需要直接配置数据库,而是去引用service的。

api工程没有数据库连接,api的nacos文件里也没有。


yaml

复制代码

#nacos配置里也注释掉datasource server: servlet:   context-path: /content port: 63040 # spring: #   datasource: #     driver-class-name: com.mysql.cj.jdbc.Driver #     url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false& #     username: root #     password: mysql

api工程里用扩展引用


yaml

复制代码

#发送请求的时候,自带/content内容,这个服务里就不用再写了 #server: # servlet: #   context-path: /content # port: 63040 #微服务配置 spring: application:   name: content-api #服务名称 # datasource: #   driver-class-name: com.mysql.cj.jdbc.Driver #   url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false& #   username: root #   password: mysql cloud:   nacos:     server-addr: 192.168.101.65:8848     discovery: #服务注册的相关配置       namespace: devNeu       group: xuecheng-plus-project     config: #配置文件的相关信息       namespace: devNeu #我的命名空间,无论是配置也好,服务也好,都在我的命名空间下       group: xuecheng-plus-project       file-extension: yaml       refresh-enabled: true       extension-configs:         - data-id: content-service-${spring.profiles.active}.yaml           group: xuecheng-plus-project           refresh: true ​ profiles:   active: dev #环境名,拼接配置文件用的 # 日志文件配置路径 logging: config: classpath:log4j2-dev.xml ​ swagger: title: "学成在线内容管理系统" description: "学成在线内容管理系统接口文档" base-package: com.xuecheng.content version: 1.0.0 enabled: true ​ ​

里的部分


yaml

复制代码

      extension-configs:         - data-id: content-service-${spring.profiles.active}.yaml           group: xuecheng-plus-project           refresh: true ​ profiles:   active: dev #环境名,拼接配置文件用的

service的nacos里的配置:


yaml

复制代码

spring: datasource:   driver-class-name: com.mysql.cj.jdbc.Driver   url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false&   username: root   password: mysql

api接口工程重启,如果能正常查询数据库,则证明配置成功。

当一个服务想要依赖另一个服务里的配置的时候,可以考虑用extension-configs:

公用配置

logging,swagger等。

公用配置,group可以当成项目名字或者分类。

将


yaml

复制代码

#logging # 日志文件配置路径 logging: config: classpath:log4j2-dev.xml


yaml

复制代码

swagger: title: "学成在线项目结构文档" description: "学成在线内容管理系统接口文档" base-package: com.xuecheng version: 1.0.0 enabled: true ​

都配置到nacos里的新建公共分组xuecheng-plus-common里

image.png

本地配置:


yaml

复制代码

#发送请求的时候,自带/content内容,这个服务里就不用再写了 #server: # servlet: #   context-path: /content # port: 63040 #微服务配置 spring: application:   name: content-api #服务名称 # datasource: #   driver-class-name: com.mysql.cj.jdbc.Driver #   url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezone=UTC&userUnicode=true&useSSL=false& #   username: root #   password: mysql cloud:   nacos:     server-addr: 192.168.101.65:8848     discovery: #服务注册的相关配置       namespace: devNeu       group: xuecheng-plus-project     config: #配置文件的相关信息       namespace: devNeu #我的命名空间,无论是配置也好,服务也好,都在我的命名空间下       group: xuecheng-plus-project       file-extension: yaml       refresh-enabled: true       extension-configs:         - data-id: content-service-${spring.profiles.active}.yaml           group: xuecheng-plus-project           refresh: true       shared-configs: #共享文件,nacos里         - data-id: swagger-${spring.profiles.active}.yaml           group: xuecheng-plus-common           refresh: true         - data-id: logging-${spring.profiles.active}.yaml           group: xuecheng-plus-common           refresh: true ​ profiles:   active: dev #环境名,拼接配置文件用的

新增:


yaml

复制代码

shared-configs:         - data-id: swagger-${spring.profiles.active}.yaml           group: xuecheng-plus-common           refresh: true         - data-id: logging-${spring.profiles.active}.yaml           group: xuecheng-plus-common           refresh: true

网关配置

pom文件:


xml

复制代码

<?xml version="1.0" encoding="UTF-8"?> <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.0</modelVersion> ​    <parent>        <groupId>com.xuecheng</groupId>        <artifactId>xuecheng-plus-parent</artifactId>        <version>0.0.1-SNAPSHOT</version>        <relativePath>../xuecheng-plus-parent</relativePath>    </parent>    <artifactId>xuecheng-plus-gateway</artifactId> ​    <dependencies> ​        <!--网关-->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-gateway</artifactId>        </dependency> ​        <!--服务发现中心-->        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>        </dependency>        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>        </dependency>        <!-- 排除 Spring Boot 依赖的日志包冲突 -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>            <exclusions>                <exclusion>                    <groupId>org.springframework.boot</groupId>                    <artifactId>spring-boot-starter-logging</artifactId>                </exclusion>            </exclusions>        </dependency> ​        <!-- Spring Boot 集成 log4j2 -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-log4j2</artifactId>        </dependency> ​ ​    </dependencies> ​    <properties>        <maven.compiler.source>8</maven.compiler.source>        <maven.compiler.target>8</maven.compiler.target>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties> ​ </project> ​

本地:

yml配置:


yaml

复制代码

#微服务配置 spring: application:   name: gateway cloud:   nacos:     server-addr: 192.168.101.65:8848     discovery:       namespace: devNeu       group: xuecheng-plus-project     config:       namespace: devNeu       group: xuecheng-plus-project       file-extension: yaml       refresh-enabled: true       shared-configs:         - data-id: logging-${spring.profiles.active}.yaml           group: xuecheng-plus-common           refresh: true profiles:   active: dev ​

nacos中:

gateway-dev.yaml

  • Path=/content/** # 这个是按照路径匹配,只要以/content/开头就符合要求,都会路由到id值(例如content-api)的微服务。

yaml

复制代码

server: port: 63010 # 网关端口 spring: cloud:   gateway: #     filter: #       strip-prefix: #         enabled: true     routes: # 网关路由配置       - id: content-api # 路由id,自定义,只要唯一即可          # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址         uri: lb://content-api # 路由的目标地址 lb就是负载均衡,后面跟服务名称         predicates: # 路由断言,也就是判断请求是否符合路由规则的条件           - Path=/content/** # 这个是按照路径匹配,只要以/content/开头就符合要求,都会路由到id值的微服务。 #         filters: #           - StripPrefix=1       - id: system-api          # uri: http://127.0.0.1:8081         uri: lb://system-api         predicates:           - Path=/system/** #         filters: #           - StripPrefix=1       - id: media-api          # uri: http://127.0.0.1:8081         uri: lb://media-api         predicates:           - Path=/media/** #         filters: #           - StripPrefix=1       - id: search-service          # uri: http://127.0.0.1:8081         uri: lb://search         predicates:           - Path=/search/** #         filters: #           - StripPrefix=1       - id: auth-service          # uri: http://127.0.0.1:8081         uri: lb://auth-service         predicates:           - Path=/auth/** #         filters: #           - StripPrefix=1       - id: checkcode          # uri: http://127.0.0.1:8081         uri: lb://checkcode         predicates:           - Path=/checkcode/** #         filters: #           - StripPrefix=1       - id: learning-api          # uri: http://127.0.0.1:8081         uri: lb://learning-api         predicates:           - Path=/learning/** #         filters: #           - StripPrefix=1       - id: orders-api          # uri: http://127.0.0.1:8081         uri: lb://orders-api         predicates:           - Path=/orders/** #         filters: #           - StripPrefix=1

503报错: 服务不可用。

服务不是立即启动完毕,nacos就可以发现服务,需要等30s以上,有一个窗口期。

nacos注册中心集群的搭建以及网关 Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。l 性能强劲:是第一代网关Zuul的1.6倍l 功能强大:内置了很多实用的功能,例如转发、监控、限流等l 设计优雅,容易扩展. 阅读详情

相关推荐

微服务入门(Nacos,Feign,网关Zuul)

日志级别尽量用basic使用HttpClient或OKHttp代替URLConnection引入feign-httpClient依赖配置文件开启httpClient功能,设置连接池参数。

weixin_45773628的博客 3126

Gateway+nacos动态网关配置

/获取路由对象,被网关反序列化成List4.配置格式: JSON。//配置不需要加注释。

别浪 4171

.NET CORE微服务之Nacos

背景:当在微服务项目中不同模块之间需要实现服务调用时,如何实现服务注册与发现?Nacos是一个由阿里巴巴开源的动态服务发现、配置管理和服务管理平台,它特别适用于微服务架构。服务发现与注册:Nacos提供了服务注册和发现的机制,使得在微服务架构中的各个服务能够相互识别和通信。配置管理:它允许动态地管理和共享配置信息,支持基于命名空间、分组和数据ID的配置组织方式。高可用性:Nacos设计用于承受大规模的服务访问压力,能够在高并发场景下保持稳定运行。易用性。

m0_59178355的博客 4075

nacos网关

总之,这段代码设置了Spring Cloud Gateway 的跨域规则,并定义了一条路由规则,将所有以 "/wemedia" 开头的请求转发到了 "leadnews-wemedia" 这个服务集群,并在转发之前删除掉请求路径的第一个前缀。这段配置看起来是用于配置某个应用的配置中心的动态配置刷新(Dynamic Configuration Refresh)的一部分。当配置中心的配置发生变化时,带有这个标志的配置文件可以被动态地刷新,应用程序不需要重新启动即可应用新的配置。账号密码均为nacos。

weixin_67573348的博客 1186

基于若依搭建微服务nacos版本(ruoyi-Cloud前后端分离)

说明:本文介绍基于Ruoyi-Cloud前后端分离nacos版本的微服务从0到1的搭建过程,是基于官方文档的补充说明,需要结合Ruoyi-Cloud的官方文档 https://doc.ruoyi.vip/ruoyi-cloud/如果直接查看官方文档便可成功部署,推荐直接看官方文档。以下,我将从自己搭建安装过程中,遇到的坑和bug做详细补充说明,主要涵盖以下几个方面:1、前置环境搭建(重要):主要包含nacos、redis。2、运行系统:主要包含前后端运行,以及运行过程中的关键确认点。

Liu_Arvin的芝士小栈 9197

微服务架构: 基于nacos注册中心的Zuul网关实现

一. 为什么需要网关 在微服务架构设计中,通常会有若干个服务提供者。例如一个券商系统,会有用户系统、开户系统、资讯系统、交易系统等多个服务,而每个服务数量会最着集群部署会变得越来越庞大和复杂。客户端在调用后端系统API时,可能会从多个微服务接口中聚合数据,每个服务又是集群化部署,增加了客户端的复杂性。存在跨域请求的情况,还需要考虑接口鉴权、防火墙/浏览器不友好的协议等影响。网关的作用这时候就显得比较重要。网关对外暴露聚合API,屏蔽内部微服务的变动,保证整个系统的稳定性。它还可以做统一鉴权,监控监测、协议

tornyLin的博客 5006

Spring Cloud + Nacos 入门教程通过一个商品-订单-库存小项目,手把手学会微服务核心组件

本文介绍了一个基于Spring Cloud Alibaba的微服务实践项目,通过商品-订单-库存系统演示微服务核心组件。项目包含四个微服务:商品服务、库存服务(集成Nacos配置中心)、订单服务(使用OpenFeign调用其他服务)和网关服务(Spring Cloud Gateway)。教程详细说明了环境准备、Nacos注册中心配置、各服务启动流程及测试验证方法,并分析了服务注册发现、配置中心、服务调用和API网关的核心原理。项目采用内存存储简化学习,最后提供了常见问题排查指南,帮助开发者快速掌握微服务基础

2401_86266665的博客 250

【1.3 API服务网关(SpringCloudGateway)】Nacos下发路由配置实现Spring Cloud Gateway的动态路由

Spring Cloud Gateway作为所有请求流量的入口,在实际生产环境中为了保证高可靠和高可用,尽量避免重启,需要实现Spring Cloud Gateway动态路由配置。

奶爸的编程之路,也就一周冷个三天 2103

从零搭建 Spring Cloud 微服务项目:注册中心 + 网关 + 配置中心全流程

本文面向具备 Java 基础与 Spring Boot 实战经验的开发者,以 Spring Cloud Alibaba 生态为核心,从零搭建包含注册中心、API 网关、配置中心的微服务项目,全程附带可运行代码与实操说明,读者可边读边动手实现。

lbbxmx111的博客 2833

搭建spring-cloud-alibaba微服务项目:springBoot服务+nacos注册中心+nacos配置中心+feign服务交互+gateway网关

cloud-alibaba微服务搭建

yang_zeng的博客 2034

彻底卸载Ubuntu双系统,并完美回收100G空间给D盘

本文记录了安全卸载Ubuntu双系统并回收磁盘空间的全过程。作者首先通过Windows命令行彻底清除Ubuntu启动项,避免GRUB引导报错;随后在磁盘管理中删除Linux分区,将100G未分配空间合并至相邻的D盘。针对C盘空间不足问题,作者采用Dism++清理系统文件,并将用户文档、聊天记录等迁移至扩容后的D盘。最终实现了引导纯净、空间合理分配的目标,特别强调分区扩展必须遵循"相邻原则",建议通过间接迁移而非直接扩容来优化系统盘空间管理。

2403_85993278的博客 1512

网关 + Nacos配置管理

GatewayFilter:路由过滤器,作用于任意指定的路由,默认不生效,要陪知道路由后生效。GlobalFilter(常用):全局过滤器,作用范围是所有路由;声明后自动生效。@Component@Override// 获取请求// 过滤器业务处理(登录校验逻辑...)if(...) {// 拦截// 放行// 控制过滤器执行顺序@Overridereturn 0;// 值越小,优先级越高。

qq_57882997的博客 2732

DeepLearningTool-深度学习分类-和HALCON的详细过程

损失函数:衡量预测误差,用于模型优化。混淆矩阵:评估分类模型性能,提供详细预测结果分析。两者结合使用,可以全面评估和优化模型。过拟合:模型过于复杂,捕捉了噪声,表现为训练集误差低,测试集误差高。欠拟合:模型过于简单,无法捕捉数据模式,表现为训练集和测试集误差都高。调整参数过拟合:简化模型、增加数据、使用正则化、早停、Dropout。欠拟合:增加模型复杂度、特征工程、增加训练时间、调整学习率、使用集成方法。通过合理调整参数和方法,可以有效避免过拟合和欠拟合,提升模型性能。

weixin_36672036的博客 6180

微服务网关 Soul搭建和集成SpringCloud+Nacos案例(二)

微服务网关 Soul搭建和集成SpringCloud Nacos案例(二)前情回顾Soul接入Spring Cloud + Nacos应用一、接入架构图二、搭建 Spring Cloud + Nacos 示例项目、 前情回顾 在微服务网关 Soul搭建和集成SpringCloud Nacos案例(一)中,主要讲解了Soul的搭建工作,在接下来的内容中,将要讲解关于SpringCloud + Nacos使用Soul网关和Soul网关的限流、熔断。 Soul接入Spring Cloud + Nacos应用 一、

oracl_10g的博客 2452

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

ACGkaka的博客 2万+

从DeepMimic到虚拟偶像:用动作捕捉数据训练AI跳舞的完整流程(附Blender插件配置)

本文详细介绍了如何利用DeepMimic的深度强化学习框架,将动作捕捉数据转化为虚拟偶像或游戏角色的舞蹈动作。从核心的模仿学习理念、PyBullet环境搭建、策略网络与奖励函数设计,到数据处理、训练技巧(如参考状态初始化),最后讲解了如何将训练好的AI模型集成到Blender和Unity等工具中,实现从数据到实时驱动角色的完整流程。

weixin_29054399的博客 501

springcloud项目搭建教程【详细版】

本文详细介绍了如何搭建一个SpringCloud项目,这是一个基于微服务架构的开发框架。SpringCloud项目由多个模块组成,每个模块都是一个服务,每个服务又可以看作是一个SpringBoot项目。在搭建过程中,我们使用Maven的子父模块管理项目。

阿东的故事 1万+

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

MicroChip的SmartFusion2的M2S090芯片的全流程开发环境搭建和Demo设计

qq_45806640的博客 454

苍穹外卖项目:从Nacos配置优化到Gateway网关搭建实战

本文介绍了苍穹外卖后端工程中微服务Nacos配置优化和Spring Cloud Gateway网关搭建的关键步骤。针对Nacos启动报错问题,通过调整配置文件加载逻辑,将连接信息置于主配置中解决"endpoint is blank"错误;同时在父pom统一管理依赖版本以避免冲突。网关搭建部分详细说明了创建网关模块和配置pom.xml的注意事项,特别强调需禁用spring-boot-starter-web依赖。配置优化后验证了服务在Nacos控制台的可视化效果,为微服务架构提供了稳定的基础

WILK的博客 1014

踩遍Windows所有坑:Codex CLI桌面端+命令行双环境安装避坑实战

Windows下装Codex CLI的坑,本质上都是Windows本身的路径、环境变量、权限、编码这些历史遗留问题,和工具本身关系不大。只要避开中文路径、正确配置PATH、注意终端环境差异,其实安装非常简单。这套双环境方案配好之后,桌面端适合可视化调试、多会话管理,终端适合嵌入编辑器、脚本调用,一套配置两边通用,体验还是很流畅的。按照上面的流程走,基本不会出大问题,就算出问题也能在排查表里找到对应解法。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 297

内存越界一定会导致程序崩溃吗?详解内存越界

本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。

dvlinker的技术专栏 2万+

Nacos配置中心与微服务网关:打造高效架构的两大利器

在当今的微服务架构中,网关和配置中心是实现高效、灵活服务管理的关键组件。微服务网关作为系统的统一入口,负责请求路由、认证、限流等功能,而Nacos配置中心则为微服务提供动态配置管理,支持服务发现、配置更新等功能。本文将深入探讨微服务网关的作用、选型要点,以及Nacos配置中心的使用与优势,帮助读者快速掌握如何在微服务架构中高效利用这些工具。

qq_51749909的博客 1740

视图库对接系列(GA-T 1400)一、简单介绍

GA/T 1400《公安视频图像信息应用系统》 是我们需要参考看看的相关文档,里面有对应的标准和介绍,没有这个文档的话可以加群找我要。群的话 我放在最下面了。我们先简单想几个问题, 也就是这个协议主要干什么用的,为什么要有, 能做什么。

qq_37716298的博客 4282

网关Gateway与Nacos

在一个项目中如果有很多更多的微服务,那么由前端直接请求微服务的方式会存在弊端,前端对每个请求地址都配置绝对路径,非常不利于系统维护,比如下边代码中请求系统管理服务的地址使用的是localhost当系统上线后这里需要改成公网的域名,如果这种地址非常多则非常麻烦。基于这个问题可以采用网关来解决,如下图:那么基于网关,前端直接请求微服务的地址只需要指定每个接口的相对路径而且后端也可以将访问微服务的地址改为访问网关的地址,然后由网关进行路由。

m0_71106830的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

什么是微服务、微服务如何实现Eureka,网关是什么,nacos是什么

什么是微服务,如何使用、微服务如何实现Eureka,网关是什么,如何实现,nacos是什么,如何实现

m0_68597716的博客 2137

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

微服务-网关、配置热更新、动态路由

网关、网关登录校验、配置管理、配置热更新、动态路由

hello77的blogggg 祝你得偿所愿 1457

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘globalTransa
下一篇: 分布式文件系统及Minio配置及测试
happystudy_neu
博客等级 码龄4年 1140粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值