基於spring boot實現的服務治理工具包,管理和協微服務java
把別人的東西拿來組合在一塊兒,造成各類組件web
微服務協調者【service registtry註冊中心 Eureka】--統一的網關【api gateway-zuul】spring
負載均衡【ribbon】--分佈式配置 【config】-斷路器【hystrix】api
服務者--消費者 都向Eureka註冊中心去註冊,一個負責生產,一個負責消費springboot
和eclipse有點區別,建立maven項目服務器
看下項目結構架構
和eclipse中的workspace同樣。app
帶個端口明確一下。負載均衡
讓四個模塊繼承一個父親 。在總項目的pom.xml中添加spring boot ,這個下面的四個模塊都會繼承eclipse
${spring-cloud.version} 是一個變量,要定義在properties中。
如下代碼是引入spring cloud.
必定要注意版本是否正確。我在這裏就入了一個大坑 。
先開始定義的spring-cloud.version寫成了 spring-cloud.verison,致使cloud怎麼也導入不進來
費了很大功夫才發現。
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java-version>1.8</java-version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
這裏要注意springboot 與springcoud 的版本的匹配,能夠參考:
https://spring.io/projects/spring-cloud
springboot的最新版 ,springcloud不必定就支持,要看對應關係 。
這裏有一位同窗寫的踩坑旅程,有興趣的能夠參考一下。少走一些彎路
https://blog.51cto.com/honly/2156583?source=dra
如下圖中能夠看到。srpingboot 2.0開 頭的版本,要用springcloud的Finchley來適配
Finchley 又分爲 Release ,SR1-SR4 . 選擇本身須要的就能夠。 好比Finchley Release 或者Finchley SR1
如下網址是springcloud maven中面倉庫的地址
https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-dependencies/
能夠看到Finchley.Release是Finchley最新發布的一個版本,以後纔有sr1-4
而後是Greenwich.Releash版本,這個是針對springboot 2.1.x版本作的適配
每一個版本都有針對的說明 : 好比
finchley.Release的官方說明:https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available
中文說明 參考:https://www.oschina.net/news/97226/spring-cloud-finchley-released
顯著變化:
如下代碼是表示全部的模塊都繼承springboot
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
若是表示模塊繼承了,在模塊的pom.xml中
//<artifactId>microservice_paent</artifactId> 表示繼承了父類 <parent> <artifactId>microservice_paent</artifactId> <groupId>com.project</groupId> <version>1.0-SNAPSHOT</version> </parent>
添加springboot ,spring.cloud的依賴。
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
在src->main->resources中添加 application.yml.指定服務器端口號,同時配置 Eureka的配置
server: port: 7001 eureka: instance: hostname: 127.0.0.1 client: register-with-eureka: false fetch-registry: false service-url: defaultZone:http://${eureka.instance.hostname}:${server.port}/eureka/
在src->main->java中添加新類。
這些相似於單項目 springboot項目的建立。
這裏若是@EnableEurekaServer不出現智能提示,或者明顯有錯誤,須要去檢查springcloud是否導入 進來
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaServiceApplication { public static void main(String[] args) { SpringBootApplication.run(EurekaServiceApplication.class,args); } }
也能夠去檢查依賴的包裏是否有cloud的字樣,好比下圖,若是沒有,檢查配置 pom.xml確保springcloud導入進來再進行操做。
下面就會有區別了。請等下一篇 ,今天有幾個坑入的比較深