springcloud是什么
基於spring boot實現的服務治理工具包,管理和協微服務
把別人的東西拿來組合在一起,形成各種組件
微服務協調者【service registtry注冊中心 Eureka】--統一的網關【api gateway-zuul】
負載均衡【ribbon】--分布式配置 【config】-斷路器【hystrix】
服務者--消費者 都向Eureka注冊中心去注冊,一個負責生產,一個負責消費
idea 如何創建多個模塊 。
和eclipse有點區別,創建maven項目


看下項目結構

和eclipse中的workspace一樣。
1.創建EurekaServer

帶個端口明確一下。
2.創建生產者和消者共用的接口

3.創建服務提供者

4.創建服務消費者

現在的項目架構

開始配置
想讓項目中的四個模塊 都擁有spring boot
讓四個模塊繼承一個父親 。在總項目的pom.xml中添加spring boot ,這個下面的四個模塊都會繼承
總項目的pom.xml
${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 的版本選擇
這里要注意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
顯著變化:
- 與 Spring Boot 2.0.x 兼容
- 不支持 Spring Boot 1.5.x
- 最低要求 Java 8
- 新增 Spring Cloud Function 和 Spring Cloud Gateway
以下代碼是表示所有的模塊都繼承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>
Eureka注冊中心的pom.xml
添加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>
Eureka注冊的配置
在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導入進來再進行操作。

下面就會有區別了。請等下一篇 ,今天有幾個坑入的比較深
