諸如服務發現,負載平衡和斷路器之類的模式適用於全部Spring Cloud客戶端能夠獨立於實現(例如經過Eureka或Consul發現)的消耗的共同抽象層。spring
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
來禁用此功能。學習
Commons如今提供了一個ServiceRegistry
接口,它提供了諸如register(Registration)
和deregister(Registration)
之類的方法,容許您提供定製的註冊服務。Registration
是一個標記界面。this
@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
實現。spa
服務部門自動註冊。歡迎你們一塊兒學習研究相關技術願意瞭解源碼的朋友直接求求交流分享技術二一四七七七五六三三code
默認狀況下,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
的狀態更改成新值。請參閱您正在使用的ServiceRegistry
實現的文檔,以獲取更新狀態的容許值和爲狀態獲取的值。get