• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SpringCloud學習教程一( 服務的注冊與發現 Eureka)

    本文是根據方志明的springCloud學習教程進行個人細化,記錄個人學習的教程可能會做一些小的修改讓文章更便于理解,

    原著參考案例全部采用Spring Boot 1.5.x ,Spring Cloud版本為Dalston.RELEASE

    一、spring cloud簡介

    spring cloud 為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等。它運行環境簡單,可以在開發人員的電腦上跑。另外說明spring cloud是基于springboot的,所以需要開發中對springboot有一定的了解,如果不了解的話可以看這篇文章:2小時學會springboot。另外對于“微服務架構” 不了解的話,可以通過搜索引擎搜索“微服務架構”了解下。

    注意 : 

    1.1 (技術前提) springBoot , spring , maven , idea ,

    二、創建服務注冊中心

    在這里,我們需要用的的組件上Spring Cloud Netflix的Eureka ,eureka是一個服務注冊和發現模塊。

    2.1 首先創建一個maven主工程。

    2.2 然后創建2個model工程:一個model工程作為服務注冊中心,即Eureka Server,另一個作為Eureka Client。

     下面以創建server為例子,詳細說明創建過程:

     右鍵工程->創建model-> 選擇spring initialir 如下圖:

     

     下一步->選擇cloud discovery->eureka server ,然后一直下一步就行了。


     idea自動創建完后的工程的pom.xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.forezp</groupId>
        <artifactId>eurekaserver</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>eurekaserver</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.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>
        </properties>
    
        <dependencies>
            <!--eureka server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
    
            <!-- spring boot test-->
            <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>Dalston.RC1</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>
    
        <repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>
    
    
    </project>



    2.3 啟動一個服務注冊中心只需要一個注解@EnableEurekaServer,這個注解需要在springboot工程的啟動application類上加:

     

    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaserverApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaserverApplication.class, args);
        }
    }

    2.4 eureka是一個高可用的組件,它沒有后端緩存,每一個實例注冊之后需要向注冊中心發送心跳(因此可以在內存中完成),默認情況下eureka服務器也是一個eureka客戶端,還需要一個url來定位節點

     小知識: 注冊服務默認心跳時間為30秒,當一個服務器不可用,需要3個心跳才能讓服務器和客戶端的元數據相同。可以使用eureka.instance.leaseRenewalIntervalInSeconds加快這個過程。在生產環境最好使用默認配置。

    e ureka server的配置文件appication.yml:

    server:
      port: 8761 #服務端口
    
    eureka:
      instance:
        hostname: localhost
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

     通過eureka.client.registerWithEureka:false和fetchRegistry:false來表明自己是一個eureka server.

    2.5 eureka server 是有界面的,啟動工程,打開瀏覽器訪問: 

      訪問你的服務注冊中心http://localhost:8761 ,界面如下

     

    No application available 沒有服務被發現 ……^_^ 
    因為沒有注冊服務當然不可能有服務被發現了。

    三、創建一個服務提供者 (eureka client)

     當client向server注冊時,它會提供一些元數據,例如主機和端口,URL,主頁等。Eureka server 從每個client實例接收心 跳消息。 如果心跳超時,則通常將該實例從注冊server中刪除。

     創建過程同server類似,創建完pom.xml如下:

     
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.forezp</groupId>
        <artifactId>service-hi</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>service-hi</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.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>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</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>Dalston.RC1</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>
    
        <repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>
    
    
    </project>

     通過注解@EnableEurekaClient 表明自己是一個eurekaclient.

     

    @SpringBootApplication
    @EnableEurekaClient
    @RestController
    public class ServiceHiApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ServiceHiApplication.class, args);
        }
    
        @Value("${server.port}")
        String port;
        @RequestMapping("/hi")
        public String home(@RequestParam String name) {
            return "hi "+name+",i am from port:" +port;
        }
    
    }
    

     僅僅@EnableEurekaClient是不夠的,還需要在配置文件中注明自己的服務注冊中心的地址,application.yml配置文件如 下:

     

    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/
    server:
      port: 8762
    spring:
      application:
        name: service-hi

     需要指明spring.application.name,這個很重要,這在以后的服務與服務之間相互調用一般都是根據這個name 。 

     啟動工程,打開http://localhost:8761 ,即eureka server 的網址:(就能夠在下圖發現自己的其它服務是否被注冊進來)

     

     你會發現一個服務已經注冊在服務中了,服務名為SERVICE-HI ,端口為7862

     這時打開 http://localhost:8762/hi?name=forezp ,你會在瀏覽器上看到 :

     

    hi forezp,i am from port:8762

     源碼下載:https://github.com/forezp/SpringCloudLearning/tree/master/chapter1
    版權聲明:本文為qq_29807745原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_29807745/article/details/79286370

    智能推薦

    一、SpringCloud服務的注冊與發現(Eureka)

    一.Euraka介紹 Eureka是Netflix開發的服務發現框架,本身是一個基于REST的服務,主要用于定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。Spring Cloud將它集成在其他子項目spring-cloud-netflix中,以實現spring cloud服務發現功能。 1.1Euraka原理 Region: AWS云服務在全球不同的地方都有數據中心,...

    小白學SpringCloud(一):服務的注冊與發現(Eureka)

    一、引言 首先我們先引用Dubbo官網的一段話 單一應用架構 當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。 此時,用于簡化增刪改查工作量的 數據訪問框架(ORM) 是關鍵。 垂直應用架構 當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。 此時,用于加速前端頁面開發的 Web框架(MVC) 是關鍵。 分布式服務架構 ...

    springcloud學習筆記一:eureka服務注冊與發現

    springcloud可以方便的幫我們完成微服務架構,它擁有多個子項目,可以去官網簡單看下介紹。 其中component下的代表著現有的子項目,本次所記錄的eureka就是其中spring-cloud-netflix里的一個模塊。 eureka在我們微服務架構中實現的就是服務發現與注冊的功能,我們可以稱之為注冊中心,即我們開發的服務注冊到該注冊中心,同時服務消費端來注冊中心訂閱服務。 我們可以直接...

    springcloud(三)--服務注冊與發現Eureka

    如題,本篇我們來引入SpringCloud中服務注冊與發現組件--Eureka,然后將SIM服務提供者向Eureka服務器進行注冊。  一、Eureka 是什么 Eureka是Netflix開發的服務發現框架,本身是一個基于REST的服務,主要用于定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。SpringCloud將它集成在其子項目spring-c...

    SpringCloud(二):服務注冊與發現——Eureka

    服務注冊與發現——Eureka 是什么? Eureka架構圖 Eureka兩個組件 Server Client 構建Eureka Server服務 構建Eureka Client 在provider中模擬發現服務 actutor微服務信息完善 Eureka的自我保護 Eureka集群配置 是什么? 是Netflix的一個子模塊,也是核心模塊之一,基于REST的服務 用于云端...

    猜你喜歡

    springcloud eureka服務注冊與發現

    本節示例只提供服務注冊,消費服務在后面的章節中 Eureka的原理就不介紹了,直接寫代碼。 編寫Eureka Service 新建一個spring boot Maven項目,添加如下依賴 啟動類添加@EnableEurekaServer注解,聲明是一個Eureka Server。 配置文件 eureka.client.registerWithEureka 表示是否將自己注冊到Eureka Serv...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡