微服務面試題:配置中心

🧑 博主簡介: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.pswp.cn/news/899800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899800.shtml
英文地址,請注明出處:http://en.pswp.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…