• <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 學習(3):eureka集群

    SpringCloud 學習(3):eureka集群

    *這篇文章基于上篇文章進行修改,黃色背景為修改的部分。 

    1.介紹:Eureka集群就是n個Eureka服務器+n個Eureka客戶端,目的是實現負載均衡,減輕單個服務器的壓力。

    2.原理:



    3.代碼實現 

    • Eureka服務器(建立項目consultingPlatform_server):
      1).pom.xml
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.13.RELEASE</version>
        </parent>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Edgware.SR3</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
        </dependencies>
    2).application.properties(我們通過profiles指定不同的配置文件,模擬不同的服務器)|
     spring.profiles.active=server1
    #spring.profiles.active=server2

    .application-server1.properties

    server.port=1001
    #服務名稱
    spring.application.name=server
    #eureka服務器路徑
    eureka.client.service-url.defaultZone=http://localhost:1002/eureka/



    .application-server2.properties
    server.port=1002
    #服務名稱
    spring.application.name=server
    #eureka服務器路徑
    eureka.client.service-url.defaultZone=http://localhost:1001/eureka/



    在這里兩臺Eureka服務器互相注冊。。ok,到這里Eureka集群服務器已經搭建完畢,通過修改profiles分別啟動兩個Eureka服務器。


    3).Application.java(啟動類)
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
     
    @SpringBootApplication
    @EnableEurekaServer
    public class Application {
        public static void main(String[] args) {
            new SpringApplicationBuilder(Application.class).web(true).run(args);
        }
    }
    

    • 服務提供者(創建項目police_client)
    1).pom.xml
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.13.RELEASE</version>
        </parent>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Edgware.SR3</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
        </dependencies>
    2).application.properties(我們通過profiles指定不同的配置文件,模擬不同的客戶端)
    spring.profiles.active=client1
    
    #spring.profiles.active=client2
    .application-client1.properties
    server.port=2001
    #服務名稱
    spring.application.name=police
    #eureka服務器路徑
    eureka.client.service-url.defaultZone=http://localhost:1001/eureka/,http://localhost:1002/eureka/
    .application-client2.properties
    server.port=2002
    #服務名稱
    spring.application.name=police
    #eureka服務器路徑
    eureka.client.service-url.defaultZone=http://localhost:1001/eureka/,http://localhost/eureka/

    3 ).Application.java
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    /**
     * @author: lqh
     * @description:
     * @program: police_client
     * @create: 2018-06-06 11:50
     **/
    @SpringBootApplication
    @EnableEurekaClient
    public class Application {
        public static void main(String[] args) {
            new SpringApplicationBuilder(Application.class).web(true).run(args);
        }
    }
    
    4 ).PoliceController.java
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author: 
     * @description:
     * @program: police_client
     * @create: 2018-06-06 11:59
     **/
    @RestController
    public class PoliceController {
        @RequestMapping("call")
        public String call(HttpServletRequest request) {
            //這里返回url,便于查看服務提供者。
            return "call:" + request.getRequestURL().toString();
        }
    }
    


    • 服務調用者(創建項目people_caller):
    • 1).pom.xml
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>1.5.13.RELEASE</version>
          </parent>
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>org.springframework.cloud</groupId>
                      <artifactId>spring-cloud-dependencies</artifactId>
                      <version>Edgware.SR3</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
              </dependencies>
          </dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-config</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-eureka</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
              </dependency>
          </dependencies>
      2.application.properties
      server.port=6003
      
      #服務名稱
      spring.application.name=people
      #注冊路徑
      eureka.client.service-url.defaultZone=http://localhost:6001/eureka/
      
      
      3.Application
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.boot.builder.SpringApplicationBuilder;
      import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
      
      @SpringBootApplication
      @EnableEurekaClient
      public class Application {
          public static void main(String[] args) {
              new SpringApplicationBuilder(Application.class).web(true).run(args);
          }
      }
      

      4.PeopleController
      import org.springframework.cloud.client.loadbalancer.LoadBalanced;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RestController;
      import org.springframework.web.client.RestTemplate;
      
       
      @Configuration
      @RestController
      public class PeopleController {
      
          @Bean
          @LoadBalanced
          RestTemplate getRestTemplate() {
              return new RestTemplate();
          }
      
          @RequestMapping("call")
          public String call() {
              return getRestTemplate().getForObject("http://police/call",String.class);
          }
      }

      OK,跑起來。。

    • #圖一:可以看到有2個服務器,2個服務提供者,1個服務調用者


    • #圖二:可以看到有2個服務器,2個服務提供者,1個服務調用者

    • #圖三:服務調用者,可以看到端口一直在2001\2002之間切換,說明一直在調用不同的服務提供者。


    版權聲明:本文為m0_37754981原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/m0_37754981/article/details/80641358

    智能推薦

    SpringCloud(三) eureka集群

    根據  SpringCloud(一) eureka服務注冊與發現 ,再增加兩個eureka server Eureka Server的高可用 Eureka Server的設計一開始就考慮到了高可用的問題,在Eureka的服務治理設計中,所有節點即是服務提供方,也是服務消費方,服務注冊也不列外。之前的有配置: eureka:   client:    ...

    springcloud 搭建 eureka 集群

    概述: 高可用集群配置、當注冊中心扛不住高并發的時候,這時候 要用集群來扛;一個掛了還能有其他的eureka 來頂。 集群搭建 普通操作 1、這里我們先建3個 module microservice-eureka-server-2001、 microservice-eureka-server-2002 、microservice-eureka-server-2003 2、三個項目的pom.xml ...

    springcloud之eureka集群

    前言: 我們通過springcloud入門大概的了解了springcloud。在springcloud入門中的案例中我們是直接通過服務消費者向服務提供者發送請求,然后得到結果的,但真正的項目開發中并不是這樣的,如圖所示,而是服務消費者向eureka發送請求,然后eureka再向服務提供者發送請求找尋到相對應的節點,服務提供者的節點有多個,其中一個宕機了eureka會自動幫你找到第二的,這里采用的是...

    SpringCloud-eureka集群

    SpringCloud-eureka集群 Eureka搭建集群 集群:同一個業務,部署在多個服務器上(不同的服務器運行同樣的代碼,干同一件事) 當注冊中心扛不住高并發的時候,這時候 要用集群來扛; 今天介紹搭建的兩種方式: 第一種方式 在上篇博客的基礎上再構建兩個項目,而這兩個項目的配置又不能都是本地,開3個虛擬機又太麻煩,所以我們直接配置本機hosts來實現本機的域名映射 進入你的系統文件:C:...

    springcloud之Eureka集群

    springcloud之Eureka集群 1、Eureka集群搭建 普通操作 騷操作 2、Eureka自我保護機制 1、Eureka集群搭建 高可用集群配置 當注冊中心扛不住高并發的時候,這時候 要用集群來扛; 普通操作 新建兩個module microservice-eureka-server-2002 microservice-eureka-server-2003 1、pom.xml 依賴如下...

    猜你喜歡

    springcloud之eureka集群

    文章目錄 一、eureka集群搭建 二、eureka自我保護機制 一、eureka集群搭建 高可用集群配置 當注冊中心扛不住高并發的時候,這時候要用集群來抗 普通操作 新建兩個module并且更改其中的配置 1.1、microservice-eureka-server-2002 1.2、microservice-eureka-server-2003 在兩個module中的啟動類都加上注解(@Ena...

    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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

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