面試官:如何實現企業級MCP分布式部署?
作為一個企業級的 MCP Server 服務,只運行在單機環境上是遠遠不夠的,我們需要讓它部署在多個機器上,并且支持分布式的調用,這其中當然還包括負載均衡和節點變更的動態感知等內容。
那么如何讓你的 MCP 服務支持這些功能呢?接下來,我們一起來看。
實現方案
MCP 生產級別的分布式部署方案主要包含以下兩種實現:
1.MCP Server + Nacos 注冊中心:最原始的實現方式,借助 Nacos 提供的健康檢查機制,加上負載均衡器實現了分布式部署實現流程如下圖所示:
2.使用 Spring AI Alibaba MCP Gateway 實現分布式部署:Spring AI Alibaba MCP Gateway 是基于 Nacos 提供的 MCP server registry 實現,它為普通應用建立一個中間代理層,從而實現了分布式部署的效果。一方面將 Nacos 中注冊的服務信息轉換成 MCP 協議的服務器信息,以便 MCP 客戶端可以無縫調用這些服務;另一方面可以實現協議轉化,將 MCP 協議轉換為對后端 HTTP、Dubbo 等服務的調用。基于 Spring AI Alibaba MCP Gateway,您無需對原有業務代碼進行改造,新增或者刪除 MCP 服務(在Nacos中)無需重啟代理應用,它的執行流程如下:
顯然第二種實現方式更簡單,且功能更強大,那我們來看下 Spring AI Alibaba MCP Gateway 的具體配置和代碼實現。
具體配置和代碼實現
以 Nacos 3.0 版本為例,它的實現步驟如下:
1.在 nacos 中進入 mcp 列表管理功能,創建一個 mcp server。
2.在 mcp server 中添加 tools 相關內容,表明要暴露的 tools 信息。
3.在 tools 信息中,需要配置一個 request template,格式與 higress 目前支持的格式完全兼容。
{
"requestTemplate": {
"url": "/v3/weather/weatherInfo?key={{ .config.credentials.api_key.data }}",
"argsToUrlParam": true,
"method": "GET"
},
"responseTemplate": {
"body": "response value {{ .value }}"
}
}
4.在工程中引入相關依賴。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- Spring AI Alibaba MCP Gateway -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-mcp-gateway</artifactId>
<version>1.0.0.3-SANPSHOT</version>
</dependency>
<!-- Spring AI Alibaba MCP Server -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-alibaba-starter-nacos-mcp-server</artifactId>
<version>1.0.0.3-SANPSHOT</version>
</dependency>
</dependencies>
5.配置 spring.ai.alibaba.mcp.nacos 相關信息。
spring:
ai:
alibaba:
mcp:
nacos:
server-addr: 127.0.0.1:8848
namespace: public
username:
password:
gateway:
service-names:
- echo-server
6.啟動服務之后,會讀取 nacos 中持有的 mcp server 相關配置信息,對外暴露出來,供 mcp client 進行調用。
這樣就完成了企業級 MCP 分布式部署與動態更新的問題,其中包括流量的負載均衡、節點變更動態感知等關鍵技術的具體實現。
小結
MCP 在面試中被問到的概率很大,因為它是熱門的 AI 技術。這其中包括 MCP 生產級別的使用問題,如 MCP 如何進行安全驗證?MCP 底層實現原理?底層實現協議?MCP 服務重啟后客戶端如何自動重連?MCP 如何進行企業級部署?等問題。
參考文檔
Spring AI Alibaba 官方博客