首頁  >  文章  >  Java  >  深入解析springCloud的Eureka實踐

深入解析springCloud的Eureka實踐

无忌哥哥
无忌哥哥原創
2018-07-20 11:30:223077瀏覽

1.初識springcloud

微服務是一種架構方式,最終肯定需要技術架構去實作。

微服務的實現方式很多,但是最火的莫過於Spring Cloud了

Spring最擅長的就是集成,把世界上最好的框架拿過來,集成到自己的項目中。

SpringCloud也是一樣,它將現在非常流行的一些技術整合到一起,實現了諸如:配置管理,服務發現,智能路由,負載平衡,熔斷器,控制總線,集群狀態等等功能。其主要涉及的元件包括:

  • Eureka:註冊中心

  • Zuul:服務閘道
  • Ribbon:負載平衡

  • Feign:服務呼叫

  • Hystix:熔斷器

今天主要認識springcloud的註冊中心Eureka

這裡舉個生活中的實例:

在叫車出現以前,人們出門叫車只能叫計程車。有些私家車想做出租卻沒有資格,稱為黑車。而很多人想要約車,但是無奈計程車太少,不方便。私家車很多卻不敢攔,而且滿街的車,誰知道哪個才是願意載人的。一個想要,一個願意給,就是缺少引子,缺乏管理。

此時滴滴這樣的叫車平台出現了,所有想載客的私家車全部到滴滴註冊,記錄你的車型(服務類型),身份資訊(聯絡方式)。這樣提供服務的私家車,在滴滴那裡都能找到,一目了然。

此時要叫車的人,只需要打開APP,輸入你的目的地,選擇車型(服務類型),滴滴自動安排一個符合需求的車到你面前,為你服務.

回到springcloud的Eureka上來,Eureka就好比是滴滴,負責管理、記錄服務提供者的信息。服務呼叫者不需要自己找服務,而是把自己的需求告訴Eureka,然後Eureka會把符合你需求的服務告訴你。同時,服務提供者與Eureka之間透過「心跳」機制進行監控,當某個服務提供者出現問題,Eureka自然會把它從服務清單中剔除。

這實現了服務的自動註冊、發現、狀態監控。

深入解析springCloud的Eureka實踐

Eureka:就是服務註冊中心(可以是叢集),對外暴露自己的地址

提供者:啟動後向Eureka註冊自己資訊(地址,提供什麼服務)

消費者:向Eureka訂閱服務,Eureka會將對應服務的所有提供者地址清單發送給消費者,並且定期更新

心跳(續約) :提供者定期透過http方式向Eureka刷新自己的狀態

實務:

#Eureka註冊中心結構圖:

深入解析springCloud的Eureka實踐

##完善pom.xml檔,新增依賴

以下是pom檔主要部分

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.0.3.RELEASE</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent>

<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.RELEASE</spring-cloud.version>
</properties>

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <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-test</artifactId>
      <scope>test</scope>
   </dependency>
</dependencies>

<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>

<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>

編輯啟動類別

@SpringBootApplication
@EnableEurekaServer // 声明这个应用是一个EurekaServer
public class SpringcloudEurekaServerApplication {

   public static void main(String[] args) {

      SpringApplication.run(SpringcloudEurekaServerApplication.class, args);
   }
}

#編寫application.yml配置

server:
  port: 8081 # 端口
spring:
  application:
    name: eureka-server # 应用名称,会在Eureka中显示
eureka:
  client:
    register-with-eureka: false # 是否注册自己的信息到EurekaServer,默认是true
    fetch-registry: false # 是否拉取其它服务的信息,默认是true
    service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。
      defaultZone: http://127.0.0.1:${server.port}/eureka

運行專案:訪問http://127.0.0.1:8081

深入解析springCloud的Eureka實踐

此時一個Eureka註冊中心就建置成功了

以上是深入解析springCloud的Eureka實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn