Cross-Cloud Network 中分散式應用程式適用的服務網路

Last reviewed 2025-01-30 UTC

本文是 Cross-Cloud Network 設計指南系列的一部分。

本系列文章包含以下部分:

本文說明如何從一組選取或建立的元件服務組裝應用程式。建議您先詳閱整份文件,再按照步驟操作。

本文將引導您做出下列決策:

  • 您是自行建立個別服務,還是使用第三方服務
  • 服務是否在全球或特定區域提供
  • 服務是從內部部署環境、其他雲端或兩者皆非使用
  • 透過共用服務虛擬私有雲存取服務端點,或透過所有相關應用程式虛擬私有雲發布端點

這份文件將引導您完成下列步驟:

  1. 決定應用程式是全域還是區域
  2. 選擇第三方代管服務,或建立及發布自己的服務
  3. 使用共用或專屬模式,設定服務端點的私人存取權
  4. 將服務組合成應用程式,以符合全球或區域原型

開發人員會定義 Cross-Cloud Network 的服務網路層。在這個階段,管理員已為 Cross-Cloud Network 設計連線層,可彈性選擇本文所述的服務網路選項。在某些情況下,跨 VPC 傳輸限制會造成限制。如果這些限制會影響設計決策,我們會加以說明。

決定應用程式是區域性還是全域性

判斷您要建立的應用程式的顧客是否需要區域或全球部署原型。如要達到區域復原能力,請將負載分散到區域的各個可用區。您可以跨區域分散負載,達到全球復原能力。

選擇原型時,請考慮下列因素:

  • 應用程式的可用性需求
  • 應用程式的使用地點
  • 費用

詳情請參閱Google Cloud 部署架構原型

本設計指南將說明如何支援下列部署原型:

在跨雲端分散式應用程式中,該應用程式的不同服務可由不同的雲端服務供應商 (CSP) 或私人資料中心提供。為確保一致的復原力架構,請將不同 CSP 中代管的服務,放入地理位置相近的 CSP 資料中心。

下圖顯示分散在雲端中的全球應用程式堆疊,以及部署在不同 CSP 中的不同應用程式服務。每個全球應用程式服務在同一 CSP 的不同地區都有工作負載執行個體。

全球應用程式堆疊分散在各個雲端。

定義及存取應用程式服務

如要組裝應用程式,可以使用現有的第三方代管服務、建立及代管自己的應用程式服務,或兩者並用。

使用現有的第三方代管服務

決定應用程式可使用的第三方代管服務。判斷哪些是建構為區域性服務或全域服務。此外,請判斷各項服務支援哪些私人存取權選項。

瞭解可使用的代管服務後,即可決定要建立哪些服務。

建立及存取應用程式服務

每項服務都由一或多個工作負載執行個體代管,可做為單一端點或一組端點存取。

應用程式服務的一般模式如下圖所示。應用程式服務會部署在多個工作負載執行個體中。(在本例中,工作負載執行個體可以是 Compute Engine VM、Google Kubernetes Engine (GKE) 叢集,或是執行程式碼的其他後端。) 工作負載執行個體會整理為一組與負載平衡器相關聯的後端。

下圖顯示一般負載平衡器和一組後端。

具有後端的負載平衡器。

為實現所選負載分配方式並自動執行容錯移轉,這些端點群組會使用前端負載平衡器。使用代管執行個體群組 (MIG) 時,您可以自動調度資源,擴充或縮減構成負載平衡器後端的端點,彈性增減服務容量。此外,負載平衡器還可根據應用程式服務的需求,提供驗證、TLS 終止和其他連線專屬服務。

決定服務範圍 - 區域或全球

判斷您的服務是否需要且能夠支援區域或全域復原能力。區域軟體服務可設計為在區域延遲預算內同步處理。全域應用程式服務可支援跨區域節點的同步容錯移轉。如果您的應用程式是全球性的,您可能也會希望支援應用程式的服務是全球性的。但如果服務需要同步處理執行個體,才能支援容錯移轉,就必須考量地區之間的延遲時間。在這種情況下,您可能必須依賴相同或鄰近區域的備援區域服務,以支援低延遲時間的容錯移轉同步作業。

Cloud Load Balancing 支援託管於單一區域或分散於多個區域的端點。因此,您可以建立面向全球客戶的層,與全球、區域或混合服務層溝通。選擇服務部署作業,確保動態網路容錯移轉 (或跨區域負載平衡) 符合應用程式邏輯的復原狀態和功能。

下圖顯示如何透過區域性負載平衡器建構全域服務,連回其他區域的後端,進而提供跨區域的自動容錯移轉功能。在本例中,應用程式邏輯是全域的,且所選後端支援跨區域同步。每個負載平衡器主要會將要求傳送到本機區域,但可以容錯移轉至遠端區域。

負載平衡器在不同區域設有後端。

  • 全域後端是一組區域後端,可供一或多個負載平衡器存取。
  • 雖然後端是全域的,但每個負載平衡器的前端都是區域性的。
  • 在這個架構模式中,負載平衡器主要只會在所屬區域內分配流量,但如果本區域的資源無法使用,也可以將流量平衡到其他區域。
  • 一組區域負載平衡器前端 (每個前端都可從其他區域存取,且都能連至其他區域的後端),會形成匯總全域服務。
  • 如要組建全域應用程式堆疊 (如「設計全域應用程式堆疊」一文所述),您可以使用 DNS 路由和健康狀態檢查,達成前端的跨區域容錯移轉。
  • 負載平衡器前端本身可透過全域存取權從其他區域存取 (未顯示在圖表中)。

您可以使用相同的模式,納入具有全域容錯移轉功能的已發布服務。下圖顯示使用全域後端的已發布服務。

可從不同區域存取的負載平衡器。

請注意,在下圖中,發布的服務已在生產端環境中實作全域容錯移轉。在消費者環境中新增全域容錯移轉功能,可確保消費者負載平衡基礎架構在區域發生故障時仍能正常運作。服務的跨區域容錯移轉必須在服務應用程式邏輯和服務生產者的負載平衡設計中實作。服務生產者可以實作其他機制。

如要判斷使用哪個 Cloud Load Balancing 產品,請先判斷負載平衡器必須處理的流量類型。請參考以下通則:

  • 使用應用程式負載平衡器處理 HTTP(S) 流量。
  • 針對非 HTTP(S) TCP 流量,請使用 Proxy 網路負載平衡器。這個 Proxy 負載平衡器也支援 TLS 卸載。
  • 使用 passthrough 網路負載平衡器,在標頭中保留用戶端來源 IP 位址,或支援 UDP、ESP 和 ICMP 等額外的通訊協定。

如需詳細指引,瞭解如何根據用途選擇最合適的負載平衡器,請參閱「選擇負載平衡器」。

使用無伺服器後端的服務

您可以使用無伺服器後端定義服務。生產環境中的後端可以整理至無伺服器 NEG,做為負載平衡器的後端。您可以建立與生產者負載平衡器前端相關聯的服務連結,透過 Private Service Connect 發布這項服務。您可以透過 Private Service Connect 端點或 Private Service Connect 後端使用已發布的服務。如果服務需要由生產者發起的連線,您可以使用無伺服器虛擬私有雲存取連接器,讓 Cloud Run、App Engine 標準和 Cloud Run 函式環境將封包傳送至虛擬私有雲網路中資源的內部 IPv4 位址。無伺服器虛擬私有雲存取也支援將封包傳送至連線至所選虛擬私有雲網路的其他網路。

以私密方式存取服務的方法

應用程式可包含 Google 提供的代管服務、外部供應商或貴機構同業群組提供的第三方服務,以及您團隊開發的服務。部分服務可能可透過網際網路使用公開 IP 位址存取。本節說明如何使用私有網路存取這些服務。服務類型如下:

  • Google 公用 API
  • Google 無伺服器 API
  • Google 發布的代管服務
  • 廠商和同業發布的代管服務
  • 你發布的服務

閱讀後續章節時,請記住這些選項。視服務的分配方式而定,您可以使用一或多個所述的私人存取權選項。

負責組裝、發布及管理服務的機構 (或機構內的群組) 稱為服務生產端。您和應用程式稱為服務消費者。

部分代管服務只能使用私人服務存取發布。內部連線和虛擬私有雲網路中建議的網路設計,可容納透過私人服務存取權和 Private Service Connect 發布的服務。

如要瞭解如何私下存取服務,請參閱各項服務的私人存取權選項

建議您盡可能使用 Private Service Connect 連線至代管服務。如要進一步瞭解 Private Service Connect 的部署模式,請參閱「Private Service Connect 部署模式」。

Private Service Connect 有兩種,不同服務可發布為任一類型:

發布為 Private Service Connect 端點的服務可直接供其他工作負載使用。這些服務依賴服務生產端提供的驗證和復原能力。如要進一步控管服務驗證和復原能力,可以使用 Private Service Connect 後端,在消費者網路中新增一層負載平衡,以進行驗證和復原。

下圖顯示透過 Private Service Connect 端點存取的服務:

透過 Private Service Connect 端點存取服務。

下圖顯示下列模式:

  • Private Service Connect 端點會部署在消費者虛擬私有雲中,讓 VM 和 GKE 節點使用生產者服務。
  • 消費者和生產者網路都必須部署在同一區域。

上圖顯示端點為區域資源。由於全域存取權,其他區域可以連線至端點。

如要進一步瞭解部署模式,請參閱「Private Service Connect 部署模式」。

Private Service Connect 後端會使用設定有 Private Service Connect 網路端點群組 (NEG) 後端的負載平衡器。如需支援的負載平衡器清單,請參閱「關於 Private Service Connect 後端」。

您可以使用 Private Service Connect 後端建立下列後端設定:

  • 管理服務前的客戶自有網域和憑證
  • 在不同區域的代管服務之間,由消費者控制容錯移轉
  • 集中管理受管理服務的安全設定和存取權控管

在下圖中,全域負載平衡器使用 Private Service Connect NEG 做為後端,建立與服務供應商的通訊。不需要進一步設定網路,資料會透過 Google 的 SDN 結構傳輸。

使用網路端點群組的全域負載平衡器。

大多數服務都是為消費者發起的連線所設計。如果服務需要從生產端啟動連線,請使用 Private Service Connect 介面

部署私人服務存取權或 Private Service Connect 時,請務必考量遞移性。Private Service Connect 消費者存取點可透過 Network Connectivity Center 存取。透過虛擬私有雲網路對等互連連線,無法連線至已發布的服務,無論是 Private Service Connect 或私人服務存取權用戶存取點皆然。如果所有服務消費者存取點都沒有虛擬私有雲間的傳輸性,虛擬私有雲拓撲中的服務存取子網路或端點位置,就會決定您設計的網路是共用還是專屬服務部署。

高可用性 VPN 和客戶管理的 Proxy 等選項,可提供方法來允許虛擬私人雲端間的遞移通訊。

Private Service Connect 端點無法透過虛擬私有雲網路對等互連連線存取。如要使用這類連線,請部署內部負載平衡器和 Private Service Connect NEG 做為後端,如下圖所示:

使用 NEG 提供可連線性。

您可以使用 Private Service Connect 端點和後端,透過私人連線存取 Google API。一般來說,建議使用端點,因為 Google API 產生器提供復原能力和憑證式驗證。

在每個需要存取服務的虛擬私有雲中,建立 Private Service Connect 端點。由於消費者 IP 位址是私人全域 IP 位址,因此即使多個虛擬私有雲中有端點執行個體,每個服務仍需要單一 DNS 對應,如下圖所示:

搭配 Google API 使用 Private Service Connect。

定義已發布服務的消耗模式

發布的服務可以在各種位置執行:您的 VPC 網路、其他 VPC 網路、地端部署資料中心或雲端。無論服務工作負載在哪裡執行,您的應用程式都會使用存取點 (例如下列其中一個) 來使用這些服務:

  • 私人服務存取子網路中的 IP 位址
  • Private Service Connect 端點
  • 使用 Private Service Connect NEG 的負載平衡器 VIP

消費者存取點可跨網路共用,或專供單一網路使用。根據貴機構是否將建立消費者服務存取點的工作委派給每個應用程式群組,或是以整合方式管理服務存取權,決定要建立共用或專屬的消費者存取點。

服務存取權管理包括下列活動:

  • 建立存取點
  • 在服務存取虛擬私有雲中部署存取點,也就是具有適當可連線類型的虛擬私有雲
  • 在 DNS 中註冊消費者存取點的 IP 位址和網址
  • 在消費者空間中管理服務的安全憑證和復原能力,並在消費者存取點前方新增負載平衡

有些機構可能會將服務存取權管理工作指派給中央團隊,有些機構則可能會為每個消費者或應用程式團隊提供更多獨立性。在專屬模式下運作的副產品是,部分元素會複製。舉例來說,服務會由每個應用程式群組註冊多個 DNS 名稱,並管理多組 TLS 憑證。

Cross-Cloud Network 中分散式應用程式的網路區隔和連線一文所述的虛擬私有雲設計,可讓您在共用或專用模式中部署服務存取點。共用消費者存取點會部署在服務存取虛擬私有雲中,可從任何其他虛擬私有雲或外部網路存取。專屬的消費者存取點會部署在應用程式虛擬私有雲中,且只能從該應用程式虛擬私有雲內的資源存取。

服務存取虛擬私有雲與應用程式虛擬私有雲的主要差異在於,服務存取虛擬私有雲可啟用服務存取點的遞移連線。服務存取 VPC 不僅限於代管消費者存取點。VPC 可代管應用程式資源,以及共用的消費者存取點。在這種情況下,應將 VPC 設定為服務 VPC 並進行處理。

共用代管服務存取權

無論使用哪種服務消耗方法 (包括 Private Service Connect),請務必完成下列工作:

  • 在服務虛擬私有雲中部署服務使用者存取點。服務虛擬私有雲可遞移連線至其他虛擬私有雲。
  • 如果服務存取虛擬私有雲是透過高可用性 VPN 連線,請從透過高可用性 VPN 與其他網路對等的 Cloud Router,將服務存取點的子網路宣傳為自訂路徑宣傳。如果是 Google API,請宣傳 API 的主機 IP 位址。
  • 更新多雲防火牆規則,允許私人服務存取子網路。

如果是私人服務存取權,請確保符合下列額外需求:

  • 將自訂路徑匯出至服務供應商的網路。詳情請參閱「On-premises hosts can't communicate with the service producer's network」(內部部署主機無法與服務生產者的網路通訊) 一文。
  • 建立輸入防火牆規則,允許私人服務存取子網路進入應用程式虛擬私有雲
  • 建立輸入防火牆規則,允許私人服務存取子網路進入服務虛擬私有雲

如要存取無伺服器服務,請確認您符合下列需求:

  • 存取連接器需要專用的 /28 一般子網路
  • Cloud Router 預設會通告一般子網路
  • 建立輸入防火牆規則,允許虛擬私有雲內的所有虛擬私有雲存取子網路
  • 更新多雲防火牆規則,允許虛擬私有雲存取連接器子網路
  • 建立輸入防火牆規則,允許私人服務存取子網路進入應用程式虛擬私有雲

專屬代管服務存取權

請確認您已完成下列工作:

  • 在需要存取的每個應用程式 VPC 中,部署服務的轉送規則,以建立存取點。
  • 如果是私人服務存取權,請建立輸入防火牆規則,允許私人服務存取子網路進入應用程式虛擬私有雲。

如要存取無伺服器服務,請確認您符合下列需求:

  • 存取連接器需要專用的 /28 一般子網路
  • 建立輸入防火牆規則,允許應用程式虛擬私有雲中的虛擬私有雲存取連接器子網路

組裝應用程式堆疊

本節說明如何組裝區域或全球應用程式堆疊。

設計區域應用程式堆疊

如果應用程式遵循地區或多地區部署原型,請使用地區應用程式堆疊。您可以將區域應用程式堆疊視為區域應用程式服務層的串連。舉例來說,區域性應用程式堆疊是指區域性網路服務層與同區域的應用程式層通訊,而應用程式層又與同區域的資料庫層通訊。

每個區域應用程式服務層都會使用負載平衡器,將流量分配到該區域的層端點。為確保可靠性,後端資源會分散到區域內三個以上的可用區。

其他 CSP 或內部部署資料中心的應用程式服務層,應部署在外部網路的對等區域。此外,請在堆疊區域中提供已發布的服務。如要對齊區域內的應用程式堆疊,應用程式服務層網址必須解析為特定負載平衡器前端區域 IP 位址。這些 DNS 對應會註冊到每個應用程式服務的相關 DNS 區域。

下圖顯示具有主動-待機韌性的區域堆疊:

具有主動待機復原能力的區域堆疊。

應用程式堆疊的完整執行個體會部署在不同雲端資料中心的每個區域。如果任何應用程式服務層發生區域性故障,其他區域的堆疊會接手整個應用程式的傳送作業。系統會根據不同應用程式服務層的頻外監控結果,執行這項容錯移轉作業。

如果其中一個服務層回報失敗,應用程式前端會重新錨定至備份堆疊。應用程式會參照一組區域名稱記錄,這些記錄反映 DNS 中的區域 IP 位址堆疊,因此應用程式的每個層級都會在同一區域內維持連線。

設計全球應用程式堆疊

如果應用程式遵循全域應用程式部署原型,每個應用程式服務層都會包含多個區域的後端。在多個區域中納入後端,可擴大應用程式服務層的彈性集區,範圍不限於單一區域,並啟用自動容錯移轉偵測和重新聚合功能。

下圖顯示全域應用程式堆疊:

使用中樞專案和應用程式專案的全域堆疊。

上圖顯示由下列元件組成的全球應用程式:

  • 在內部部署資料中心執行的服務,並使用負載平衡器前端。透過 Cloud Interconnect,即可從 Transit VPC 存取負載平衡器存取點。
  • 傳輸 VPC 會代管外部資料中心和應用程式 VPC 之間的混合式連線。
  • 應用程式 VPC,用於代管在工作負載執行個體上執行的核心應用程式。這些工作負載執行個體位於負載平衡器後方。負載平衡器可從網路中的任何區域連線,也能連線至網路中任何區域的後端。
  • 服務虛擬私有雲,用於代管在其他位置 (例如第三方虛擬私有雲) 執行的服務存取點。這些服務存取點可透過服務 VPC 與中繼 VPC 之間的高可用性 VPN 連線存取。
  • 由其他機構或主要機構代管的服務供應商虛擬私有雲,以及在其他位置執行的應用程式。相關服務會部署為區域負載平衡器的全域後端,並託管於服務虛擬私有雲中,因此可透過 Private Service Connect 後端連線。區域負載平衡器可從任何其他區域連線。

如要讓建立的應用程式可從網際網路存取,可以新增全域外部應用程式負載平衡器,指向應用程式 VPC 中的應用程式工作負載 (圖表中未顯示)。

為支援全球應用程式堆疊,我們為每個應用程式層使用全域後端。這樣一來,您就能從單一區域中所有後端端點的故障中復原。每個區域都有一個區域性負載平衡器前端,適用於每個應用程式服務層。發生區域性容錯移轉時,由於內部區域性負載平衡器前端使用全域存取權,因此可跨區域連線。由於應用程式堆疊是全域的,因此系統會使用 DNS 地理位置路由政策,為特定要求或流程選取最合適的區域前端。如果前端發生故障,可以使用 DNS 健康狀態檢查,自動將流量從一個前端容錯移轉至另一個前端。

使用 Private Service Connect 後端發布的服務可享有 Private Service Connect 全球存取權。這項功能可讓 Private Service Connect 後端從任何區域存取,並減少應用程式服務層故障造成的干擾。也就是說,Private Service Connect 後端可做為全域後端使用,詳情請參閱「判斷服務範圍 - 區域或全域」。

提供對外部網路代管服務的私人存取權

您可能想為其他網路中代管的服務發布本機存取點。在這些情況下,您可以使用內部區域性 TCP Proxy 負載平衡器搭配混合式 NEG。您可以建立服務供應商,並將其代管於內部部署環境或其他雲端環境,供虛擬私有雲網路中的服務消費者 (用戶端) 使用,如下圖所示:

使用混合 NEG 的本機存取點。

如要在負載平衡器代管的虛擬私有雲網路以外,提供混合式服務,可以使用 Private Service Connect 發布服務。在內部區域 TCP Proxy 負載平衡器前方放置服務連結,即可讓其他 VPC 網路中的用戶端存取內部部署或其他雲端環境中執行的混合式服務。

在跨雲端環境中,使用混合式 NEG 可確保應用程式間的通訊安全。

如果其他機構發布應用程式服務,請使用混合 NEG 擴充該服務的私有存取權抽象概念。下圖說明這種情況:

其他網路中服務前面的混合型 NEG。

在上圖中,應用程式服務層完全由鄰近的 CSP 組成,圖表中未灰顯的部分即為此層。混合式負載平衡器會搭配 Private Service Connect 服務連結使用,做為發布外部應用程式服務的機制,供Google Cloud內私下使用。混合式負載平衡器 (含混合式 NEG 和 Private Service Connect 服務連結) 位於虛擬私有雲中,而該虛擬私有雲是服務供應商專案的一部分。這個服務生產者專案通常會與中繼虛擬私有雲不同,因為它位於生產者機構或專案的管理範圍內,因此與常見的中繼服務不同。供應商虛擬私有雲不需要透過虛擬私有雲對等互連或高可用性 VPN,與用戶虛擬私有雲 (即圖表中的服務共用虛擬私有雲) 連線。

集中管理服務存取權

服務存取權可集中在虛擬私有雲網路中,並從其他應用程式網路存取。下圖顯示可集中管理存取點的常見模式:

專用服務虛擬私有雲。

下圖顯示從專屬服務 VPC 存取的所有服務:

具備集中式負載平衡器的專屬服務虛擬私有雲。

如果服務前端使用應用程式負載平衡器,您可以運用網址對應,為不同的服務後端導向流量,不必為每個服務使用不同的負載平衡器,進而減少負載平衡器數量。原則上,應用程式堆疊可完全由單一應用程式負載平衡器、服務後端和適當的網址對應組成。

在這個實作方式中,您必須使用跨虛擬私有雲的混合式 NEG,才能支援大多數後端類型。例外狀況是 Private Service Connect NEG 或後端,如「透過 Private Service Connect 顯式串連 L7 負載平衡器 Google Cloud 」一文所述。

跨 VPC 使用混合 NEG 時,後端會無法自動修復和自動調度資源。發布的服務在生產者租戶中已有負載平衡器,可提供自動調度資源功能。因此,只有在您集中管理服務層的負載平衡功能,而非從發布內容取用時,才會遇到混合式 NEG 的限制。

使用這項服務網路模式時,請注意服務是透過額外的負載平衡層耗用。

Private Service Connect 服務端點可透過 Network Connectivity Center 輪輻虛擬私有雲連線。

集中式模式會在服務的消費者端新增一層負載平衡。使用這個模式時,您也需要在消費者專案中管理憑證、復原能力和額外的 DNS 對應。

其他注意事項

本節包含未在本文件中明確涵蓋的常見產品和服務注意事項。

GKE 控制層注意事項

GKE 控制平面部署在 Google 管理的租戶專案中,並透過虛擬私有雲網路對等互連連線至客戶的虛擬私有雲。由於虛擬私有雲網路對等互連不具遞移性,因此無法透過中樞和輪輻虛擬私有雲對等互連網路拓撲,直接與控制層通訊。

考量 GKE 設計選項 (例如集中式或分散式) 時,從多雲來源直接存取控制層是主要考量因素。如果 GKE 部署在集中式 VPC 中,即可跨雲端和Google Cloud存取控制層。不過,如果 GKE 部署在分散式 VPC 中,就無法直接與控制層通訊。如果機構的規定要求存取 GKE 控制層,且採用去中心化設計模式,網路管理員可以部署連線代理程式做為 Proxy,藉此克服非傳遞對等互連的限制,存取 GKE 控制層。

安全性 - VPC Service Controls

如果工作負載涉及機密資料,您可以使用 VPC Service Controls,為虛擬私人雲端資源以及 Google 代管服務設定服務範圍,並控制跨範圍邊界的資料移動。藉由 VPC Service Controls,您可以將專案和內部部署網路集合到單一範圍內,避免透過 Google 代管服務存取資料。您可以使用 VPC Service Controls 輸入和輸出規則,允許不同服務範圍中的專案和服務進行通訊 (包括不在範圍內的虛擬私有雲網路)。

如要瞭解建議的部署架構、完整的入門程序和作業最佳做法,請參閱「企業適用的 VPC 服務控管最佳做法」和「安全性基礎藍圖」。

API/服務適用的 DNS

服務供應商可以使用 Private Service Connect 發布服務。服務生產者可以選擇設定要與服務建立關聯的 DNS 網域名稱。如果已設定網域名稱,且服務消費者建立以該服務為目標的端點,Private Service Connect 和 Service Directory 會在服務消費者虛擬私有雲網路的私人 DNS 區域中,自動為該服務建立 DNS 項目。

後續步驟

貢獻者

作者:

其他貢獻者: