微服务面试题:配置中心

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

微服务面试题:配置中心

1. 为什么微服务需要配置中心?

微服务架构中的每个服务通常都需要一些配置信息,例如数据库连接地址、服务端口、日志级别等。这些配置可能因为不同环境、不同部署实例或者动态运行时需要进行调整和管理。

微服务的实例一般非常多,如果每个实例都需要一个个地去做这些配置,那么运维成本将会非常大,这时候就需要一个集中化的配置中心,去管理这些配置。

2. SpringCloud 可以选择哪些配置中心?

和注册中心一样,SpringCloud 也支持对多种配置中心的集成。常见的配置中心选型包括:

  1. Spring Cloud Config:官方推荐的配置中心,支持将配置文件存储在 Git、SVN 等版本控制系统中,并提供 RESTful API 进行访问和管理。
  2. ZooKeeper:一个开源的分布式协调服务,可以用作配置中心。它具有高可用性、一致性和通知机制等特性。
  3. Consul:另一个开源的分布式服务发现和配置管理工具,也可用作配置中心。支持多种配置文件格式,提供健康检查、故障转移和动态变更等功能。
  4. Etcd:一个分布式键值存储系统,可用作配置中心。它使用基于 Raft 算法的一致性机制,提供分布式数据一致性保证。
  5. Apollo:携程开源的配置中心,支持多种语言和框架。提供细粒度的配置权限管理、配置变更通知和灰度发布等高级特性,还有可视化的配置管理界面。
  6. Nacos:阿里巴巴开源的服务发现、配置管理和服务管理平台,也可以作为配置中心使用。支持服务注册与发现、动态配置管理、服务健康监测和动态 DNS 服务等功能。

3. Nacos 配置中心的原理了解吗?

配置中心,说白了就是一句话:配置信息的 CRUD。

在这里插入图片描述
具体的实现大概可以分成这么几个部分:

  1. 配置信息存储:Nacos 默认使用内嵌数据库 Derby 来存储配置信息,还可以采用 MySQL 等关系型数据库。
  2. 注册配置信息:服务启动时,Nacos Client 会向 Nacos Server 注册自己的配置信息,这个注册过程就是把配置信息写入存储,并生成版本号。
  3. 获取配置信息:服务运行期间,Nacos Client 通过 API 从 Nacos Server 获取配置信息。Server 根据键查找对应的配置信息,并返回给 Client。
  4. 监听配置变化:Nacos Client 可以通过注册监听器的方式,实现对配置信息的监听。当配置信息发生变化时,Nacos Server 会通知已注册的监听器,并触发相应的回调方法。

4. Nacos 配置中心长轮询机制?

一般来说客户端和服务端的交互分为两种:推(Push)拉(Pull),Nacos 在Pull的基础上,采用了长轮询来进行配置的动态刷新。

在长轮询模式下,客户端定时向服务端发起请求,检查配置信息是否发生变更。如果没有变更,服务端会"hold"住这个请求,即暂时不返回结果,直到配置发生变化或达到一定的超时时间。

具体的实现过程如下:

在这里插入图片描述

  1. 客户端发起 Pull 请求,服务端检查配置是否有变更。如果没有变更,则设置一个定时任务,在一段时间后执行,并将当前的客户端连接加入到等待队列中。
  2. 在等待期间,如果配置发生变更,服务端会立即返回结果给客户端,完成一次"推送"操作。
  3. 如果在等待期间没有配置变更,等待时间达到预设的超时时间后,服务端会自动返回结果给客户端,即使配置没有变更。
  4. 如果在等待期间,通过 Nacos Dashboard 或 API 对配置进行了修改,会触发一个事件机制,服务端会遍历等待队列,找到发生变更的配置项对应的客户端连接,并将变更的数据通过连接返回,完成一次"推送"操作。

通过长轮询的方式,Nacos 客户端能够实时感知配置的变化,并及时获取最新的配置信息。同时,这种方式也降低了服务端的压力,避免了大量的长连接占用内存资源。

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

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

相关文章

系统思考反馈

最近交付的都是一些持续性的项目,越来越感觉到,系统思考和第五项修炼不只是简单的一门课程,它们能真正融入到我们的日常工作和业务中,帮助我们用更清晰的思维方式解决复杂问题,推动团队协作,激发创新。 特…

MMD 转 STL,拓宽 3D 模型应用边界:方法与门道

在 3D 建模与打印领域,不同格式文件间的转换是常见需求。MMD(MikuMikuDance)模型文件格式常用于动漫角色的舞蹈创作等,而 STL(Stereolithography)格式则广泛应用于 3D 打印与计算机辅助设计(CAD…

C语言 【初始指针】【指针一】

引言 思绪很久,还是决定写一写指针,指针这块内容很多,也不是那么容易说清楚,这里尽可能写地详细,让大家理解指针。(未完序) 一、内存和地址 在讲指针前,需要有一个对内存和地址的认…

深入理解pthread多线程编程:从基础到生产者-消费者模型

前言 在多核处理器普及的今天,多线程编程已成为提高程序性能的重要手段。POSIX线程(pthread)是Unix/Linux系统下广泛使用的多线程API。本文将系统介绍pthread的关键概念,包括线程初始化、死锁预防、递归锁使用,并通过…

springboot 对接马来西亚数据源API等多个国家的数据源

使用Spring Boot对接StockTV全球金融数据API指南 StockTV提供了覆盖股票、外汇、期货和加密货币的全球化金融数据接口。本文将通过Spring Boot实现对这些API的快速对接,并提供完整的代码示例。 一、前期准备 1. 获取API Key 访问StockTV官网联系客服获取API Key…

软件测试常用设计模式

设计模式的重要原则就是:高内聚、低耦合;通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。 数据驱动测试:Data Driven Testing,简称DDT; 数据驱动指的是从数据文件(如数据库、Ex…

基于 Fluent-Bit 和 Fluentd 的分布式日志采集与处理方案

#作者:任少近 文章目录 需求描述系统目标系统组件Fluent BitFluentdKafka 数据流与处理流程日志采集日志转发到 Fluentd日志处理与转发到 KafkaKafka 作为消息队列 具体配置Fluent-Bit的CM配置Fluent-Bit的DS配置Fluentd的CM配置Fluentd的DS配置Kafka查询结果 需求…

正则表达式(Regular Expression,简称 Regex)

一、5w2h(七问法)分析正则表达式 是的,5W2H 完全可以应用于研究 正则表达式(Regular Expressions)。通过回答 5W2H 的七个问题,我们可以全面理解正则表达式的定义、用途、使用方法、适用场景等&#xff0c…

爬虫获取1688关键字搜索接口的实战指南

在当今电商行业竞争激烈的环境下,数据的重要性不言而喻。1688作为国内领先的B2B电商平台,拥有海量的商品信息,这些数据对于商家的市场分析、选品决策、价格策略制定等都有着重要的价值。本文将详细介绍如何通过爬虫技术获取1688关键字搜索接口…

如何快速解决django存储session变量时出现的django.db.utils.DatabaseError错误

我们在学习django进行web编程的时候,有时需要将一些全局变量信息存储在session中,但使用过程中,却发现会引起数据库的报错。通过查看django源码信息,发现其对session信息进行了ORM映射,如果数据库中不存在对应的表信息…

C语言复习--assert断言

assert.h 头⽂件定义了宏 assert() ,⽤于在运⾏时确保程序符合指定条件,如果不符合,就报错终止运行。这个宏常常被称为“断⾔”。 assert(p ! NULL); 代码在程序运⾏到这⼀⾏语句时,验证变量 p 是否等于 NULL 。如果确实不等于 NU…

STL新增内容

文章目录 C11 中的 STL 新增内容容器算法 C14 中的 STL 新增内容容器算法 C17 中的 STL 新增内容容器算法 C20 中的 STL 新增内容容器算法 C11 中的 STL 新增内容 容器 std::array:这是一个固定大小的数组容器,和原生数组类似,但具备更好的…

C#测试Excel开源组件ExcelDataReader

使用微软的com组件Microsoft.office.Interop.Excel读写Excel文件虽然可用,但是列多、行多的时候速度很慢,之前测试过Sylvan.Data.Excel包的用法,如果只是读取Excel文件内容的话,还可以使用ExcelDataReader包,后者是C#开…

位置编码汇总 # 持续更新

看了那么多还没有讲特别好的,GPT老师讲的不错关于三角函数编码。 一、 手撕transformer常用三角位置编码 GPT说:“低维度的编码(例如,第一个维度)可以捕捉到大的位置差异,而高维度的编码则可以捕捉到小的细…

Java 模块系统深度解析

Java 模块系统深度解析 Java 模块系统(Java Platform Module System, JPMS)是 Java 9 引入的一项重要特性,它从根本上改变了 Java 应用程序的打包和依赖管理方式。本文将全面介绍 Java 模块系统的核心概念、优势及实际应用。 一、为什么需要…

蓝桥杯杯赛-日期模拟

知识点 处理日期 1. 按天枚举日期:逐天遍历起始日期到结束日期范围内的每个日期。 2. 处理闰年:正确判断闰年条件。闰年定义为:年份 满足以下任意一个条件:(闰年的2月只有29天) 满足下面一个条件就是闰年 1> 是 400 的倍数…

.Net中对称加密的实现

常见对称加密算法及优缺点 1. DES(Data Encryption Standard) 优点:是最早被广泛应用的加密算法,算法公开,实现简单,效率较高。缺点:密钥长度较短(56 位),在…

SQLMesh调度系统深度解析:内置调度与Airflow集成实践

本文系统解析SQLMesh的两种核心调度方案:内置调度器与Apache Airflow集成。通过对比两者的适用场景、架构设计和操作流程,为企业构建可靠的数据分析流水线提供技术参考。重点内容包括: 内置调度器的轻量级部署与性能优化策略Airflow集成的端到…

centos线程数查看

查看当前最大支持的线程数 cat /proc/sys/kernel/threads-max当前用户进程可以创建的最大线程数(包括子进程) [rootlocalhost tmp]# ulimit -u得到当前实际的线程数 [rootlocalhost tmp]# ps -eLf | wc -l统计每个进程的总线程数前20的数据 [rootloc…

【大模型】视觉语言模型:Qwen2.5-VL的使用

官方github地址:https://github.com/QwenLM/Qwen2.5-VL 目录 Qwen家族的最新成员:Qwen2.5-VL 主要增强功能 模型架构更新 快速开始 使用Transformers聊天 Docker Qwen家族的最新成员:Qwen2.5-VL 主要增强功能 强大的文档解析功能&am…