Spring-Cloud(一)——服務發現Eureka

一、序

關於微服務的話就不多說了,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上進行註冊。從而避免了註冊中心的單點故障。

2.3、高可用eureka在微服務中的架構圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章