Spring Cloud是一個基於SpringBoot實現的微服務架構開發工具。它爲微服務架構中涉及的配置管理、服務治理、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等操做提供了一種簡單的開發方式,基於http協議開發的開箱即用的微服務架構java
Spring Cloud 早期版本的註冊中心主要使用Eureka,但在2.0事後,Netflix再也不對Eureka更新維護,可是註冊中心有不少實現方式,Spring Cloud Consul是其中一種,本文主要介紹Spring Cloud Zookeeper,在實際使用中也是遇到了不少坑。Zookeeper是一個高性能,分佈式的,開源分佈式應用協調服務。它提供了簡單原始的功能,分佈式應用能夠基於它實現更高級的服務,好比同步,配置管理,集羣管理,名空間。它被設計爲易於編程,使用文件系統目錄樹做爲數據模型git
springboot-sample
|--springcloud-feign //消費者
|--springcloud-zookeeper //服務提供者
|--pom
複製代碼
服務提供者github
springcloud-zookeeper
|--src
|--main
|--java
|--com.fanhq.example
|--config
|--controller
--pom
複製代碼
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.5</version>
</dependency>
</dependencies>
複製代碼
注意:pom依賴這樣調整能夠根據本身zookeeper的版本進行調整,不建議使用官網的方式@Component
public class RegistrationConfig {
@Autowired
private AbstractAutoServiceRegistration serviceRegistration;
@EventListener(WebServerInitializedEvent.class)
public void register(WebServerInitializedEvent event) {
serviceRegistration.bind(event);
}
}
複製代碼
注意:這裏用的最新的springcloud版本進行踩坑,按照官網的例子,springcloud不會去zookeeper註冊服務,經過閱讀源碼添加以上配置觸發註冊的事件web
服務消費者(feign)spring
springcloud-feign
|--src
|--main
|--java
|--com.fanhq.example
|--client
|--consumer
--pom
複製代碼
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.5</version>
</dependency>
</dependencies>
複製代碼