• <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學習筆記

    標簽: SpringCloud  Feign  Eureka  

    目錄

    1.SpringCloud 簡介

    1.1.什么是 SpringCloud

    1.2.SpringCloud 與 SpringBoot 的關系

    1.3.SpringCloud 主要框架

    1.4.SpringCloud 與 Dubbo 對比

    1.5.說說 SpringCloud 的版本

    2.服務發現組件 Eureka

    2.1.Eureka簡介

    2.2.Eureka服務端開發

    1)搭建Eureka服務端微服務項目

    ?2)在pom.xml導入eureka服務端依賴

    3)在application.yml配置eureka服務端

    4)編寫啟動類(Eureka服務端注解)

    2.3.Eureka客戶端(服務注冊)

    1)在pom.xml導入eureka客戶端依賴

    2)在application.yml配置eureka客戶端

    3)在啟動類添加Eureka客戶端注解

    4)訪問Eureka主頁http://127.0.0.1:6868/

    2.4.保護模式

    3. Feign 實現服務間調用

    3.1.Feign簡介

    3.2.案例

    1)在pom.xml導入feign坐標

    2)在啟動類添加Feign注解

    3)編寫遠程調用接口(*)

    4)使用遠程調用接口完成服務調用

    3.3.負載均衡(默認輪詢)


    1.SpringCloud 簡介

    1.1.什么是 SpringCloud

    Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、熔斷器、數據監控等,都可以用 Spring Boot 的開發風格做到一
    鍵啟動和部署。Spring 并沒有重復制造輪子, 它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過 Spring Boot 風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、 易部署和易維護的分布式系統開發工具包。
    Spring Cloud 項目的官方網址:http://projects.spring.io/spring-cloud/

     

    1.2.SpringCloud SpringBoot 的關系

    Spring Boot Spring 的一套快速配置腳手架,可以基于 Spring Boot 快速開發單個微服務, Spring Cloud 是一個基于 Spring Boot 實現的云應用開發工具;Spring Boot 專注于快速、方便 集成的單個微服務個體,Spring Cloud關注全局的服務治理框架;
    Spring Cloud可以不基于 Spring Boot 嗎?
    不可以。
     

    1.3.SpringCloud 主要框架

    服務發現——Netflix Eureka
    服務調用——Netflix Feign
    熔斷器———Netflix Hystrix
    服務網關——Netflix Zuul
    分布式配置—Spring Cloud Config
    消息總線 ——Spring Cloud Bus
     

    1.4.SpringCloud Dubbo 對比

    Dubbo 只是實現了服務治理,而 Spring Cloud 下面有 17 個子項目(可能還會新增)分別覆蓋了微服務架構下的方方面面,服
    務治理只是其中的一個方面,一定程度來說,Dubbo 只是 Spring CloudNetflix 中的一個子集。
     
      Dubbo   SpringCloud
    服務注冊中心  Zookeeper  Spring Cloud Netflix Eureka
    服務調用方式  RPC  REST API
    服務網關  無  Spring Cloud Netflix Zuul
    熔斷器  不完善  Spring Cloud Netflix Hystrix
    分布式配置  Spring Cloud Config
    服務跟蹤  無  Spring Cloud Sleuth
    消息總線   Spring Cloud Bus
    數據流   Spring Cloud Stream
    批量任務  Spring Cloud Task
    ……  ……  ……

    1.5.說說 SpringCloud 的版本

    Spring Boot  Spring Cloud
    1.2.x  Angel 版本
    1.3.x  Brixton 版本
    1.4.x  Camden 版本
    1.5.x  Dalston 版本、Edgware 版本
    2.0.x  Finchley 版本
     

    2.服務發現組件 Eureka

    2.1.Eureka簡介

    EurekaNetflix開發的服務發現框架SpringCloud將它集成在自己的子項目
    spring-cloud-netflix中,實現SpringCloud的服務發現功能。Eureka包含兩個組件:
    EurekaServerEurekaClient
     
     

    2.2.Eureka服務端開發

    1)搭建Eureka服務端微服務項目


    2)在pom.xml導入eureka服務端依賴

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>


    3)在application.yml配置eureka服務端

    server:
      port: 6868
    
    eureka:
      client:
        registerWithEureka: false   #是否將自己注冊到 Eureka 服務中,本身就是,無需注冊
        fetchRegistry: false  #是否從Euraka中獲取注冊信息
        serviceUrl: #Eureka 客戶端與 Eureka 服務端進行交互的地址
          defaultZone: http://127.0.0.1:${server.port}/eureka/


    4)編寫啟動類(Eureka服務端注解)

    package com.tensquare.eureka;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServer {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServer.class, args);
        }
    }
    

     

    2.3.Eureka客戶端(服務注冊

    1)在pom.xml導入eureka客戶端依賴

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>


    2)在application.yml配置eureka客戶端

    server:
      port: 9010
    spring:
      application:
        name: tensquare-friend
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:6868/eureka
        instance:
          prefer-ip-address: true
    
    
    


    3)在啟動類添加Eureka客戶端注解

    package com.tensquare.friend;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    @SpringBootApplication
    @EnableEurekaClient
    public class FriendApplication {
        public static void main(String[] args) {
            SpringApplication.run(FriendApplication.class,args);
        }
    
    }
    

     

    4)訪問Eureka主頁http://127.0.0.1:6868/

    如圖所示,我們單個微服務注冊成功

     

    2.4.保護模式

    如果在EurekaServer的首頁看到以下這段提示,則說明Eureka已經進入了保護模式:
    EurekaServer在運行期間,會統計心跳失敗的比例在15分鐘之內是否低于85%,如果出現
    低于的情況(在單機調試的時候很容易滿足,實際在生產環境上通常是由于網絡不穩定導
    致),EurekaServer會將當前的實例注冊信息保護起來,同時提示這個警告。保護模式主要
    用于一組客戶端和EurekaServer之間存在網絡分區場景下的保護。一旦進入保護模式,
    EurekaServer將會嘗試保護其服務注冊表中的信息,不再刪除服務注冊表中的數據(也就是
    不會注銷任何微服務)。
     

    3. Feign 實現服務間調用

    3.1.Feign簡介

    Feign是簡化JavaHTTP客戶端開發的工具(java-to-httpclient-binder),它的靈感
    來自于RetrofitJAXRS-2.0WebSocketFeign的初衷是降低統一綁定DenominatorHTTP
    API的復雜度,不區分是否為restful
     

    3.2.案例

    1)在pom.xml導入feign坐標

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>

    2)在啟動類添加Feign注解

    package com.tensquare.friend;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    import util.JwtUtil;
    @SpringBootApplication
    @EnableEurekaClient
    @EnableFeignClients
    @EnableDiscoveryClient
    public class FriendApplication {
        public static void main(String[] args) {
            SpringApplication.run(FriendApplication.class,args);
        }
    
    }
    

    3)編寫遠程調用接口(*)

    package com.tensquare.friend.client;
    import entity.Result;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    /**
     * 調用其他微服務注意事項
     * 1.調用方與被調用方都需要注冊eureka中
     * 2.調用接口需要寫上被調用方的服務名,即application.yml中的spring: application: name: tensquare-user
     * 3.服務名不能帶下劃線_,eureka會識別不到
     * 4.調用方法跟被調用方contorller方法名一致
     * 5.@RequestMapping--value記得帶上全url,例如最上方的/user
     * 6.@PathVariable后一定要帶上("參數"),參數需要跟上方路徑參數一致,否則會識別不到參數
     */
    @FeignClient("tensquare-user")
    public interface UserClient {
    
        /**
         * 更新用戶關注數
         */
        @RequestMapping(value = "/user/updateFollowcount/{userid}/{x}", method = RequestMethod.PUT)
        public Result updateFollowcount(@PathVariable("userid") String userid, @PathVariable("x") int x);
    
        /**
         * 更新用戶粉絲
         */
        @RequestMapping(value = "/user/updateFanscount/{userid}/{x}", method = RequestMethod.PUT)
        public Result updateFanscount(@PathVariable("userid") String userid, @PathVariable("x") int x);
    
    }
    


    4)使用遠程調用接口完成服務調用

     

    3.3.負載均衡(默認輪詢)

    測試:同時開啟多個基礎微服務,看是否是輪流調用。

     

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

    智能推薦

    SpringCloud學習筆記

    SpringCloud學習筆記   ESB企業服務總線:用來連接各個服務節點,為了集成各種不同的服務。 1.系統架構演變 目標:   了解項目架構的演變歷程。 小結: 集中式架構 垂直拆分 分布式架構 SOA面向服務架構 微服務架構 2.微服務架構說明 目標:   了解SOA與微服務架構的區別以及說出微服務架構的特點。 分析: &emsp...

    SpringCloud學習筆記-Eureka

    注冊中心-Eureka Spring Cloud 封裝了 Netflix 公司開發的 Eureka 模塊來實現服務注冊和發現。Eureka 采用了 C-S 的設計架構。Eureka Server 作為服務注冊功能的服務器,它是服務注冊中心。而系統中的其他微服務,使用 Eureka 的客戶端連接到 Eureka Server,并維持心跳連接。這樣系統的維護人員就可以通過 Eureka Server ...

    SpringCloud學習筆記------Feign

      feign有假裝的意思   為什么要叫假裝? Feign可以把Rest的請求進行隱藏,偽裝成類似SpringMVC的Controller一樣。你不用再自己拼接url,拼接參數等等操作,一切都交給Feign去做。   快速入門 先用起來,我們在使用的時候揭開它神秘的面紗吧 導入依賴 pom.xml 引入: Feign的客戶端 寫一個Controller dao層 啟...

    SpringCloud學習筆記

    介紹 Spring Cloud是一系列技術的有序整合。它利用Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發。 Spring Boot擅長的是集成,把世界上最好的框架集成到自己項目中,Spring Cloud也是一樣,把非常流行的微服務的技術整合到一起。 Spring Cloud從架構層面上降低了對大型系統構建的要求和難度,使我們以非常低的成本(技術或者硬件)搭建一套高效、分...

    SpringCloud 學習筆記

    SpringCloud 學習筆記 文章目錄 SpringCloud 學習筆記 1 簡介 1.1 什么是 SpringCloud 1.2 SpringCloud 能干什么 2. 微服務 2.1 什么是微服務 2.2 微服務與微服務架構 2.3 微服務架構的四個核心問題 2.4 微服務優缺點 2.5 微服務技術棧有哪些? 2.6 為什么選擇 SpringCloud 作為微服務架構 1. 選型依據 2....

    猜你喜歡

    SpringCloud - Nacos學習筆記

    Nacos學習筆記 nacos簡介 Nacos使用 Nacos Server安裝 Nacos啟動 Nacos關閉 單機模式支持mysql 集群部署 配置管理 客戶端使用方式 動態刷新 命名空間與分組 命名空間 分組 自定義擴展的 Data Id 配置 服務注冊發現 nacos簡介 Nacos 支持幾乎所有主流類型的“服務”的發現、配置和管理: Spring Cloud Du...

    SpringCloud Gateway學習筆記

    SpringCloud Gateway是Spring cloud的一個全新項目,是基于Spring5.0、Spring Boot 2.0和project Reactor等技術開發的網關,它旨在為微服務架構提供一個簡單有效的統一的API路由管理方式。 SrpingCloud Gateway作為spring cloud生態系統的網關,目標是替代Zuul,為了提升網關的性能,SpringCloud Ga...

    springcloud 學習筆記

    1. Eureka 注冊中心 Spring cloud 封裝了Netflix開發的Eureka來實現服務的注冊和發現 1.引入依賴 2.書寫配置文件 3.書寫啟動類 Eureka 注冊中心需要在啟動類上添加@@EnableEurekaServer 在服務提供者和消費者的啟動類上添加@EnableEurekaClient 同時在配置文件中添加上相關配置 4. 服務提供者和消費者配置 添加相關的mav...

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

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

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

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

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