分布式应用配置管理,web前端框架开发实例

本文介绍了如何在SpringCloud应用中集成SpringCloudAlibabaNacosConfig,包括创建父工程、配置Nacos服务器地址、命名空间、组别,以及如何动态刷新配置。详细步骤覆盖了从新建项目到配置文件管理和测试的全过程。
摘要由CSDN通过智能技术生成

Data ID: service1.yaml

Group : TEST_GROUP

配置格式: YAML

配置内容: common:

name: service1 config

在这里插入图片描述

service2:

Namespace: c67e4a97‐a698‐4d6d‐9bb1‐cfac5f5b51c4 #开发环境

Data ID: service2.yaml

Group : TEST_GROUP

配置格式: YAML

配置内容: common:

name: service2 config

在这里插入图片描述

1.2、创建父工程


为了规范依赖的版本,这里创建父工程,指定依赖的版本。

父工程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”>

4.0.0

com.demo.nacos

nacos-config

1.0-SNAPSHOT

service1

service2

pom

<project.build.sourceEncoding>UTF‐8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF‐8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

com.alibaba.cloud

spring-cloud-alibaba-dependencies

2.1.2.RELEASE

pom

import

org.springframework.cloud

spring-cloud-dependencies

Greenwich.RELEASE

pom

import

org.springframework.boot

spring-boot-dependencies

2.1.3.RELEASE

pom

import

org.springframework.boot

spring-boot-maven-plugin

1.3、微服务service1配置


本小节,我们将演示如何使用 Spring Cloud Alibaba Nacos ConfigSpring Cloud应用中集成Nacos,通过Spring cloud原生方式快捷的获取配置内容。

Spring Cloud是什么:

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot

的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,集成最多的组件要属Netflix公司,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud Alibaba Nacos Config是什么:

Spring Cloud Alibaba Nacos Discovery是Spring Cloud Alibaba的子项目,而Spring Cloud Alibaba是阿里巴巴公司提供的开源的基于Spring cloud的微服务套件合集,它致力于提供微服务开发的一站式解决方

案,可以理解为spring cloud是一套微服务开发的 标准 ,spring cloud alibaba与spring cloud Netflix是实现。使用 Spring Cloud Alibaba方案,开发者只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。

由于Nacos是阿里的中间件,因此,若开发Spring cloud微服务应用,使用Spring Cloud Alibaba Nacos Config来集成Nacos的配置管理功能是比较明智的选择。

(1)新建项目service1

首先新增一个名为service1工程,并添加group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloudstarter-alibaba-nacos-config 的 starter。

<?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”>

nacos-config

com.demo.nacos

1.0-SNAPSHOT

4.0.0

service1

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-config

org.springframework.boot

spring-boot-starter-web

(2)bootstrap.yml配置

一般来说,spring boot的配置将在application.yml(也可以是application.properties)文件中编写, 由于使用外部配置中心,必须将原先的application.yml重命名为bootstrap.yml,bootstrap.yml如下所示:

spring.cloud.nacos.config.server-addr 指定了Nacos Server的网络地址和端口号。

server:

port: 56010 #启动端口 命令行注入

spring:

application:

name: service1 #项目名称

cloud:

nacos:

config:

server‐addr: 127.0.0.1:8848 # 配置中心地址

file‐extension: yml #dataid 的名字就是application的name加file-extension service1.yml

namespace: 20dd9cd5-8ce6-4f73-8380-dfa3074ce5a8 # 开发环境 指定具体的namespace

group: TEST_GROUP # 测试组

以上配置文件说明该应用将从地址为127.0.0.1:8848配置中心获取配置,通过以下信息定位配置集:

namespace:c67e4a97‐a698‐4d6d‐9bb1‐cfac5f5b51c4 # 开发环境

group:TEST_GROUP # 测试组

Data Id:service1.yaml

在这里插入图片描述

(3)启动配置客户端

新增Spring Boot 启动类,并增加获取配置的web访问端点/configs,通过标准的spring @Value 方式。

package com.demo.nacos.service1.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.cloud.context.config.annotation.RefreshScope;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

/**

  • Description:

  • DATE: 2022/1/26 10:23

*/

@RestController

@RefreshScope//实时刷新nacos配置中心的上下文

public class NacosController {

//通过value注解读取配置信息

@Value(“${common.name}”)

private String config1;

@GetMapping(“/configs”)

public String getConfigs(){

//读取配置信息

return config1;

}

}

1.4、微服务service2配置


service2的创建流程与service1一致:需要注意的是spring boot 启动端口要避免重复,spring.application.name为service2。

server:

port: 56020 #启动端口 命令行注入

spring:

application:

name: service2 #项目名称

cloud:

nacos:

config:

server‐addr: 127.0.0.1:8849,127.0.0.1:8850,127.0.0.1:8851 # 配置中心地址

file‐extension: yml #dataid 的名字就是application的name加file-extension service2.yml

namespace: 20dd9cd5-8ce6-4f73-8380-dfa3074ce5a8 # 开发环境 指定具体的namespace

group: TEST_GROUP # 测试组

config external configuration

1、Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新

ext‐config[0]:

data‐id: ext-config-common01.properties

2、Data Id 不在默认的组,不支持动态刷新

ext‐config[1]:

data‐id: ext-config-common02.properties

group: GLOBALE_GROUP

3、Data Id 既不在默认的组,也支持动态刷新

ext‐config[2]:

data‐id: ext-config-common03.properties

group: REFRESH_GROUP

refresh: true

分别启动service1和service2项目,并分别访问 /configs进行测试,不同项目能够获取各自的配置内容。

1.5、支持配置的动态更新


基于上面快速上手的例子,若要实现配置的动态更新,只需要进行如下改造:

// 注入配置文件上下文

@Autowired

private ConfigurableApplicationContext applicationContext;

@GetMapping(value = “/configs”)

public String getConfigs(){

return applicationContext.getEnvironment().getProperty(“common.name”);

}

在这里插入图片描述

Note 可以通过配置spring.cloud.nacos.config.refresh.enabled=false来关闭动态刷新

1.6、自定义 namespace与group配置


支持自定义 namespace的配

在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos 上 Public 这个namespace。如果需要使用自定义的命名空间,可以通过以下配置来实现:

spring:

cloud:

nacos:

config:

namespace: b3404bc0‐d7dc‐4855‐b519‐570ed34b62d7

Note:该配置必须放在 bootstrap.yml文件中。此外spring.cloud.nacos.config.namespace 的值是 namespace

对应的 id,id 值可以在 Nacos 的控制台获取。并且在添加配置时注意不要选择其他的 namespae,否则将会导致读取不到正确的配置。

支持自定义 Group 的配置

在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下, 默认使用的是 DEFAULT_GROUP 。如果需要自定义自己的 Group,可以通过以下配置来实现:

spring:

cloud:

nacos:

config:

group: DEVELOP_GROUP

Note:该配置必须放在 bootstrap.properties 文件中。并且在添加配置时 Group 的值一定要和spring.cloud.nacos.config.group 的配置值一致。

1.7、自定义扩展的 Data Id 配置


Spring Cloud Alibaba Nacos Config可支持自定义 Data Id 的配置。 一个完整的配置案例如下所示:

下边我们在service2微服务下配置扩展。

server:

port: 56020 #启动端口 命令行注入

spring:

application:

name: service2 #项目名称

cloud:

nacos:

config:

server‐addr: 127.0.0.1:8849,127.0.0.1:8850,127.0.0.1:8851 # 配置中心地址

file‐extension: yml #dataid 的名字就是application的name加file-extension service2.yml

namespace: 20dd9cd5-8ce6-4f73-8380-dfa3074ce5a8 # 开发环境 指定具体的namespace

group: TEST_GROUP # 测试组

config external configuration

1、Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新

ext‐config[0]:

data‐id: ext‐config‐common01.properties

2、Data Id 不在默认的组,不支持动态刷新

ext‐config[1]:

data‐id: ext‐config‐common02.properties

group: GLOBALE_GROUP

3、Data Id 既不在默认的组,也支持动态刷新

ext‐config[2]:

data‐id: ext‐config‐common03.properties

group: REFRESH_GROUP

refresh: true

可以看到:

  • 通过 spring.cloud.nacos.config.ext-config[n].data-id 的配置方式来支持多个 Data Id 的配置。

  • 通过 spring.cloud.nacos.config.ext-config[n].group 的配置方式自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。

  • 通过 spring.cloud.nacos.config.ext-config[n].refresh 的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。

Note : spring.cloud.nacos.config.ext-config[n].data-id 的值必须带文件扩展名,文件扩展名既可支持properties,又可以支持 yaml/yml。 此时 spring.cloud.nacos.config.file-extension 的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。

通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。

测试: 配置ext-config-common01.properties:

在这里插入图片描述

配置ext-config-common02.properties

在这里插入图片描述

配置ext-config-common03.properties

在这里插入图片描述

编写测试代码:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

完整版面试题资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了

前端实习面试的套路


回顾项目

往往在面试时,面试官根据你简历中的项目由点及面地展开问答,所以请对你做过的最好的项目进行回顾和反思。回顾你做过的工作和项目中最复杂的部分,反思你是如何完成这个最复杂的部分的。

面试官会重点问你最复杂的部分的实现方法和如何优化。重点要思考如何优化,即使你项目中没有对那部分进行优化,你也应该预先思考有什么优化的方案。如果这部分答好了,会给面试官留下很不错的印象。

重点在于基础知识

这里指的基础知识包括:前端基础知识和学科基础知识。

前端基础知识:html/css/js 的核心知识,其中 js 的核心知识尤为重要。比如执行上下文、变量对象/活动对象(VO/AO)、作用域链、this 指向、原型链等。

学科基础知识:数据结构、计算机网络、算法等知识。你可能会想前端不需要算法,那你可能就错了,在大公司面试,面试官同样会看重学生这些学科基础知识。
你可能发现了我没有提到React/Vue这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。

ics/618191877)。

前端实习面试的套路


回顾项目

往往在面试时,面试官根据你简历中的项目由点及面地展开问答,所以请对你做过的最好的项目进行回顾和反思。回顾你做过的工作和项目中最复杂的部分,反思你是如何完成这个最复杂的部分的。

面试官会重点问你最复杂的部分的实现方法和如何优化。重点要思考如何优化,即使你项目中没有对那部分进行优化,你也应该预先思考有什么优化的方案。如果这部分答好了,会给面试官留下很不错的印象。

重点在于基础知识

这里指的基础知识包括:前端基础知识和学科基础知识。

前端基础知识:html/css/js 的核心知识,其中 js 的核心知识尤为重要。比如执行上下文、变量对象/活动对象(VO/AO)、作用域链、this 指向、原型链等。

学科基础知识:数据结构、计算机网络、算法等知识。你可能会想前端不需要算法,那你可能就错了,在大公司面试,面试官同样会看重学生这些学科基础知识。
你可能发现了我没有提到React/Vue这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值