4Nacos服务配置中心

本文介绍了Nacos作为配置中心的功能和选型,详细讲解了配置中心的概念、作用,以及Nacos配置管理模型,包括命名空间、分组和服务/数据ID。文中还探讨了在微服务中如何动态获取和感知配置变化,并提供了配置中心的面试问题和答案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景分析:

        1.以后的配置都会去配置中心写,不会再去java类里写

        2.官方日志去输出,以及日志级别,读内存里的数据比读数据库里的数据快很多,可以在适当的场景打开 内存(cache).

什么是配置中心:

        存储信息的服务,配置中心最基础的功能就是存储一个键值对,配置的是可能经常变化的数据 例如/; 连接池 日志 线程池 限流熔断规则, 一般不会写到配置中心: 服务端口号,服务名 ,服务的注册地址 配置中心地址

配置中心的选型:

       在面向分布式的微服务系统中,如何通过更高效的配置管理方式,实现微服务系统架构持续“无痛”的演进,并动态调整和控制系统的运行时态,配置中心的选型和设计起着举足轻重的作用。市场上主流配置中心有Apollo(携程开源),nacos(阿里开源),Spring Cloud Config(Spring Cloud 全家桶成员)。我们在对这些配置中心进行选型时重点要从产品功能、使用体验、实施过程和性能等方面进行综合考量。本次课程我们选择nacos,此组件不仅提供了注册中心,还具备配置中心的功能。

小节面试分析

  • 什么是配置中心?(存储项目配置信息的一个服务)
  • 为什么要使用配置中心?(集中管理配置信息,动态发布配置信息)
  • 市场上有哪些主流的配置中心?(Apollo,nacos,……)

Nacos配置快速入门





业务描述

在sca-provider项目中添加一个Controller对象,例如ProviderLogController,基于此Controller中的方法演示日志级别的配置。 要基于规范去配置

面试题

List<object> list1=new ArrayLIst<String>(); 不对

List<string> list1=new ArrayLIst<Object>();  不对

List<? extend object> list1=new ArrayLIst<Integer>(); 对 上界泛型通配

List<? super  string> list1=new ArrayLIst<Object>();  对 下界泛型通配

? 代表无界通配符

概念

slf4j是基于门面模式设计的一套API

log4j和log4back是出自同一作者

权限:trace<debug<info<warn<error

设计模式:

        1.策略模式

        2.模型方法

        3.代理模式

        4.门面模式

        5.享元模式

内部感知: 是在控制台打印

外部感知:是在浏览器页面查看

小节面试分析


1.配置中心一般都会配置什么内容?(可能会经常变化的配置信息,例如连接池,日志、线程池、限流熔断规则)
2.什么信息一般不会写到配置中心?(服务端口,服务名,服务的注册地址,配置中心)
3.项目中为什么要定义bootstrap.yml文件?(此文件被读取的优先级比较高,可以在服务启动时读取配置中心的数据)
4.Nacos配置中心宕机了,我们的服务还可以读取到配置信息吗?(可以从内存,客户端获取了配置中心的配置信息以后,会将配置信息在本地内存中存储一份.)
5.微服务应用中我们的客户端如何获取配置中心的信息?(我们的服务一般首先会从内存读取配置信息,同时我们的微服务还可以定时向nacos配置中心发请求拉取(pull)更新的配置信息)
6.微服务应用中客户端如何感知配置中心数据变化?(1.4.x版本的nacos客户端会基于长轮询(指的是客户端每隔30秒会访问nacos取一次信息来更新本地信息,如果没有数据就等待超过29.5秒就不等待了)机制从nacos获取配置信息,所谓的长轮询就是没有配置更新时,会在nacos服务端的队列进行等待.)
7.服务启动后没有从配置中心获取我们的配置数据是什么原因?(依赖,配置文件名字bootstrap.yml,配置中心的dataId名字是否正确,分组是否正确,配置的名字是否正确,缩进关系是否正确,假如是动态发布,类上是否有@RefreshScope注解)
8.你项目中使用的日志规范是什么?(SLF4J)
9.你了解项目中的日志级别吗?(debug,info,error,…,可以基于日志级别控制日志的输出)
 

Nacos配置管理模型





概述

Nacos 配置管理模型由三部分构成,如图所示:

在这里插入图片描述

其中:

  • Namespace:命名空间,对不同的环境进⾏隔离,⽐如隔离开发环境和⽣产环境。
  • Group:分组,将若⼲个服务或者若⼲个配置集归为⼀组。
  • Service/DataId:某⼀个服务或配置集,一般对应一个配置文件。

空间设计的创建:

命名空间设计:

Nacos中的命名空间一般用于配置隔离,这种命名空间的定义一般会按照环境(开发,生产等环境)进行设计和实现.我们默认创建的配置都存储到了public命名空间

在这里插入图片描述

 命名空间成功创建以后,会在如下列表进行呈现。

在这里插入图片描述

 在指定命名空间下添加配置,也可以直接取配置列表中克隆,例如:

在这里插入图片描述

 克隆和创建新的配置中心这两中方式是一样的

分组设计及实现

当我们在指定命名空间下,按环境或服务做好了配置以后,有时还需要基于服务做分组配置,例如,一个服务在不同时间节点(节假日,活动等)切换不同的配置,可以在新建配置时指定分组名称

小节面试分析

  • Nacos配置管理模型的背景?(环境不同配置不同)
  • Nacos配置中的管理模型是怎样的?(namespace,group,service/data-id)
  • Nacos客户端(微服务)是否可以读取共享配置?(可以)

总结


重难点分析
配置中心的选型?

市场活跃度、稳定性、性能、易用


Nacos配置中心基本应用?

新建,修改、删除配置以后,在Nacos客户端应用配置


配置管理模型应用?

1.namespace(命名空间,对不同的环境进⾏隔离,⽐如隔离开发环境和⽣产环境)

2.group(分组,将若⼲个服务或者若⼲个配置集归为⼀组。)

3.service/dataId(某⼀个服务或配置集,一般对应一个配置文件。)
4.Nacos配置变更的动态感知。(底层原理分析)

共享配置设计及读取

        当同一个namespace的多个配置文件中都有相同的配置时,可以对这些配置存储到nacos配置中心的一个或多个指定配置文件,哪个微服务,就在服务的配置中心设置读取即可

练习

        1.本地缓存线程安全策略:乐观锁(copyonwriteArrayList),双重校验悲观锁

        2.本地缓存数据一致性策略:暂不考虑

        3.本地缓存数据淘汰策略:暂不考虑

设计一个简易tomcat用于处理客户端请求,并响应一个结果(满足http协议的字符串)给客户浏览器

        1.服务是谁(java.net.ServerSocket)

        2.客户端谁(浏览器)

        3.服务端向客户端输出数据用谁(OutputStream)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值