一、序
關於微服務的話就不多說了,spring-cloud也已經接觸多時,開個專欄做一下總結,具體思路差不多是這樣。
按照微服務搭建框架順序進行整理、總結。並會在文尾增量展示微服務高可用架構。
二、開篇
2.1、服務註冊及發現-Eureka
eureka應該是最早的,應用更廣泛的服務發現框架了;eureka是由Netflix開發的框架,主要用於服務的註冊發現,本身是REST接口調用。
2.2、創建高可用註冊中心
在這裏show下父pom統一管理的配置
2.2.1、父pom
<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>Greenwich.SR3</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>
這裏就展示父pom部分關鍵內容。spring-cloud用的是當前版本Greewich.SR3。
2.2.2、子pom
配置對於eureka服務端來說,來一個spring-cloud-starter-netflix-eureka-server的依賴即可。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
2.2.3、Eureka集羣配置
application.yml
spring:
application:
name: eureka-server-cluster
profiles:
active: eureka-serve-01
application-eureka-server1.yml
server:
port: 8034
spring:
profiles: eureka-serve-01
eureka:
instance:
hostname: eureka-serve-01
instance-id: eureka-serve-01
prefer-ip-address: true
client:
service-url:
defaultZone: http://eureka-serve-02:8035/eureka/,http://eureka-serve-03:8036/eureka/
application-eureka-server2.yml
server:
port: 8035
spring:
profiles: eureka-serve-02
eureka:
instance:
hostname: eureka-serve-02
instance-id: eureka-serve-02
prefer-ip-address: true
client:
service-url:
defaultZone: http://eureka-serve-02:8034/eureka/,http://eureka-serve-03:8036/eureka/
application-eureka-server3.yml
server:
port: 8036
spring:
profiles: eureka-serve-03
eureka:
instance:
hostname: eureka-serve-03
instance-id: eureka-serve-03
prefer-ip-address: true
client:
service-url:
defaultZone: http://eureka-serve-02:8034/eureka/,http://eureka-serve-03:8035/eureka/
我是使用idea啓動三個eureka進程從而構建一個虛擬集羣。從而可以保證eureka的高可用。這裏需要注意的點有如下幾處:
- 集羣各server.port、eureka.instance.hostname、eureka.instance.instance-id需要唯一
- eureka.client.service-url.defaultZone默認的註冊域需要每個eureka服務端分別註冊其他兩服務,從而實現相互註冊。以保證高可用
接下來,當然少不了spring-boot項目啓動類starter
package com.king.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run( EurekaServerApplication.class, args);
}
}
# C:\Windows\System32\drivers\etc\host修改如下內容
127.0.0.1 eureka-serve-01 eureka-serve-02 eureka-serve-03
接下來,修改application.yml中spirng.profiles.active的值,分別啓動eureka-serve-01、2、3即可。
在這之後,一但有某一個服務註冊在其中一個例如eureka-server-01服務端上,那麼該服務也會在其他兩個服務02、03上進行註冊。從而避免了註冊中心的單點故障。