SpringCloud-Zookeeper

Spring Cloud介紹

Spring Cloud是一個基於SpringBoot實現的微服務架構開發工具。它爲微服務架構中涉及的配置管理、服務治理、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等操做提供了一種簡單的開發方式,基於http協議開發的開箱即用的微服務架構java

註冊中心

Spring Cloud 早期版本的註冊中心主要使用Eureka,但在2.0事後,Netflix再也不對Eureka更新維護,可是註冊中心有不少實現方式,Spring Cloud Consul是其中一種,本文主要介紹Spring Cloud Zookeeper,在實際使用中也是遇到了不少坑。Zookeeper是一個高性能,分佈式的,開源分佈式應用協調服務。它提供了簡單原始的功能,分佈式應用能夠基於它實現更高級的服務,好比同步,配置管理,集羣管理,名空間。它被設計爲易於編程,使用文件系統目錄樹做爲數據模型git

小試牛刀

  • maven項目結構
springboot-sample  
    |--springcloud-feign //消費者
    |--springcloud-zookeeper //服務提供者
    |--pom
複製代碼
  • 服務提供者github

    • 項目結構
      springcloud-zookeeper
          |--src
              |--main
                  |--java
                      |--com.fanhq.example
                          |--config
                          |--controller
           --pom        
      複製代碼
    • 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的版本進行調整,不建議使用官網的方式
    • Java配置
      @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        
      複製代碼
    • 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>
      複製代碼

相關文章
相關標籤/搜索