1. 程式人生 > >spring cloud-構建微服務架構的閘道器(API GateWay)

spring cloud-構建微服務架構的閘道器(API GateWay)

在我們前面的部落格中講到,當服務A需要呼叫服務B的時候,只需要從Eureka中獲取B服務的註冊例項,然後使用Feign來呼叫B的服務,使用Ribbon來實現負載均衡,但是,當我們同時向客戶端暴漏多個服務的時候,客戶端怎麼呼叫我們暴漏的服務了,如果我們還想加入安全認證,許可權控制,過濾器以及動態路由等特性了,那麼就需要使用Zuul來實現API GateWay了,下面,我們先來看下Zuul怎麼使用。

一、加入Zuul的依賴

  1. <dependency>
  2.             <groupId>org.springframework.cloud</groupId
    >
  3.             <artifactId>spring-cloud-starter-zuul</artifactId>
  4.         </dependency>
  5.         <dependency>
  6.             <groupId>org.springframework.cloud</groupId>
  7.             <artifactId>spring-cloud-starter-eureka</artifactId>
  8.         </dependency>
由於,我們需要將Zuul服務註冊到Eureka Server上,同時從Eureka Server上發現註冊的服務,所以這裡我們加上了Eureka的依賴。

二、在應用Application主類上開啟Zuul支援

  1. @SpringBootApplication
  2. @EnableZuulProxy// 使用@EnableZuulProxy來開啟Zuul的支援,如果你不想使用Zuul提供的Filter和反向代理的功能的話,此處可以使用@EnableZuulServer註解
  3. publicclass ZuulApplication {  
  4.   publicstaticvoid main(String[] args) {  
  5.     SpringApplication.run(ZuulApplication.class, args);  
  6.   }  
  7. }  
三、在application.yml中增加Zuul的基礎配置資訊
  1. spring:  
  2.   application:  
  3.     name: gateway-zuul # 應用名  
  4. server:  
  5.   port: 8768 #Zuul Server的埠號  
  6. eureka:  
  7.   client:  
  8.     service-url:  
  9.       defaultZone: http://localhost:8761/eureka
  10.   instance:  
  11.     prefer-ip-address: true
四、在application.yml中增加服務路由配置

前提:在Eureka Server已經註冊了2個服務,分別是:springboot-h2-service和springboot-rest-template-feign,其中springboot-rest-template-feign服務會呼叫springboot-h2-service服務,springboot-rest-template-feign服務是我們對外提供的服務,也就是說,springboot-rest-template-feign服務是我們暴漏給客戶端呼叫的。

  1. # 路由配置方式一  
  2. #zuul:  
  3. #  routes:  
  4. #    springboot-rest-template-feign: /templateservice/** #所有請求springboot-rest-template-feign的請求,都會被攔截,並且轉發到templateservice上  
  5. # 路由配置方式二  
  6. zuul:  
  7.   routes:  
  8.     api-contract: # 其中api-contract是路由名稱,可以隨便定義,但是path和service-id需要一一對應  
  9.       path: /templateservice/**  
  10.       service-id: springboot-rest-template-feign # springboot-rest-template-feign為註冊到Eureka上的服務名  
  11. ribbon:  
  12.   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule # 配置服務端負載均衡策略   
五、驗證

下面我們就可以來進行驗證了,在瀏覽器中輸入:http://localhost:8768/templateservice/template/1就可以看到測試結果了。Zuul的基本使用就這些,關於Filter以及高可用,請見在後面的部落格中。

相關推薦

Spring Cloud構建服務架構服務過濾器

過濾器作用 我們的微服務應用提供的介面就可以通過統一的API閘道器入口被客戶端訪問到了。但是,每個客戶端使用者請求微服務應用提供的介面時,它們的訪問許可權往往都需要有一定的限制,系統並不會將所有的微服務介面都對它們開放。然而,目前的服務路由並沒有限制許可權這樣的功能,所有請

spring cloud-構建服務架構(API GateWay)

在我們前面的部落格中講到,當服務A需要呼叫服務B的時候,只需要從Eureka中獲取B服務的註冊例項,然後使用Feign來呼叫B的服務,使用Ribbon來實現負載均衡,但是,當我們同時向客戶端暴漏多個服務的時候,客戶端怎麼呼叫我們暴漏的服務了,如果我們還想加入安全認證,許可

Spring-Boot:Spring Cloud構建服務架構

xmlns art 超時 客戶 微服務架構 cover lns created 搭建 概述:   從上一篇博客《Spring-boot:5分鐘整合Dubbo構建分布式服務》 過度到Spring Cloud,我們將開始學習如何使用Spring Cloud 來搭建微服務。繼續采

Spring Cloud構建服務架構分布式配置中心

post ast github 構造 clas mas files cli .class 在本文中,我們將學習如何構建一個基於Git存儲的分布式配置中心,並對客戶端進行改造,並讓其能夠從配置中心獲取配置信息並綁定到代碼中的整個過程。 準備配置倉庫 準備一個git倉庫,可

Spring Cloud構建服務架構—創建“服務註冊中心”

springboot springcloud mybatis eureka config 創建一個基礎的Spring Boot工程,命名為eureka-server,並在pom.xml中引入需要的依賴內容: <parent> <groupId>org.springf

Spring Cloud構建服務架構服務註冊與發現

springboot springcloud mybatis eureka config Spring Cloud簡介Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局

Spring Cloud構建服務架構-創建“服務提供方”

spring Spring Cloud Spring Boot config 下面我們創建提供服務的客戶端,並向服務註冊中心註冊自己。本文我們主要介紹服務的註冊與發現,所以我們不妨在服務提供方中嘗試著提供一個接口來獲取當前所有的服務信息。 首先,創建一個基本的Spring Boot應用。命名為

Spring Cloud構建服務架構—服務網關過濾器

Spring Cloud Spring Boot mybatis 過濾器作用 我們的微服務應用提供的接口就可以通過統一的API網關入口被客戶端訪問到了。但是,每個客戶端用戶請求微服務應用提供的接口時,它們的訪問權限往往都需要有一定的限制,系統並不會將所有的微服務接口都對它們開放。然而,目前的服務路

Spring Cloud構建服務架構Hystrix監控面板

Spring Cloud Spring Boot mybatis 在Spring Cloud中構建一個Hystrix Dashboard非常簡單,只需要下面四步: 創建一個標準的Spring Boot工程,命名為:hystrix-dashboard。編輯pom.xml,具體依賴內容如下: <

Spring Cloud構建服務架構服務消費(Ribbon)

ble DG 沒有 客戶 BE pla cati str 主類 Spring Cloud RibbonSpring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端負載均衡的工具。它是一個基於HTTP和TCP的客戶端負載均衡器。它可以通過在客戶端中

Spring Cloud構建服務架構服務消費(基礎)

消費 ring str frame emp default class a template pom.xml 使用LoadBalancerClient在Spring Cloud Commons中提供了大量的與服務治理相關的抽象接口,包括DiscoveryClient、這裏我

Spring Cloud構建服務架構—Hystrix斷路器

能夠 電路 處理 觸發 就會 熔斷器 邏輯 響應 保險絲 斷路器模式源於Martin Fowler的Circuit Breaker一文。“斷路器”本身是一種開關裝置,用於在電路上保護線路過載,當線路中有電器發生短路時,“斷路器”能夠及時的切斷故障電路,防止發生過載、發熱、甚

Spring Cloud構建服務架構-Hystrix服務降級

static 原因 架構 一個個 policy 消費者 兩個 comm 以及 在微服務架構中,我們將系統拆分成了一個個的服務單元,各單元應用間通過服務註冊與訂閱的方式互相依賴。由於每個單元都在不同的進程中運行,依賴通過遠程調用的方式執行,這樣就有可能因為網絡原因或是依賴服務

Spring Cloud構建服務架構服務註冊與發現 Eureka

Spring Cloud構建微服務架構:服務註冊與發現Eureka 【Dalston版】 原創   2018-04-10  宗野   Spring Cloud 已經

Spring Cloud構建服務架構服務容錯保護(Hystrix服務降級)

tro sco load 服務架構 延遲 正常 map ati href 動手試一試 在開始使用Spring Cloud Hystrix實現斷路器之前,我們先拿之前實現的一些內容作為基礎,其中包括: eureka-server工程:服務註冊中心,端口:1001 eurek

Spring Cloud構建服務架構服務消費(Ribbon)

Spring Cloud Ribbon Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端負載均衡的工具。它是一個基於HTTP和TCP的客戶端負載均衡器。它可以通過在客戶端中配置ribbonServerList來設定服務端列表去輪詢訪問以達到均衡負載的作用。 當Rib

Spring Cloud構建服務架構服務消費(Feign)

Spring Cloud Feign Spring Cloud Feign是一套基於Netflix Feign實現的宣告式服務呼叫客戶端。它使得編寫Web服務客戶端變得更加簡單。我們只需要通過建立介面並用註解來配置它既可完成對Web服務介面的繫結。它具備可插拔的註解支援,包括Feign註解、JAX-RS註解

Spring Cloud構建服務架構服務註冊與發現(Eureka、Consul)

Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。 Spring Cloud包含

Spring Cloud構建服務架構服務註冊與發現(Eureka)

1. Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了

Spring Cloud構建服務架構:分散式服務跟蹤(收集原理)【Dalston版】

                在本節內容之前,我們已經對如何引入Sleuth跟蹤資訊和搭建Zipkin服務端分析跟蹤延遲的過程做了詳細的介紹,相信大家對於Sleuth和Zipkin已經有了一定的感性認識。接下來,我們介紹一下關於Zipkin收集跟蹤資訊的過程細節,以幫助我們更好地理解Sleuth生產跟蹤資訊