負載平衡和斷路器之類的模式適用於所有Spring Cloud客戶端可以獨立於實現(例如通過Eureka或Consul發現)的消耗的共同抽象層。Spring Cloud大型企業分散式微服務雲架構原始碼請加一七九一七四三三八零
@EnableDiscoveryClient
Commons提供@EnableDiscoveryClient
註釋。這通過META-INF/spring.factories
查詢DiscoveryClient
介面的實現。Discovery Client的實現將在org.springframework.cloud.client.discovery.EnableDiscoveryClient
鍵下的spring.factories
中新增一個配置類。DiscoveryClient
實現的示例是Spring Cloud Netflix Eureka,Spring Cloud Consul發現和Spring Cloud Zookeeper發現。
預設情況下,DiscoveryClient
的實現將使用遠端發現伺服器自動註冊本地Spring Boot伺服器。可以通過在@EnableDiscoveryClient
中設定autoRegister=false
來禁用此功能。
ServiceRegistry
Commons現在提供了一個ServiceRegistry
介面,它提供了諸如register(Registration)
和deregister(Registration)
之類的方法,允許您提供定製的註冊服務。Registration
是一個標記介面。
@Configuration
@EnableDiscoveryClient(autoRegister=false)
public class MyConfiguration {
private ServiceRegistry registry;
public MyConfiguration(ServiceRegistry registry) {
this.registry = registry;
}
// called via some external process, such as an event or a custom actuator endpoint
public void register() {
Registration registration = constructRegistration();
this.registry.register(registration);
}
}
複製程式碼
每個ServiceRegistry實現都有自己的Registry實現。
服務部門自動註冊。
預設情況下,ServiceRegistry實現將自動註冊正在執行的服務。要禁用該行為,有兩種方法。您可以設定@EnableDiscoveryClient(autoRegister=false)永久禁用自動註冊。您還可以設定spring.cloud.service-registry.auto-registration.enabled=false以通過配置禁用該行為。
服務註冊執行器端點
Commons提供/service-registry致動器端點。該端點依賴於Spring應用程式上下文中的Registration bean。通過GET呼叫/service-registry/instance-status將返回Registration的狀態。具有String主體的同一端點的POST將將當前Registration的狀態更改為新值。