「源力覺醒 創作者計劃」_文心開源模型(ERNIE-4.5-VL-28B-A3B-PT)使用心得

文章目錄

  • 背景
  • 操作流程
    • 開源模型選擇
    • 算力服務器平臺開通
    • 部署一個算力服務器
    • 登錄GPU算力服務器進行模型的部署
    • FastDeploy 快速部署服務
      • 安裝paddlepaddle-gpu
        • 1. 降級沖突的庫版本
      • 安裝fastdeploy
    • 直接部署模型(此處大約花費15分鐘時間)
      • 放行服務端口供公網訪問
      • 最后一個錯誤,馬上部署成功
        • 1. 手動配置 `/etc/hosts` 文件
    • 調用大模型服務
      • 官方demo調用
      • 文字交互demo
      • 文+圖+連續對話版本(python代碼)
      • openai的接口調用方式
  • 總結

背景

文心大模型全面開源!

作為備受關注的文心大模型,歷經發展與積淀,如今迎來重要一步——全面開源并免費開放下載體驗!

我們相信,開放協作、集思廣益,是推動大模型技術長遠發展和釋放其真正價值的關鍵。此次開源,正是邁出了堅實的一步。

我親身體驗后,整體感受超出預期!現將詳細的體驗流程整理如下,供大家參考:

操作流程

開源模型選擇

今天搞這個模型:
ERNIE-4.5-VL-28B-A3B-PT

ERNIE-4.5-VL-28B-A3B 是一個多模態 MoE 聊天模型,擁有 28B 總參數和每個標記激活的 3B 參數。

操作文檔在這里:

https://gitcode.com/paddlepaddle/ERNIE-4.5-VL-28B-A3B-PT

咱們使用單卡部署,至少需要80G的內存,咱們直接使用A100,那么哪里可以搞到物美價廉的A100呢?

算力服務器平臺開通

經過我的多方折騰,發現有個地方還是很不錯的,推薦給大家:
猛戳這里!——優云智算

沒錯,就是這個平臺,上去實名認證之后,就可以獲得10元券,然后就可以跑咱們這次要搞的文心一言的開源大模型ERNIE-4.5-VL-28B-A3B-PT 啦

部署一個算力服務器

在優云智算平臺上,點擊部署GPU實例,選擇平臺鏡像,然后選擇pytorch + ubutu ,然后在實例配置中的更多型號里,選擇A100,我們選擇豪華的A100(正好80G顯存)來跑今天的模型,具體的配置參照下圖,PyTouch的相關版本選擇如下,大家別搞錯了
在實例配置中,選擇A100。

然后點擊立即部署即可(這里我們選擇按量計費,該計費類型支持關機不收費,磁盤、鏡像關機正常計費)這種方式更友好一些,有事了就先關機,回來了就開機繼續搞,這里的10元代金券可以直接抵扣,只要操作不失誤應該是夠用的,如果對自己沒信心,也別擔心,這是后付費的,在系統給出回收的提示之前付清費用,服務器都是會保留的。(一般只留24小時)

選好之后,點擊立即部署,服務器就會將相應的環境部署好。

這里的狀態變為已運行的時候,就說明已經部署好了,就可以進行登錄使用了。

現在已經是運行中了,代表服務器環境已經部署好了!

登錄GPU算力服務器進行模型的部署

咱們點擊登錄,進入到這個服務器中開始部署模型(或者直接復制相應的ssh代碼和密碼,自己進入終端或者其他工具中進行登錄都可以)。

復制這里的密碼,然后進行遠程登錄


登陸成功之后界面如下:

FastDeploy 快速部署服務

咱們這次主要使用官方推薦的FastDeploy 快速部署服務
其中用到了 FastDeploy 快速部署服務,
https://github.com/PaddlePaddle/FastDeploy
咱們這次用的A100的部署,詳細部署信息可以查看:

https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/get_started/installation/nvidia_gpu.md

如果不想看文檔嫌麻煩的,也可以直接按照本文進行操作即可。

咱們本次實際的操作步驟總結如下圖:

安裝paddlepaddle-gpu

1.先運行安裝 paddlepaddle-gpu(此處大約花費15分鐘時間)

python -m pip install paddlepaddle-gpu==3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/

這里安裝完畢會報錯,

這是因為:

  1. 版本不匹配:PyTorch 2.4.0+cu124 明確要求特定版本的 CUDA 工具鏈(如 nvidia-cublas-cu1212.4.2.65、nvidia-cudnn-cu129.1.0.70 等),但你的環境中安裝的是更新的版本(如 12.6.4.1、9.5.1.17 等)。
  2. 依賴解析限制:pip 的依賴解析器在安裝時可能未考慮所有已安裝包的兼容性,導致不兼容的版本被安裝。

然后進行解決

1. 降級沖突的庫版本

根據 PyTorch 的要求,手動降級所有 CUDA 相關庫至指定版本:

pip install nvidia-cublas-cu12==12.4.2.65 \nvidia-cuda-cupti-cu12==12.4.99 \nvidia-cuda-nvrtc-cu12==12.4.99 \nvidia-cuda-runtime-cu12==12.4.99 \nvidia-cudnn-cu12==9.1.0.70 \nvidia-cufft-cu12==11.2.0.44 \nvidia-curand-cu12==10.3.5.119 \nvidia-cusolver-cu12==11.6.0.99 \nvidia-cusparse-cu12==12.3.0.142 \nvidia-nccl-cu12==2.20.5 \nvidia-nvjitlink-cu12==12.4.99 \nvidia-nvtx-cu12==12.4.99 \triton==3.0.0

解決完畢后驗證環境:

import torch
print(torch.__version__)  # 輸出: 2.4.0+cu124
print(torch.cuda.is_available())  # 應輸出 True

安裝fastdeploy

此處花費時間不超過1分鐘。
注意,此處咱們只安裝這個 stable release即可,不用按照教程安裝latest Nightly build

python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple


這是安裝完畢的圖片,看起來好像有一些報錯,咱們先不管,繼續往下執行即可。

直接部署模型(此處大約花費15分鐘時間)

python -m fastdeploy.entrypoints.openai.api_server \--model baidu/ERNIE-4.5-VL-28B-A3B-Paddle \--port 8180 \--metrics-port 8181 \--engine-worker-queue-port 8182 \--max-model-len 32768 \--enable-mm \--reasoning-parser ernie-45-vl \--max-num-seqs 32

報錯了


報錯的原因顯示:
表明 Python 在嘗試加載 PaddlePaddle 的核心庫時,找不到 GCC 的 OpenMP 運行時庫。

既然缺失了,那咱們馬上就安裝,安排,解決!

執行以下代碼進行解決:

apt-get update
apt-get install -y libgomp1

解決完畢之后,繼續執行部署模型:

可以看到,已經開始部署了,說明環境已經正常了,等待模型部署完畢,我們進行調用即可。

放行服務端口供公網訪問

此處需要將8180的端口在防火墻放行,這樣在公網才能訪問我們部署好的模型:
在云服務器實例的操作頁面,選擇更多操作——配置防火墻,然后在其中放行 8180端口。

點擊編輯防火墻規則:

點擊添加規則,然后填寫相應的信息:

放行成功后效果如下

最后一個錯誤,馬上部署成功

模型部署完了,但是最后果然又報錯了:

這個錯誤是由于系統無法解析主機名(hostname)對應的 IP 地址導致的,具體來說,這行代碼嘗試通過主機名獲取 IP 地址時失敗了(錯誤 [Errno -2] Name or service not known 表示名稱解析失敗)。

解決方案:

1. 手動配置 /etc/hosts 文件

通過修改 /etc/hosts,將主機名映射到本地 IP(通常是 127.0.0.1 或內網 IP):

步驟:

  1. 查看當前主機名:bash
hostname
# 假設輸出為:eb1879bc7658(你的容器ID或主機名)
  1. 編輯 /etc/hosts 文件:bash
vi /etc/hosts
  1. 在文件中添加一行,將主機名映射到 127.0.0.1:****

(如果已有 127.0.0.1 localhost,直接在后面加上主機名即可)

  1. 保存退出(vi 中按 Esc,輸入 :wq 回車)。

然后又重新跑一下(跑一次大概15分鐘左右)


出現圖中顯示的Uvicorn running on http://0.0.0.0:8180 的時候就代表服務已經部署成功了!咱們現在就將文心一言開源大模型 擁有 28B 總參數的多模態 MoE 聊天模型ERNIE-4.5-VL-28B-A3B 在自己的服務器上部署成功了!

調用大模型服務

接下來可以進行相關的調用來試一下模型的表現了。

官方demo調用

以下是官方給的demo,是讓模型識別一個圖片鏈接,然后輸出圖片描述的。

我改造了一個python調用的版本,代碼如下:

使用python代碼訪問已經部署的模型:

import requests
import json# 定義 API 接口的 URL
url = "http://你的服務器公網IP:8180/v1/chat/completions"# 定義請求頭
headers = {"Content-Type": "application/json"
}# 定義請求體
payload = {"messages": [{"role": "user", "content": [{"type": "image_url", "image_url": {"url": "https://paddlenlp.bj.bcebos.com/datasets/paddlemix/demo_images/example2.jpg"}},{"type": "text", "text": "Descript this image"}]}],"metadata": {"enable_thinking": False}
}# 發送 POST 請求
try:response = requests.post(url, headers=headers, data=json.dumps(payload))# 檢查響應狀態碼response.raise_for_status()  # 拋出 HTTPError 異常,如果狀態碼不是 200-299# 解析 JSON 響應response_json = response.json()# 打印響應結果print(json.dumps(response_json, indent=2, ensure_ascii=False))  # 美化輸出,支持中文except requests.exceptions.RequestException as e:print(f"請求發生錯誤: {e}")
except json.JSONDecodeError as e:print(f"JSON 解析錯誤: {e}")
except Exception as e:print(f"發生其他錯誤: {e}")

注意使用的時候把你的服務器公網IP替換進去


可以看到模型已經可以正常返回了。

文字交互demo

接下來,咱們給他發送文字,讓模型進行正常的回復:

代碼如下:

import requests
import json# 定義 API 接口的 URL
url = "http://你的服務器公網IP/v1/chat/completions"# 定義請求頭
headers = {"Content-Type": "application/json"
}# 定義請求體 - 文本聊天
def generate_text_chat_payload(user_message):""""""  """生成文本聊天請求的 payload。Args:user_message: 用戶發送的文本消息 (string)。Returns:一個 Python 字典,代表請求體。"""payload = {"messages": [{"role": "user", "content": user_message}],"metadata": {}  # 可以包含其他元數據,比如 {"enable_thinking": False}}return payload# 設置用戶消息
user_message = "你好,你現在是一個人工智能助手。隨便聊一些事情。"# 生成請求體 payload
payload = generate_text_chat_payload(user_message)# 發送 POST 請求
try:response = requests.post(url, headers=headers, data=json.dumps(payload))# 檢查響應狀態碼response.raise_for_status()  # 拋出 HTTPError 異常,如果狀態碼不是 200-299# 解析 JSON 響應response_json = response.json()# 打印響應結果print("響應:")print(json.dumps(response_json, indent=2, ensure_ascii=False))  # 美化輸出,支持中文# 提取模型回復內容 (如果 API 響應結構不同,你需要相應地修改這部分)try:model_response = response_json["choices"][0]["message"]["content"]print("\n模型回復:")print(model_response)except (KeyError, IndexError) as e:print(f"\n無法提取模型回復: {e}")except requests.exceptions.RequestException as e:print(f"請求發生錯誤: {e}")
except json.JSONDecodeError as e:print(f"JSON 解析錯誤: {e}")
except Exception as e:print(f"發生其他錯誤: {e}")

文+圖+連續對話版本(python代碼)

好吧,合并在一起,并且可以連續對話的版本應運而生:

import requests
import json
import io
from PIL import Image# 定義 API 接口的 URL
url = "http://你的服務器公網IP:8180/v1/chat/completions"# 請求頭
headers = {"Content-Type": "application/json"
}def display_image_from_url(image_url):"""從 URL 顯示圖片"""try:response = requests.get(image_url, stream=True)response.raise_for_status()img = Image.open(io.BytesIO(response.content))img.show()except requests.exceptions.RequestException as e:print(f"無法從 URL 獲取圖片: {e}")except Exception as e:print(f"顯示圖片時發生錯誤: {e}")def generate_chat_payload(messages, metadata={}):"""生成聊天請求的 payload。Args:messages (list):  包含對話消息的列表,每個消息是一個字典。metadata (dict, optional): 元數據字典。 默認為 {}.Returns:dict: 聊天請求的 payload。"""payload = {"messages": messages,"metadata": metadata  # 可以添加 enable_thinking: False 等}return payloadconversation_history = []def main():global conversation_historywhile True:user_input_type = input("請輸入 (1: 文字, 2: 圖片URL): ")if user_input_type == "1":user_text = input("請輸入文字: ")user_message = {"role": "user", "content": user_text}elif user_input_type == "2":image_url = input("請輸入圖片 URL: ")user_message = {"role": "user","content": [{"type": "image_url", "image_url": {"url": image_url}},{"type": "text", "text": "請描述這張圖片"}  # 提示模型描述]}else:print("無效的輸入類型。")continueconversation_history.append(user_message)payload = generate_chat_payload(conversation_history)try:response = requests.post(url, headers=headers, data=json.dumps(payload))response.raise_for_status()response_json = response.json()# print("\nAPI 響應:")# print(json.dumps(response_json, indent=2, ensure_ascii=False))if "choices" in response_json and response_json["choices"]:model_response = response_json["choices"][0]["message"]conversation_history.append(model_response)print("\n模型回復:")if isinstance(model_response["content"], str):print(model_response["content"])elif isinstance(model_response["content"], list):for item in model_response["content"]:if item["type"] == "text":print(item["text"])elif item["type"] == "image_url":print("顯示圖片...")display_image_from_url(item["image_url"]["url"])else:print("無法處理的模型回復內容類型")else:print("\n沒有從模型收到回復。")except requests.exceptions.RequestException as e:print(f"請求發生錯誤: {e}")except json.JSONDecodeError as e:print(f"JSON 解析錯誤: {e}")except (KeyError, IndexError) as e:print(f"從響應中提取信息時出錯: {e}")except Exception as e:print(f"發生其他錯誤: {e}")continue_chat = input("繼續對話? (y/n): ")if continue_chat.lower() != "y":breakif __name__ == "__main__":main()

openai的接口調用方式

當然,咱們這種部署方式同樣也兼容openai的接口調用方式,如:

import openai
host = "117.50.192.15"
port = "8180"
client = openai.Client(base_url=f"http://{host}:{port}/v1", api_key="null")response = client.chat.completions.create(model="null",messages=[{"role": "system", "content": "I'm a helpful AI assistant."},{"role": "user", "content": "給我寫一首關于愛情的詩"},],stream=True,
)
for chunk in response:if chunk.choices[0].delta:print(chunk.choices[0].delta.content, end='')
print('\n')

這就提供了很多思路,可以直接把這個接口對接到dify等工具上,然后打造自己的專屬工作流,知識庫等,這絕不亞于市面上的那些大模型。

并且如果感覺回復的內容不是很符合自己的要求,還可以針對模型進行微調,比其他非開源只能調用api-key的模型想象空間大了很多!!!

總結

本文詳細介紹了如何使用FastDeploy快速部署大模型服務的全過程,涵蓋了從選擇開源模型到在GPU算力服務器上完成部署并開放公網訪問的各個步驟。首先,我們回顧了相關的背景信息,并介紹了操作流程。接著,文章通過具體的部署實例,逐步展示了如何解決可能出現的庫版本沖突問題、安裝必要的軟件包以及如何配置系統文件(如/etc/hosts)來確保模型服務的順利運行。

通過使用FastDeploy,用戶能夠更加高效地部署大規模機器學習模型,并能夠方便地進行文字、圖像及連續對話版本的交互測試。此外,文章還分享了官方demo和openai接口的調用方式,幫助讀者更好地理解和應用模型服務。

本文不僅為讀者提供了清晰的操作指南,還解決了在模型部署過程中常見的技術難題,使讀者能夠輕松搭建和使用高效的AI服務。

文心大模型的開源標志著技術權力從巨頭壟斷向全民共創的轉移。然而,開源的本質不是慈善,而是通過開放降低生態摩擦,讓創新在自由流動中爆發更大價值。

一起來輕松玩轉文心大模型吧——文心大模型免費下載地址:
https://ai.gitcode.com/theme/1939325484087291906

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

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

相關文章

P10719 [GESP202406 五級] 黑白格

題目傳送門 前言:不是這樣例有點過分了哈: 這是我沒考慮到無解的情況的得分: 這是我考慮了的得分: 總而言之,就是一個Subtask 你沒考慮無解的情況(除了Subtask #0),就會WA一大片,然后這個Subt…

AWS RDS PostgreSQL可觀測性最佳實踐

AWS RDS PostgreSQL 介紹AWS RDS PostgreSQL 是亞馬遜云服務(AWS)提供的托管型 PostgreSQL 數據庫服務。托管服務:AWS 管理數據庫的底層基礎設施,包括硬件、操作系統、數據庫引擎等,用戶無需自行維護。高性能&#xff…

C++——set,map的模擬實現

文章目錄前言紅黑樹的改變set的模擬實現基本框架迭代器插入源碼map模擬實現基礎框架迭代器插入賦值重載源碼測試代碼前言 set,map底層使用紅黑樹這種平衡二叉搜索樹來組織元素 ,這使得set, map能夠提供對數時間復雜度的查找、插入和刪除操作。 下面都是基…

LabVIEW液壓機智能監控

?基于LabVIEW平臺,結合西門子、研華等硬件,構建液壓機實時監控系統。通過 OPC 通信技術實現上位機與 PLC 的數據交互,解決傳統監控系統數據采集滯后、存儲有限、參數調控不便等問題,可精準采集沖壓過程中的位置、速度、壓力等參數…

15. 什么是 xss 攻擊?怎么防護

總結 跨站腳本攻擊&#xff0c;注入惡意腳本敏感字符轉義&#xff1a;“<”,“/”前端可以抓包篡改主要后臺處理&#xff0c;轉義什么是 XSS 攻擊&#xff1f;怎么防護 概述 XSS&#xff08;Cross-Site Scripting&#xff0c;跨站腳本攻擊&#xff09;是一種常見的 Web 安全…

更換docker工作目錄

使用環境 由于默認系統盤比較小docker鏡像很容易就占滿&#xff0c;需要掛載新的磁盤修改docker的默認工作目錄 環境&#xff1a;centos7 docker默認工作目錄: /var/lib/docker/ 新的工作目錄&#xff1a;/home/docker-data【自己手動創建&#xff0c;一般掛在新加的磁盤下面】…

算法學習筆記:26.二叉搜索樹(生日限定版)——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

二叉搜索樹&#xff08;Binary Search Tree&#xff0c;簡稱 BST&#xff09;是一種特殊的二叉樹&#xff0c;因其高效的查找、插入和刪除操作&#xff0c;成為計算機科學中最重要的數據結構之一。BST 的核心特性是 “左小右大”&#xff0c;這一特性使其在數據檢索、排序和索引…

共生型企業:駕馭AI自動化(事+AI)與人類增強(人+AI)的雙重前沿

目錄 引言&#xff1a;人工智能的雙重前沿 第一部分&#xff1a;自動化范式&#xff08;事AI&#xff09;——重新定義卓越運營 第一章&#xff1a;智能自動化的機制 第二章&#xff1a;自動化驅動的行業轉型 第三章&#xff1a;自動化的經濟演算 第二部分&#xff1a;協…

TypeScript的export用法

在 TypeScript 中&#xff0c;export 用于將模塊中的變量、函數、類、類型等暴露給外部使用。export 語法允許將模塊化的代碼分割并在其他文件中導入。 1. 命名導出&#xff08;Named Export&#xff09; 命名導出是 TypeScript 中最常見的一種導出方式&#xff0c;它允許你導出…

數據結構-2(鏈表)

一、思維導圖二、鏈表的反轉def reverse(self):"""思路&#xff1a;1、設置previous_node、current、next_node三個變量,目標是將current和previous_node逐步向后循環并逐步進行反轉,知道所有元素都被反轉2、但唯一的問題是&#xff1a;一旦current.next反轉為向…

ros2 標定相機

一個終端執行&#xff1a; ros2 run image_tools cam2image --ros-args -p width:640 -p height:480 -p frequency:30.0 -p device_id:-1 -r /image:/camera/image_raw另一個終端執行&#xff1a;8x6 是格子角點數量&#xff0c;0.028是格子尺寸 ros2 run camera_calibration …

IsaacLab學習記錄(二)

二、導入并訓練自己的機器人1、urdf等其他格式轉usd&#xff08;工具在./scrips/tools/&#xff09;???維度????URDF (Unified Robot Description Format)????USD (Universal Scene Description)????定位??機器人模型描述標準&#xff08;僅描述單機器人&…

基于Rust Softplus 函數實踐方法

Softplus 函數 Softplus 函數是神經網絡中常用的激活函數之一,定義為: ? Softplus函數導數 ? 是 sigmoid 函數。Softplus 處處可導,并且導數恰好是 sigmoid。 它是 ReLU 函數的平滑近似,具有連續可導的特性,適合需要梯度優化的場景。 數學特性 平滑性:導數為 Sig…

Ubuntu服務器安裝Miniconda

下載 Miniconda 安裝腳本&#xff08;如果能聯網&#xff09;wget https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-Linux-x86_64.sh -O Miniconda3.sh安裝 Miniconda 到 /opt/condabash Miniconda3.sh -b -p /opt/conda激活 conda/opt/conda/bin/conda init ba…

Java數組補充v2

一、數組基本概念1. 什么是數組數組是Java中用來存儲同類型數據的固定大小的連續內存空間的數據結構。2. 數組特點固定長度&#xff1a;一旦創建&#xff0c;長度不可改變相同類型&#xff1a;所有元素必須是同一數據類型索引訪問&#xff1a;通過下標&#xff08;從0開始&…

【PTA數據結構 | C語言版】前綴樹的3個操作

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;利用前綴樹查找給定字符串是否在某給定字符串集合 S 中。 輸入格式&#xff1a; 輸入首先給出一個正整數 n&#xff08;≤1000&#xff09;&#xff0c;隨后 n 行&#xff0…

JAVA面試寶典 -《緩存架構:穿透 / 雪崩 / 擊穿解決方案》

&#x1f4a5;《緩存架構&#xff1a;穿透 / 雪崩 / 擊穿解決方案》 文章目錄&#x1f4a5;《緩存架構&#xff1a;穿透 / 雪崩 / 擊穿解決方案》&#x1f9ed; 一、開篇導語&#xff1a;為什么緩存是高并發系統的命脈&#xff1f;?1.1 緩存的核心價值緩存帶來的收益??&…

FPGA創意項目網頁或博客推薦

1. 綜合項目平臺(開源+教程) ① Hackster.io - FPGA專區 ?? https://www.hackster.io/fpga 特點: 大量基于FPGA的創意項目(如Zynq游戲機、視覺處理、機器人控制)。 提供完整教程(Vivado工程文件+代碼)。 推薦項目: FPGA-Based Oscilloscope(低成本示波器) V…

Go 程序無法使用 /etc/resolv.conf 的 DNS 配置排查記錄

在最近的一次部署中&#xff0c;我遇到一個奇怪的問題&#xff1a;Go 程序在運行時不使用 /etc/resolv.conf 中的 DNS 設置&#xff0c;導致服務無法正常訪問域名。這篇文章記錄下完整的排查過程和最終的解決方案。1. 問題現象我有一個部署在 KVM 虛擬機內的 Go 應用&#xff0…

微服務相關問題(2)

1、Spring Cloud相關常用組件注冊中心&#xff08;nacos、Eureka等&#xff09;、負載均衡&#xff08;Ribbon、LoadBalancer&#xff09;、遠程調用&#xff08;feign&#xff09;、服務熔斷&#xff08;Sentinel、Hystrix&#xff09;、網關&#xff08;Gateway&#xff09;2…