本文介紹 Databricks Apps 背後的核心概念,包括應用程式的結構化方式、管理相依性和狀態的方式、許可權的運作方式,以及應用程式如何與平臺資源互動。 瞭解這些概念有助於開發、部署和管理工作區中的應用程式。
App
Databricks 應用程式是 Web 應用程式,可在 Azure Databricks 無伺服器平臺上以容器化服務的形式執行。 開發人員會使用 Streamlit、Dash 或 Gradio 等支援的架構來建置可在 Azure Databricks 工作區內提供互動式數據或 AI 體驗的應用程式。
每個應用程式都包含自己的組態、身分識別和隔離運行時間環境。 由於應用程式屬於特定工作區,因此可以存取工作區層級的資源,例如 SQL 倉儲和 Unity 目錄等帳戶層級資源。 開發人員也可以選擇與工作區外部的用戶共享應用程式,但在相同的 Azure Databricks 帳戶內。
雖然應用程式容器會在 Azure Databricks 無伺服器基礎結構上執行,但應用程式本身可以連線到無伺服器和非無伺服器資源。 就概念上講,應用程式會作為控制平面服務,裝載 Web UI 並存取可用的 Azure Databricks 數據平面服務。 如需詳細資訊,請參閱 Databricks 架構概觀。
若要啟動和管理應用程式,請移至工作區 UI 中的 [ 應用程式 ] 區段。
應用程式 URL
當您建立應用程式時,Databricks 會自動為每個應用程式指派唯一的 URL。 URL 會遵循以下格式:
https://<app-name>-<workspace-id>.<region>.databricksapps.com
Where:
-
<app-name>是您在建立應用程式時提供的名稱 -
<workspace-id>是您工作區的唯一識別碼 -
<region>是您工作區所在的雲端區域
建立應用程式後,您無法變更 URL。 如果您需要不同的 URL,請使用不同的名稱建立新的應用程式。
Template
應用程式範本是預先建置的框架,可協助開發人員利用已支援的架構快速開始建置應用程式。 每個範本都包含基本檔案結構、 app.yaml 指令清單、 requirements.txt Python 應用程式的檔案,以及範例原始程式碼。
檔案 app.yaml 會定義執行應用程式的命令(例如 streamlit run <app-name> ,針對 Streamlit 應用程式)、設定本機環境變數,並宣告任何必要的資源。
- 使用
requirements.txt列出要與一起pip安裝的其他 Python 套件。 - 使用
package.json列出要搭配npm安裝的 Node.js 套件。
這些檔案會補充預設系統環境和預安裝的套件。 如需詳細資訊,請參閱 Databricks Apps 系統環境。
開發人員可以使用 Azure Databricks UI 或 CLI,從範本產生新的應用程式。
系統環境和套件
Databricks Apps 會在 Azure Databricks 管理的預先設定系統環境中執行。 如需詳細資訊,請參閱 Databricks Apps 系統環境。
每個應用程式都有自己的隔離環境,以防止相依性衝突。 若要確保一致性,請在應用程式的適當檔案中定義必要的套件及其版本:
- 針對 Python,請使用
requirements.txt。 - 針對 Node.js,請使用
package.json。
針對混合式部署,您可能會有這兩個檔案。
在部署期間,Azure Databricks 會將這些相依性安裝到應用程式的隔離運行時間環境中。 如果您包含已經預先安裝的套件,指定的版本會覆蓋預設值。
如需詳細資訊,請參閱 管理 Databricks 應用程式的相依性 。
應用程式資源
應用程式資源是應用程式相依的 Azure Databricks 原生服務,例如 SQL 倉儲、模型服務端點、作業、秘密或磁碟區。 您可以在 databricks.yml 清單中使用 resources 欄位宣告這些相依性。 Azure Databricks 支援下列資源類型:
- SQL 資料庫
- Job
- 模型服務端點
- 精靈空間
- Secret
- Volume
若要存取尚未支援資源類型的 Azure Databricks 服務,請使用 Unity 目錄管理的秘密安全地插入認證。 請參閱機密管理。
設定應用程式資源有兩個階段:
-
宣告(開發) - 在
databricks.yml清單中宣告每個必要資源。 這會定義應用程式需要哪些資源,以及它所需的許可權。 - 設定 (部署) - 在部署 期間,使用 Databricks Apps UI 來設定已宣告的資源與實際的工作區特定實例(例如,選取特定的 SQL 倉儲)。
宣告和組態之間的這種區隔可讓應用程式跨環境移植。 例如,您可以在開發工作區中部署相同的應用程式程序代碼,並將其連結至一個SQL倉儲。 在生產環境中,您可以重複使用程式碼並設定不同的倉儲,而不需要變更程序代碼。 若要支援此功能,請避免在您的應用程式中硬式編碼資源標識碼或環境特定值。
Azure Databricks 會強制執行最低許可權存取。 應用程式必須使用現有的資源,而且無法建立新的資源。 在部署期間,工作區系統管理員會檢閱並核准應用程式所要求的資源存取權。 應用程式的服務主體會收到必要的許可權,而應用程式開發人員必須具有授予這些許可權的權限。
若要深入瞭解,請參閱 將資源新增至 Databricks 應用程式。
應用程式狀態
應用程式可以有下列其中一個狀態: 執行、 已停止、 部署或 當機。
- 執行 - 應用程式為作用中且可存取。 Azure Databricks 會針對應用程式執行時所使用的計算資源計費。
- 已停止 - 無法存取應用程式,且不會產生任何費用。 Azure Databricks 會保留應用程式的設定和環境,因此您可以重新啟動,而不需重新設定。
- 部署 -應用程式正在啟動。 它尚無法存取,而且在此階段不會產生任何費用。
- 當機 - 應用程式無法意外啟動或停止。 無法存取且不會產生費用。 您可以檢視記錄,以在問題解決之後對應用程式進行疑難解答並重新啟動。
應用程式狀態
應用程式狀態包含應用程式需要在用戶會話或互動之間保存的任何資料或內容。 重新啟動之後,應用程式不會保留記憶體內部狀態。 當應用程式關閉時,記憶體中保留的任何數據都將遺失。
您可以透過下列方式儲存狀態:
- 單一工作階段中臨時資料的記憶體內儲存。 當應用程式重新啟動時,此資料會遺失。
- 應用程式執行期間暫存檔案的本機檔案系統。 當應用程式重新啟動時,此資料會遺失。
- Azure Databricks 資料表使用 Databricks SQL 進行持續性結構化資料和分析工作負載。
- 工作區檔案,用於永久保存非結構化資料。
- 具有 Unity 目錄控管的
Unity 目錄磁碟區,用於持續性非結構化資料。
- Lakebase 資料庫執行個體, 用於具有 PostgreSQL 相容性的持續性關聯式資料。
常見的使用案例包括快取查詢結果、儲存使用者喜好設定,或跨會話記錄用戶動作。
應用程式驗證和授權
Databricks Apps 使用 OAuth 2.0 進行驗證和訪問控制。 每個應用程式都有兩個互補的身分識別,可決定如何驗證及授權存取 Azure Databricks 資源: 應用程式授權 和 用戶授權。
應用程式授權 - Azure Databricks 會自動為每個應用程式建立服務主體。 此服務主體可作為應用程式的身分識別,並由應用程式開發人員授與許可權。 應用程式的所有用戶都會共用此身分識別,而且可以存取同一組許可權。 此模型適用於不相依於個別使用者內容的作業,例如記錄或系統層級動作。
使用者授權 - 此模型會使用應用程式使用者的身分識別來驗證和授權存取權。 用戶必須屬於部署應用程式的 Azure Databricks 帳戶。 透過單一登錄 (SSO) 登入之後,應用程式可以使用使用者的認證來存取受控的資源,例如 SQL 倉儲。 這可讓應用程式遵守 Unity 目錄所管理的細緻的權限,而不將這些權限授予應用程式的服務主體。
應用程式在其指令清單中要求特定的 OAuth 範圍,以控制其可存取的 API 和資源。 此彈性模型支持企業級安全性,並啟用更細緻的訪問控制。
如需詳細資訊,請參閱 在 Databricks 應用程式中設定授權。
應用程式使用者
部署之後,應用程式開發人員可以授與應用程式實例的 CAN_USE 或 CAN_MANAGE 許可權,與使用者或群組共用應用程式。 使用者不需要屬於相同的工作區,但它們必須是相同 Azure Databricks 帳戶的一部分。 若要與外部使用者共用,請先使用您的身份供應商將其同步到您的帳戶。 如需詳細資訊,請參閱 從 Microsoft Entra ID 使用 SCIM 同步處理使用者和群組。
您也可以使用 CI/CD 管線和基礎結構作為程式代碼,將相同的應用程式分散到開發、預備和生產環境。 集中式應用程式 UI 可協助使用者探索並啟動他們獲授權使用的應用程式。