【微服務】基礎概念

1.什么是微服務

微服務其實就是一種架構風格,他提倡我們在開發的時候,一個應用應該是一組小型服務而組成的,每一個服務都運行在自己的進程中,每一個小服務都通過HTTP的方式進行互通。他更加強調服務的徹底拆分。他并不是僅局限于用java來實現,可以由不同的編程用語言進行實現,當然也可以用不同的數據庫。

它的優點顯而易見,

? 1.服務原子化拆分,獨立打包,部署和升級,保證每個微服務清晰的任務劃分,利于擴展。

? 2.微服務之間采用Restful架構風格規范接口設計,基于HTTP協議進行相互調用,發揮HTTP協議在網絡傳輸中的輕量優勢。

下面補充一下什么叫做Restful架構風格

它是基于http協議,核心概念圍繞資源,表現層,狀態轉移。

其中資源用url標識,這里的資源就是網上一切可被操作的事務,如一篇文章,一個用戶信息都可被抽象為資源。

表現層就是資源可具有多種表現形式,如xml,json等。

狀態轉移就是客戶端借助HTTP協議的標準方法(GET,POST,PUT,DELETE等)對服務端資源進行操作,實現資源狀態改變。像GET獲取資源狀態,POST創建新資源改變狀態等。

2.微服務架構遇到的問題

一旦采用微服務系統架構,就勢必會遇到這樣幾個問題:

1.這么多小服務,如何管理它們?(服務治理? 注冊中心[服務注冊 發現 剔除])

2.這么多小服務,它們之間如何通訊?(restful rpc)

3.這么多小服務,客戶端怎么訪問他們?(網關)

4.這么多小服務,一旦出現問題了,應該如何自處理?(容錯)

5.這么多小服務,一旦出現問題了,應該如何排錯?(鏈路追蹤)

所以后面對于微服務的學習,大部分就是學習各個組件來解決各種問題。

3.微服務架構的常見概念

3.1服務治理

服務治理就是進行服務的自動化管理,其核心是服務的自動注冊于發現。

服務注冊:服務實例將自身服務信息注冊到注冊中心

服務發現:服務實例通過注冊中心,獲取到注冊到其中的服務實例的信息,通過這些信息去請求他們提供的服務。

服務剔除:服務注冊中心將出問題的服務自動剔除到可用列表之外,使其不會被調用到

3.2服務調用

在微服務架構中,通常存在多個服務之間的遠程調用的需求。目前主流的遠程調用技術有基于HTTP的 RESTfu接口以及基于TCP的RPC協議。

RPC是?一種進程間通信方式。允許像調用本地服務一樣調用遠程服務。RPC框架的主要目標就是讓遠程服務調 用更簡單、透明。RPC框架負責屏蔽底層的傳輸方式、序列化方式和通信細節。開發人員在使用的時候 只需要了解誰在什么位置提供了什么樣的遠程服務接口即可,并不需要關心底層通信細節和調用過程。

Restful前面講了,這里就不重復了。

3.3服務網關

隨著微服務的不斷增多,不同的微服務一般會有不同的網絡地址,而外部客戶端可能需要調用多個服務的 接口才能完成一個業務需求,如果讓客戶端直接與各個微服務通信可能出現:

? 1.客戶端需要調用不同的ur地址,增加難度

? 2.在一定的場景下,存在跨域請求的問題

? 3.每個微服務都需要進行單獨的身份認證

針對這些問題,API網關順勢而生。

API網關字面意思是將所有API調用統一接入到API網關層,由網關層統一接入和輸出。一個網關的 基本 功能有:統一接入、安全防護、協議適配、流量管控、長短鏈接支持、容錯能力。有了網關之后,各個 API服務提供團隊可以專注于自己的的業務邏輯處理,而API網關更專注于安全、流量、路由等問題

3.4服務容錯

在微服務當中,一個請求經常會涉及到調用幾個服務,如果其中某個服務不可用,沒有做服務容錯的話, 極有可能會造成一連串的服務不可用,這就是雪崩效應。我們沒法預防雪崩效應的發生,只能盡可能去做 好容錯。服務容錯的三個核心思想是:

? 1.不被外界環境影響

? 2.不被上游請求壓垮

? 3.不被下游響應拖垮

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

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

相關文章

Linux make與makefile 項目自動化構建工具

本文章將對make與makefile進行一些基礎的講解。 假設我們要建造一座房子,建造過程涉及很多步驟,比如打地基、砌墻、安裝門窗、粉刷墻壁等。每個步驟都有先后順序,并且有些步驟可能依賴于其他步驟的完成。比如,你必須先打好地基才…

如何判斷多個點組成的3維面不是平的,如果不是平的,如何拆分成多個平面

判斷和拆分三維非平面為多個平面 要判斷多個三維點組成的面是否為平面,以及如何將非平面拆分為多個平面,可以按照以下步驟進行: 判斷是否為平面 平面方程法: 選擇三個不共線的點計算平面方程:Ax By Cz D 0檢查其…

多layout 布局適配

安卓多布局文件適配方案操作流程 以下為通過多套布局文件適配不同屏幕尺寸/密度的詳細步驟,結合主流適配策略及最佳實踐總結: 一、?創建多套布局資源目錄? ?按屏幕尺寸劃分? 在 res 目錄下創建以下文件夾(根據設備特性自動匹配&#xff…

Java 大視界 -- Java 大數據在智能農業無人機植保作業路徑規劃與藥效評估中的應用(165)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

美關稅加征下,Odoo免費開源ERP如何助企業破局?

近期,美國特朗普政府推行的關稅政策對全球供應鏈和進出口企業造成巨大沖擊,尤其是依賴中美貿易的企業面臨成本激增、利潤壓縮和合規風險。在此背景下,如何通過數字化轉型優化管理效率、降低運營成本成為企業生存的關鍵。本文以免費開源ERP系統…

go游戲后端開發25:紅中麻將規則介紹

一、游戲基礎規則介紹 在開發紅中麻將游戲之前,我們需要先了解其基礎規則。紅中麻將的牌面由 a、b、c、d 四種花色組成,其中 a、b、c 分別代表萬、條、筒,每種花色都有 1 - 9 的九種牌,每種牌各有四張,總計 36 張 4 …

Unity:平滑輸入(Input.GetAxis)

目錄 1.為什么需要Input.GetAxis? 2. Input.GetAxis的基本功能 3. Input.GetAxis的工作原理 4. 常用參數和設置 5. 代碼示例:用GetAxis控制角色移動 6. 與Input.GetAxisRaw的區別 7.如何優化GetAxis? 1.為什么需要Input.GetAxis&…

OpenCV:計算機視覺的強大開源庫

文章目錄 引言一、什么是OpenCV?1.OpenCV的核心特點 二、OpenCV的主要功能模塊1. 核心功能(Core Functionality)2. 圖像處理(Image Processing)3. 特征檢測與描述(Features2D)4. 目標檢測&#…

AI浪潮下的IT職業轉型:醫藥流通行業傳統IT顧問的深度思考

AI浪潮下的IT職業轉型:醫藥流通行業傳統IT顧問的深度思考 一、AI重構IT行業的技術邏輯與實踐路徑 1.1 醫藥流通領域的智能辦公革命 在醫藥批發企業的日常運營中,傳統IT工具正經歷顛覆性變革。以訂單處理系統為例,某醫藥集團引入AI智能客服…

Qt進階開發:QFileSystemModel的使用

文章目錄 一、QFileSystemModel的基本介紹二、QFileSystemModel的基本使用2.1 在 QTreeView 中使用2.2 在 QListView 中使用2.3 在 QTableView 中使用 三、QFileSystemModel的常用API3.1 設置根目錄3.2 過濾文件3.2.1 僅顯示文件3.2.2 只顯示特定后綴的文件3.2.3 只顯示目錄 四…

KAPC的前世今生--(下)下RPCRT4!NMP_SyncSendRecv函數分析

第一部分:nt!KiDeliverApc函數調用nt!IopCompleteRequest函數后準備返回 1: kd> kv # ChildEBP RetAddr Args to Child 00 ba3eec18 80a3c83b 896e4e40 ba3eec64 ba3eec58 nt!IopCompleteRequest0x3a3 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv…

深入理解C++引用:從基礎到現代編程實踐

一、引用的本質與基本特性 1.1 引用定義 引用是為現有變量創建的別名,通過&符號聲明。其核心特點: 必須初始化且不能重新綁定 與被引用變量共享內存地址 無獨立存儲空間(編譯器實現) 類型必須嚴格匹配 int value 42; in…

嵌入式Linux開發環境搭建,三種方式:虛擬機、物理機、WSL

目錄 總結寫前面一、Linux虛擬機1 安裝VMware、ubuntu18.042 換源3 改中文4 中文輸入法5 永不息屏6 設置 root 密碼7 安裝 terminator8 安裝 htop(升級版top)9 安裝 Vim10 靜態IP-虛擬機ubuntu11 安裝 ssh12 安裝 MobaXterm (SSH)…

軟件工程面試題(二十七)

1、j a v a 對象初始化順序 1.類的初始化(initialization class & interface) 2.對象的創建(creation of new class instances) 順序:應為類的加載肯定是第一步的,所以類的初始化在前。大體的初始化順序是: 類初始化 -> 子類構造函數 -> 父類構造函數 -&g…

《AI大模型開發筆記》MCP快速入門實戰(一)

目錄 1. MCP入門介紹 2. Function calling技術回顧 3. 大模型Agent開發技術體系回顧 二、 MCP客戶端Client開發流程 1. uv工具入門使用指南 1.1 uv入門介紹 1.2 uv安裝流程 1.3 uv的基本用法介紹 2.MCP極簡客戶端搭建流程 2.1 創建 MCP 客戶端項目 2.2 創建MCP客戶端…

Java中的正則表達式Lambda表達式

正則表達式&&Lambda表達式 正則表達式和Lambda表達式是Java編程中兩個非常實用的特性。正則表達式用于字符串匹配與處理,而Lambda表達式則讓函數式編程在Java中變得更加簡潔。本文將介紹它們的基本用法,并結合示例代碼幫助理解。同時要注意&…

Talend API Tester

背景 工作中有時會需要調測http接口,postman無疑是最常用最流行的工具,但是有一個致命問題,必須要登錄,而工作經常是私網環境,導致使用非常不方便。因此想找一個Windows系統上的輕量級、無需登錄即可使用的http測試工…

leetcode數組-移除元素

題目 題目鏈接:https://leetcode.cn/problems/remove-element/ 給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等于 val 的元素。元素的順序可能發生改變。然后返回 nums 中與 val 不同的元素的數量。 假設 nums 中不等于 val 的元素數量為…

什么是市盈率,通俗解釋清楚

市盈率就是“股價和公司盈利能力”的一個比例關系,簡單來說,就是你花多少錢買股票,要等多少年才能通過公司賺的錢“回本”。 假設你買了一家公司的股票,花了100塊錢,這家公司每年能賺10塊錢。那市盈率就是100除以10&am…

突破傳統認知:聚類算法的底層邏輯與高階應用全景解析

一、維度革命:重新定義聚類分析的認知邊界 在人工智能的浩瀚星空中,聚類算法猶如一組精密的星際導航儀,幫助我們在無序的數據宇宙中發現隱藏的秩序。這項起源于人類本能分類需求的技術,經歷了從簡單分組到智能識別的蛻變&#xf…