Spring Cloud Ribbon在Kubernetes中發(fā)現(xiàn)

2024-01-08 17:19 更新

Spring Cloud調(diào)用微服務(wù)的客戶端應(yīng)用程序應(yīng)該對(duì)依靠客戶端負(fù)載平衡功能感興趣,以便自動(dòng)發(fā)現(xiàn)它可以在哪個(gè)端點(diǎn)到達(dá)給定服務(wù)。該機(jī)制已在 spring-cloud-kubernetes-ribbon 項(xiàng)目中實(shí)現(xiàn),其中Kubernetes客戶端填充Ribbon ServerList,其中包含有關(guān)此類端點(diǎn)的信息。

該實(shí)現(xiàn)是以下啟動(dòng)器的一部分,可以通過(guò)將其依賴項(xiàng)添加到pom文件中來(lái)使用該實(shí)現(xiàn):

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
    <version>${latest.version}</version>
</dependency>

填充端點(diǎn)列表后,Kubernetes客戶端通過(guò)匹配Ribbon Client批注中定義的服務(wù)名稱來(lái)搜索位于當(dāng)前名稱空間或項(xiàng)目中的已注冊(cè)端點(diǎn),如下所示:

@RibbonClient(name = "name-service")

您可以使用以下格式,在application.properties中(通過(guò)應(yīng)用程序?qū)S玫?code class="literal" i="5577">ConfigMap)提供屬性,以配置Ribbon的行為:<name of your service>.ribbon.<Ribbon configuration key>,其中:

  • <name of your service>對(duì)應(yīng)于您在Ribbon上訪問(wèn)的服務(wù)名稱,該名稱是使用@RibbonClient批注配置的(例如上例中的name-service)。
  • <Ribbon configuration key> Ribbon的CommonClientConfigKey 定義的Ribbon配置鍵之一 。

此外,spring-cloud-kubernetes-ribbon項(xiàng)目定義了兩個(gè)附加的配置鍵,以進(jìn)一步控制Ribbon與Kubernetes的交互方式。特別是,如果端點(diǎn)定義了多個(gè)端口,則默認(rèn)行為是使用找到的第一個(gè)端口。要更具體地選擇在多端口服務(wù)中使用哪個(gè)端口,可以使用【7 /】鍵。 如果您想指定應(yīng)在哪個(gè)Kubernetes命名空間中查找目標(biāo)服務(wù),則可以使用KubernetesNamespace鍵,在這兩個(gè)實(shí)例中都記住要為這些鍵加上您的服務(wù)名和ribbon前綴(如前所述)。

以下示例使用此模塊進(jìn)行功能區(qū)發(fā)現(xiàn):

您可以通過(guò)在應(yīng)用程序?qū)傩晕募性O(shè)置spring.cloud.kubernetes.ribbon.enabled=false鍵來(lái)禁用Ribbon發(fā)現(xiàn)客戶端。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)