Spring Cloud分散式叢集服務搭建之發現與註冊
springBoot簡化了一個工程開發的配置過程,但對於叢集化服務,spring有一套叫做springCloud的解決方案,它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。
本文主要講一下springCloud的發現與註冊的配置方案
首先建立一個eureka註冊服務
建立一個maven專案
pom檔案中新增以下配置:
<name>eureka-server</name> <description>Spring Cloud project</description><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
結果如下:
在resources中新增application.properties檔案配置如下
server.port=1111 #eureka.instance.hostname=localhost eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
專案結構如下
如果是application.yml檔案,則配置如下
server: port: 1111 eureka: client: # 表示是否註冊自身到eureka伺服器 register-with-eureka: false # 是否從eureka上獲取註冊資訊 fetch-registry: false service-url: defaultZone: http://localhost:${server.port}/eureka/
專案結構如下:
新增專案啟動類 Application 內容如下
@EnableEurekaServer @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } }
專案結構如圖所示
執行main方法,以啟動註冊服務
訪問服務:http://localhost:1111/
發現服務已生效,第一部分結束
<!-- -------------------------------分割線-------------------------------------- -->
將springBoot服務註冊進入Eureka
首先將pom檔案中新增配置
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
重新編譯maven專案:
在application配置檔案中配置服務名,以及Eureka服務地址(如圖所示):
程式碼如下:
spring: application: name: test-Demo
eureka: client: service-url: defaultZone: http://localhost:1111/eureka/
如果是application.properties檔案,則新增以下配置
spring.application.name=compute-service eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
隨後,在啟動類Application中,加入註釋:
@EnableDiscoveryClient
如圖:
OK,啟動服務,重新整理或訪問http://localhost:1111/ 可以看到:
剛才啟動的服務 埠已經註冊到Eureka服務中了。
如果幾個springBoot同時註冊到一個Eureka服務上,就組成了一個springCloud叢集,下一篇將講一下springCloud叢集服務間的呼叫