微服務相關問題(2)

1、Spring Cloud相關常用組件

注冊中心(nacos、Eureka等)、負載均衡(Ribbon、LoadBalancer)、遠程調用(feign)、服務熔斷(Sentinel、Hystrix)、網關(Gateway)

2、nacos與Eureka的區別

相同:

  • 都支持服務注冊和服務拉取
  • 都支持服務提供者心跳方式做健康檢測

區別:

  • nacos支持服務端主動檢測提供者狀態:臨時實例采用心跳模式,非臨時實例采用主動檢測模式。
  • 臨時實例心跳異常會被剔除,非臨時實例不會。
  • nacos支持服務列表變更的消息推送,服務列表更新及時。
  • nacos集群默認采用AP模式(高可用模式),當集群中存在非臨時實例時,采用CP模式(強一致模式),Eureka采用AP方式。
  • nacos還支持配置中心,Eureka只有注冊中心。

3、服務雪崩

服務雪崩:一個服務失敗,導致整條鏈路的服務都失敗的情形

解決方式:

  • 服務降級(針對某個接口):服務自我保護的一種方式,或者保護下游服務的一種方式,用于確保服務不會受到請求突增影響變得不可用,確保服務不會崩潰,一般在實際開發中與feign接口整合,編寫降級邏輯。
  • 服務熔斷(針對整個服務):默認關閉,需要手動打開,如果檢測到10秒內請求的失敗率超過一定比率(如50%),就會觸發熔斷機制,之后每隔5秒重新嘗試請求微服務,如果微服務不能響應,繼續走熔斷機制。如果服務可達,則關閉熔斷機制,恢復正常請求

4、微服務的監控——skywalking

skywalking:一個分布式系統的應用程序性能監控工具,提供了完善的鏈路追蹤能力。

skywalking主要可以監控接口、服務、物理實例的一些狀態。特別是在壓測的時候可以看到眾多服務的中哪些服務和接口比較慢,我們可以針對性的分析和優化。

skywalking還可以設置告警規則,特別是在項目上線后,如果報錯,我們分別設置了可以給相關負責人發短信和發郵件,第一時間知道bug,第一時間修復。

5、微服務限流

限流實現方式:tomacat:可以設置最大連接數(一般在單體項目中使用),nginx:漏桶算法,網關:令牌桶算法,自定義攔截器。

nginx限流:

基于客戶端IP:

語法:limit_req_zone key zone rate

key:定義限流對象,binary _remote_addr就是一種key,基于客戶端ip限流方式。

zone:定義共享存儲區來存儲訪問信息,10m可以存儲16wip地址訪問信息。

rate:最大訪問速率,rate=10r/s,表示每秒最多請求10個請求。

burst=20,相當于桶的大小。nodelay:快速處理。

基于控制并發數:

語法一樣,還是上面這個:limit_req_zone key zone rate。

對應的key變為: $binary_remote_addr,表示限制單個IP同時最多能持有多少個連接。

網關限流:

yml配置文件中,微服務路由設置添加局部過濾器RequestRateLimiter。默認是使用redis的連接去存儲令牌。

6、分布式事務

CAP定理:CAP是一致性(consistency)、可用性(availability)、分區容錯性(partition tolerance)的首字母縮寫

分布式系統節點之間肯定是需要網絡連接的,分區(P)是必然存在的。

如果保證訪問的高可用性,可以持續對外提供服務,但是不能保證數據的強一致性,那這種就是AP。如果保證訪問數據的強一致性(C),那么就要放棄高可用性,這種就是CP。

BASE理論是對CAP的一種解決思路,包含三個思想。

Basically Available(基本可用):分布式系統出現故障時,允許損失部分可用性,即保證核心可用。

Soft State (軟狀態):在一定時間內,允許出現中間狀態,比如臨時的不一致狀態。

Eventually Consistent(最終一致性):雖然無法保證強一致性,但是在軟狀態結束后,最終達到數據一致。

7、分布式事務解決方案

常用解決方案:seata框架(XA、AT、TCC)、MQ。

seata框架:

該框架中用三個重要角色:

TC(事務協調者):維護全局和分支事務狀態,協調全局事務提交或回滾。

TM(事務管理器):定義全局事務的范圍,開始全局事務、提交或回滾全局事務。

RM(資源管理器):管理分支事務處理的資源,與TC交談以注冊分支事務和報告分支事務的狀態,并驅動分支事務提交或回滾。

這里的XA模式就是上面提到的CP模式(數據強一致性)。

AT模式就是上面提到的AP模式(高可用性),底層使用undo log實現。

TCC模式也是AP模式,使用try、confirm、cancel進行事務操作。

MQ:

這種一般時保證高可用,對數據強一致沒有效果。

8、分布式服務的接口冪等性的設計

冪等:多次調用方法或接口不會改變業務狀態,可以保證重復調用的結果和單次調用的結果一致。

解決方案:數據庫唯一索引(新增操作時)、token+redis(新增、修改都可以解決)、分布式鎖(也可以解決新增、修改時的冪等性問題)

9、分布式任務調度

這里主要介紹xxl-job。

xxl-job:解決集群任務重復執行的問題、cron表達式定義靈活、定時任務失敗了,重試和統計、任務量大、分片執行。

xxl-job的路由策略:大概有十種:輪詢、隨機、第一個(固定找第一個實例執行)、最后一個(固定找最后一個實例執行)、一致性hash(按照hash算法固定選擇某一個實例,且所有任務均勻散列在不同實例上)、最不經常使用、最近最久未使用、故障轉移(當去執行的實例出現故障,則選擇新的健康的實例去執行)、忙碌轉移、分片廣播。

xxl-job任務執行失敗怎么解決:

故障轉移+失敗重試,查看日志分析——>郵件警告

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914903.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安全初級2

一、作業要求 1、xss-labs 1~8關 2、python實現自動化sql布爾育注代碼優化(二分查找) 二、xss-labs 1~8關 1、準備 打開小皮面板,啟動MySQL和apacher 下載 xss-labs,并解壓后放到 phpstudy_pro 的 WWW 目錄下,重命名為 xss-labs 訪問鏈…

基礎算法題

基礎算法題 鏈表 1.1反轉鏈表 描述: 描述 給定一個單鏈表的頭結點pHead(該頭節點是有值的,比如在下圖,它的val是1),長度為n,反轉該鏈表后,返回新鏈表的表頭。 數據范圍: 0≤�≤…

Android 15 源碼修改:為第三方應用提供截屏接口

概述 在 Android 系統開發中,有時需要為第三方應用提供系統級的截屏功能。本文將詳細介紹如何通過修改 Android 15 源碼中的 PhoneWindowManager 類,實現一個自定義廣播接口來觸發系統截屏功能。 修改方案 核心思路 通過在系統服務 PhoneWindowManager 中注冊自定義廣播監…

20250717 Ubuntu 掛載遠程 Windows 服務器上的硬盤

由 DeepSeek 生成,方法已經驗證可行。 通過網絡掛載Windows共享硬盤(SMB/CIFS) 確保網絡共享已啟用: 在Windows電腦上,右鍵點擊目標硬盤或文件夾 → 屬性 → 共享 → 啟用共享并設置權限(至少賦予讀取權限&…

深度學習圖像增強方法(二)

三、直方圖均衡化 1. 普通直方圖均衡化 直方圖均衡化的原理是將圖像的灰度直方圖展平,使得每個灰度級都有更多的像素分布,從而增強圖像的對比度。具體步驟如下: 計算灰度直方圖:統計圖像中每個灰度級的像素數量。 計算累積分布函數(CDF):計算每個灰度級的累積概率。 映…

QT——信號與槽/自定義信號與槽

1 信號與槽基本介紹 提出疑問,界面上已經有按鍵了,怎么操作才能讓用戶按下按鍵后有操作上的反應呢? 在 Qt 中,信號和槽機制是一種非常強大的事件通信機制。這是一個重要的概念,特別是對于初學者來說,理解它…

Spring原理揭秘--Spring的AOP

在這之前我們已經介紹了AOP的基本功能和概念,那么當AOP集成到spring則會發生改變。Spring AOP 中的Joinpoint:之前提高了很多Joinpoint的類型,但是在spring中則只會有方法級別的Joinpoint,像構造方法,字段的調用都沒適…

C++學習筆記五

C繼承//基類 class Animal{};//派生類 class Dog : public Animal{};#include<iostearm> using namespace std;//基類 class Shape{public:void setwidth(int w){width w;}void setheight(int h){height h;}protected:int width;int height;}//派生類 class Rectangle …

AndroidStudio環境搭建

一、AndroidStudio下載 正常百度出來的站會自動翻譯成中文&#xff0c;導致歷史版本的界面總是顯示不出可下載的地方&#xff0c;點擊成切回英文&#xff0c;就能看出了。 歷史版本&#xff1a;https://developer.android.google.cn/studio/archive

Java大廠面試實錄:從Spring Boot到AI大模型的深度技術拷問

場景&#xff1a;互聯網大廠Java后端面試 面試官&#xff08;嚴肅&#xff09;&#xff1a;小曾&#xff0c;請坐。今天主要考察Java后端技術棧&#xff0c;包括微服務、大數據、AI等。我們先從簡單問題開始。 小曾&#xff08;搓手&#xff09;&#xff1a;好嘞&#xff01;面…

深入解析Hadoop中的HDFS架構設計

HDFS概述與核心設計原則作為Hadoop生態系統的基石&#xff0c;HDFS&#xff08;Hadoop Distributed File System&#xff09;是一種專為大規模數據處理而設計的分布式文件系統。它的核心設計理念源于對互聯網時代數據特征的深刻洞察——數據規模呈指數級增長&#xff0c;而硬件…

ota之.加密算法,mcu加密方式

一、ota之.加密算法&#xff0c;mcu加密方式 前面一篇文章&#xff0c;講了soc的加密方式&#xff0c;但是soc資源充足&#xff0c;mcu沒有&#xff0c;所以不會用openss生成公私鑰 切計算哈希用rsa256位。 ECC&#xff08;橢圓曲線加密&#xff09; 是一種非對稱加密算法&…

LangChain面試內容整理-知識點23:實戰案例:檢索增強生成(RAG)系統

檢索增強生成(Retrieval-Augmented Generation, RAG)是一種將LLM與外部知識庫結合的方法,通過實時檢索相關信息來輔助生成答案。這極大緩解了LLM“封閉知識”過期或不足的問題。LangChain非常適合構建RAG系統,因為它提供了文檔加載、向量存儲、檢索接口、LLM組合的一站式方…

探索阿里云ESA:開啟邊緣安全加速新時代

阿里云 ESA 是什么&#xff1f;阿里云 ESA&#xff0c;全稱邊緣安全加速&#xff08;Edge Security Acceleration&#xff09; &#xff0c;其前身為全站加速 DCDN&#xff08;Dynamic Content Delivery Network&#xff09;。在 2024 年 9 月 30 日&#xff0c;阿里云完成了這…

醋酸鈰:賦能科技創新的稀土之力

一、什么是醋酸鈰醋酸鈰是鈰元素與醋酸根離子形成的化合物。鈰作為稀土元素中的重要一員&#xff0c;廣泛應用于材料科學、催化劑、電子產品等領域。醋酸鈰以無色結晶或淺黃色結晶的形式存在&#xff0c;是鈰的有機鹽之一。它不僅具有穩定的化學性質&#xff0c;而且在某些特定…

數據結構之普利姆算法

前言&#xff1a;Prim算法是圖論中的算法&#xff0c;用來生成圖的最小生成樹。本篇文章介紹算法的流程&#xff0c;實現思想&#xff0c;和具體代碼實現&#xff0c;使用c語言。學習需要輸出才能理解的更透徹&#xff0c;所以說堅持寫文章&#xff0c;希望可以用自己的方式把一…

構建強大的物聯網架構所需了解的一切

數據正驅動著當今的商業發展&#xff0c;而物聯網&#xff08;IoT&#xff09;則有助于為企業的增長和創新開辟新的機遇。麥肯錫的研究表明&#xff0c;全球數據在四年內實現了驚人的 7 倍增長。隨著越來越多的物聯網設備進入市場&#xff0c;更多企業開始需要強大的物聯網架構…

java之json轉excel生成

背景 業務為實現自定義樣式excel的導出&#xff0c;常規的做法就是根據數據在代碼中進行類似模版的配置&#xff1b;這樣的體驗不是很好&#xff0c;只要用戶改變下樣式的設置不用代碼改動就能實現自定義excel的導出更加靈活。 以下是具體實現 pom依賴 <dependency><g…

新版本Cursor中配置自定義MCP服務器教程,附MCP工具開發實戰源碼

在 Cursor 中配置自定義 MCP 服務器&#xff1a;打造你的 AI 開發工具鏈 引言 隨著 AI 編程助手的普及&#xff0c;開發者們越來越希望能夠定制化自己的開發環境。Cursor 作為一款強大的 AI 編程編輯器&#xff0c;提供了 Model Context Protocol (MCP) 支持&#xff0c;新版本…

前端面試十二之vue3基礎

一、ref和reactive在 Vue 3 中&#xff0c;ref 和 reactive 是兩種主要的響應式數據創建方式&#xff0c;它們各有特點和適用場景。1.refref 主要用于創建單個值的響應式引用&#xff0c;通常用于基本類型數據&#xff0c;如數字、字符串等。使用 ref 創建的引用對象可以通過 .…