spring cloud之Eureka--服務(wù)治理

最近一直在看spring的一些框架, 前面發(fā)布了一些關(guān)于springboot的文章, 然而學(xué)習(xí)是不能止步的. 學(xué)習(xí)多了才發(fā)現(xiàn)學(xué)習(xí)還是蠻有意思的.后面一段時間會持續(xù)更新一些關(guān)于springcloud的文章;

下面是我github的一個demo僅供參考,后續(xù)我會將spring cloud的內(nèi)容繼續(xù)完善;
spring_cloud_demo

1.什么是Eureka

Eureka是Netflix開發(fā)的服務(wù)發(fā)現(xiàn)框架, 本身是一個基于REST的服務(wù);(這里我們在請求時候基本運用的是RESTful風(fēng)格的URL, 后面會說道)
Eureka包含兩個組件:Eureka Server和Eureka Client。
Eureka Server提供服務(wù)注冊服務(wù),各個節(jié)點啟動后,會在Eureka Server中進(jìn)行注冊,這樣EurekaServer中的服務(wù)注冊表中將會存儲所有可用服務(wù)節(jié)點的信息,服務(wù)節(jié)點的信息可以在界面中直觀的看到。
在應(yīng)用啟動后,將會向Eureka Server發(fā)送心跳,默認(rèn)周期為30秒,如果Eureka Server在多個心跳周期內(nèi)沒有接收到某個節(jié)點的心跳,Eureka Server將會從服務(wù)注冊表中把這個服務(wù)節(jié)點移除(默認(rèn)90秒)。
Eureka Server之間通過復(fù)制的方式完成數(shù)據(jù)的同步,Eureka還提供了客戶端緩存機制,即使所有的Eureka Server都掛掉,客戶端依然可以利用緩存中的信息消費其他服務(wù)的API。綜上,Eureka通過心跳檢查、客戶端緩存等機制,確保了系統(tǒng)的高可用性、靈活性和可伸縮性。

Eureka

如圖有三個模塊,
1.服務(wù)發(fā)現(xiàn)組件: 這個就是Eureka service, 消費者和服務(wù)者都要在該服務(wù)器上注冊,只有在這個服務(wù)上注冊的才可以相互進(jìn)行數(shù)據(jù)交流
2:服務(wù)消費者: 調(diào)用方, 例如查看訂單下的所有商品, 現(xiàn)在訂單系統(tǒng)是一個服務(wù)器, 商品系統(tǒng)是一個服務(wù)器; 我只能拿到訂單號, 找到訂單下的商品的id, 為了得到商品信息, 只有拿著這些商品id去商品服務(wù)上去找商品.
3.服務(wù)提供者: 被調(diào)用方, 2中說道的商品服務(wù),為訂單系統(tǒng)調(diào)用提供數(shù)據(jù).

2.spring cloud

當(dāng)你學(xué)習(xí)過spring springMVC后你會發(fā)現(xiàn), spring后面出的框架都是在這些基礎(chǔ)上進(jìn)行疊加, 對其他框架進(jìn)行整合, 去其糟粕,取其精華;
spring cloud, 基于spring boot之上進(jìn)行開發(fā), cloud將許多優(yōu)秀的框架進(jìn)行對spring的兼容, 并二次封裝,讓使用者更加方面的調(diào)取服務(wù);spring boot是spring cloud的基礎(chǔ); 一會boot, 一會cloud 是不是很亂; 如果還不會使用spring boot的請左轉(zhuǎn) 手把手教你springboot快速整合mybatis;

3.創(chuàng)建一個Eureka服務(wù)端

廢話不多說了,下面進(jìn)入正題;

3.1添加依賴

pom.xml

<!-- 這里可以用IDEA進(jìn)行快速創(chuàng)建spring boot項目 -->
<parent>
      <!--spring boot 基礎(chǔ)依賴-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath/> 
    </parent>
<!-- 使用dependencyManagement進(jìn)行版本管理 
    spring cloud里面整合了大量的框架, 使用這個對里面的依賴進(jìn)行統(tǒng)一管理
-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
<!-- 引入eureka server依賴 -->
    <dependencies>
         <!-- 引入eureka server依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>

3.2添加注解

依賴我們加入后, 需要在spring boot的啟動類中添加一個注解

package cn.cooplan.eurekaservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer   //告訴spring boot啟動Eureka的服務(wù)端
@SpringBootApplication
public class EurekaServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServiceApplication.class, args);
    }
}

3.3編寫配置文件

eureka:
  client:
  
    register-with-eureka: false #false 不將本服務(wù)注冊到eureka;(該項目為Eureka的服務(wù)端,只提供容器環(huán)境, 不進(jìn)行調(diào)用)
   
    fetch-registry: false  #false 不從Eureka拉取資源
    service-url:
  
      defaultZone: http://192.168.0.101:8003/eureka/  #defaultZone在編寫yml時候沒有提示, 注意的是一定要駝峰命名,不然會找不到Eureka服務(wù)地址
  instance:
  
    prefer-ip-address: true  #以IP地址注冊到服務(wù)中心,相互注冊使用IP地址

server:
  port: 8003 #修改tomcat默認(rèn)端口號, 因為在一臺電腦進(jìn)行演示, 避免端口沖突

3.4啟動Eureka服務(wù)

啟動spring boot就可以了, 啟動spring boot的啟動類;
瀏覽器訪問:http://192.168.0.101:8003
當(dāng)看到下面的頁面, 說明你的Eureka服務(wù)啟動成功

Eureka.jpg

到著我們已經(jīng)做了三分之一的工作,~ 下面是對消費者和生產(chǎn)者進(jìn)行配置;

4.配置生產(chǎn)者和消費者

這里我們以訂單系統(tǒng)為消費者, 商品系統(tǒng)為生產(chǎn)者;
創(chuàng)建order和goods兩個spring boot應(yīng)用, 添加spring cloud依賴, 添加依賴與3.創(chuàng)建一個Eureka服務(wù)端步驟一樣;

4.1添加啟動類注解, 編寫yml文件

Eureka的服務(wù)端與客戶端(生產(chǎn)者, 消費者)差異在啟動類加的注解不一樣, yml的配置參數(shù)不同;
下面舉例一個order為例, 兩者配置方法相同

4.2添加啟動類注解

package cn.cooplan.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient //開啟Eureka客戶端服務(wù), 代表該服務(wù)是一個客戶端
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

}

4.3編寫yml文件

eureka:
  client:
    fetch-registry: true    #true將服務(wù)添加到Eureka服務(wù)中
    register-with-eureka: true  #true允許從Eureka服務(wù)中獲取數(shù)據(jù), 進(jìn)行交互
    service-url:
      #注意: defaultZone 一定要駝峰命名
      defaultZone: http://192.168.0.101:8003/eureka/  #指向你的Eureka服務(wù)
server:
  port: 8002

4.4啟動Eureka客戶端

同Eureka service一樣啟動spring boot的啟動類; 注意的是, 先啟動Eureka service服務(wù), 不然客戶端會找不到service報錯
瀏覽器訪問:http://192.168.0.101:8003
當(dāng)看到下面的頁面, 說明你的客戶端已經(jīng)注冊到Eureka服務(wù)中

Eureka.jpg

5.總結(jié)

這個時候我們的Eueka服務(wù)已經(jīng)完成,
我們在使用spring cloud的時候, 實際上就是在寫一個spring boot的項目; cloud只是將我們需要的分布式框架與spring整合, 并且更方便的調(diào)用;
以上內(nèi)容是我在學(xué)習(xí)中自己摸索的, 如果有問題, 請留言;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容