領導者選舉
Spring Cloud Kubernetes 領導者選舉機制使用 Kubernetes ConfigMap 實現了 Spring Integration 的領導者選舉 API。
多個應用例項競爭領導權,但領導權只會授予一個。當獲得領導權時,領導者應用會收到一個帶有領導者 Context 的 OnGrantedEvent 應用事件。應用會週期性地嘗試獲得領導權,領導權將授予第一個呼叫者。領導者將保持領導者身份,直到它從叢集中移除,或者它放棄領導權。當領導權移除發生時,前任領導者會收到 OnRevokedEvent 應用事件。移除後,叢集中的任何例項都可能成為新的領導者,包括舊的領導者。
要將其包含在您的專案中,請新增以下依賴項。Fabric8 領導者實現
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-fabric8-leader</artifactId>
</dependency>
要指定用於領導者選舉的 ConfigMap 名稱,請使用以下屬性。
spring.cloud.kubernetes.leader.config-map-name=leader
領導者選舉資訊貢獻者
Spring Cloud Kubernetes Leader 包含一個 InfoContributor,它將領導者選舉資訊新增到 Spring Boot 的 /actuator/info 端點。此貢獻者提供有關當前領導者的資訊,包括領導者 ID、角色以及當前應用例項是否是領導者。
示例輸出
{
"leaderElection": {
"leaderId": "my-app-pod-1",
"role": "my-role",
"isLeader": true
}
}
您可以透過在 application.[properties | yaml] 中將 management.info.leader.enabled 設定為 false 來停用此 InfoContributor。
management.info.leader.enabled=false