背景
2019年第一篇blog打算從微服務開始,正所謂自己立下的flag趴著也要寫完^^.所以從今天開始打算會持續寫Spring-Cloud相關文章.
什麼是微服務
- 微服務是一種架構風格
- 一些列微小的服務組成
- 每個服務獨立開發,獨立部署
為甚麼採用微服務
因為單體用用存在一些問題,總結歸納如下:
- 開發效率低(程式碼體系大)
- 程式碼維護難(程式碼體系大)
- 穩定性不高(改動一個模組可能影響其他程式碼功能)
- 擴充套件困難(單個模組擴充套件需要考慮是否影響其他模組功能)
- 部署不夠靈活(部署時間超級長,部署繁瑣)
什麼是Eureka
- Eureka:在英文詞典中意為"找到了,發現了", 顧名思義,他在Spring-Cloud中承擔的角色是服務的註冊與發現
- Spring Cloud Eureka 是基於Netflix Eureka做的二次封裝
- Spring Cloud Eureka 元件由兩部分組成 Eureka-Server, Eureka-Client
- Eureka-Server:服務註冊中心
- Eureka-Client:服務註冊和服務呼叫
說明
- 在系列部落格中,Spring-Cloud版本是:Greenwich.RC1
- IDE 採用idea
- Spring-Boot 版本:2.1.1.RELEASE,關於Spring-CLoud版本和Boot的版本對應,我們可以去官網檢視,我們這裡選擇如下
搭建Eureka-Server
-
開啟idea,選擇建立Spring專案
-
選擇Maven座標:gav
-
選擇專案型別為Eureka-Server
-
建立完專案之後,檢視Pom中Spring-Cloud與Boot版本:
<!-- spring-boot版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- spring-cloud版本 -->
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RC1</spring-cloud.version>
</properties>
複製程式碼
- 作為Eureka-Server我們需要在啟動類新增註解@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
複製程式碼
- 配置檔案修改
- 由於Spring-Cloud中bootstrap.yml/properties(這裡採用yml)是專案的啟動載入配置檔案,所以我們先將配置檔案重新命名為bootstrap.yml
- 作為服務註冊中心,我們要求高可靠性和穩定性,所以我們這裡搭建三套Eureka-Server,埠分別為8761, 8762, 8763;其專案搭建方式一樣(同上), Eureka-Server1的配置檔案如下:
eureka:
client:
service-url:
defaultZone: http://localhost:8762/eureka/,http://localhost:8763/eureka/
register-with-eureka: false
spring:
application:
name: eureka-server
server:
port: 8761
複製程式碼
Eureka-Server2的配置檔案如下:
spring:
application:
name: eureka-server2
server:
port: 8762
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8763/eureka/
register-with-eureka: false
複製程式碼
Eureka-Server3的配置檔案如下:
spring:
application:
name: eureka-server3
server:
port: 8763
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
複製程式碼
配置說明:
- spring.application.name: 是服務的名稱
- server.port: 代表服務的埠
- eureka.client.register-with-eureka=false 表示讓Eureka-Server自己不需要註冊到自己
- 由上面三個Eureka-Server的配置我們可以看到,在註冊Eureka-Server叢集中,我們只需要將不同的Eureka-Server相互註冊,就可以實現Eureka-Server的高可用
- 啟動服務 啟動服務之後我們可以訪問:http://localhost:8761/; http://localhost:8762/; http://localhost:8763/ 發現註冊中心已經啟動:
結尾
到這裡,我們叢集式的Eureka-Server已經搭建好了, 我們下一節來搭建Eureka-Client來發現服務.好了,預知後事如何, 請聽下回分解!