1. 程式人生 > >Spring Cloud入門教程之路由閘道器 Zuul(五)(Finchley版本+Boot2.0)

Spring Cloud入門教程之路由閘道器 Zuul(五)(Finchley版本+Boot2.0)

路由閘道器什麼是Zuul?

    Zuul的主要功能是路由轉發和過濾器。路由功能是微服務的一部分,比如/api/payment轉發到到payment服務,/api/login轉發到到login服務。zuul預設和Ribbon結合實現了負載均衡的功能。

zuul有以下功能:

  • Authentication
  • Insights
  • Stress Testing
  • Canary Testing
  • Dynamic Routing
  • Service Migration
  • Load Shedding
  • Security
  • Static Response handling
  • Active/Active traffic management

一、使用Zuul

1、修改pom.xml

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

完整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.cloud</groupId>
	<artifactId>serverzuul</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>serverzuul</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.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>
		<spring-cloud.version>Finchley.RC2</spring-cloud.version>
	</properties>

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

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-zuul</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>${spring-cloud.version}</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、編寫Controller類

在其入口applicaton類加上註解@EnableZuulProxy,開啟zuul的功能

package com.cloud.serverzuul;

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

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class ServerzuulApplication {


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

首先指定服務註冊中心的地址為http://localhost:8761/eureka/,服務的埠為8767,服務名為service-zuul;以/api-a/ 開頭的請求都轉發給service-ribbon服務;以/api-b/開頭的請求都轉發給service-feign服務

3、配置檔案

server.port=8767
spring.application.name=service-zuul
#指定服務中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
feign.hystrix.enabled=true
zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.serviceId=service-ribbon

zuul.routes.api-b.path=/api-b/**
zuul.routes.api-b.serviceId=service-feign

4、通過zuul指定的ribbon去消費

5、通過zuul指定的通過feign去消費

Spring Boot與Spring Cloud學習使用可參看筆者部落格

相關推薦

Spring Cloud入門教程路由 Zuul(Finchley版本+Boot2.0)

路由閘道器什麼是Zuul?     Zuul的主要功能是路由轉發和過濾器。路由功能是微服務的一部分,比如/api/payment轉發到到payment服務,/api/login轉發到到login服務。zuul預設和Ribbon結合實現了負載均衡的功能。 zuul有以下功能

超簡單的SpringClound入門教程(四.路由zuul)

一個微服務的專案架構是要有要的基礎構件的,包括服務註冊與發現、服務消費、負載均衡、斷路器、智慧路由、配置管理等;這樣便能構件出一個簡單的微服務專案; 整理出一個簡單的微服務架構圖; 大家可以看在圖中Zuul就充當著路由轉發的角色 不止如此,Zuul還具備很多功能: Authenticat

Spring Cloud 路由 Zuul元件

Netflix又一開源Spring Cloud元件,路由閘道器Zuul。 微服務架構下服務眾多,Zuul能將所有服務的API介面統一聚合,向外暴露,使用者看起來就像在訪問一個服務一樣。隱藏了內部服務跳轉的過程。還可以和Ribbon組合實現智慧路由轉發和負載均衡

springcloud入門路由zuul

在前幾篇springcloud的學習中,我們分別嘗試搭建了一個分散式專案架構的基礎模組,使用eureka實現服務的註冊與發現的服務註冊中心eureka-sercer和服務提供者eureka-client,使用ribbon或feign支援服務的呼叫和負載均衡的se

Spring Cloud入門教程斷路器 Hystrix(Finchley版本+Boot2.0)

什麼是Hystrix? Hystrix是Netflix開源的一款容錯框架,包含常用的容錯方法:執行緒隔離、訊號量隔離、降級策略、熔斷技術。在高併發訪問下,系統所依賴的服務的穩定性對系統的影響非常大,依賴有很多不可控的因素,比如網路連線變慢,資源突然繁忙,暫時不可用,服務離線

Spring Cloud入門教程服務消費者 Feign(Finchley版本+Boot2.0)

什麼是Feign?         Feign是受到Retrofit,JAXRS-2.0和WebSocket的影響,它是一個java的到http客戶端繫結的開源專案。 Feign的主要目標是將Java Http 客戶端變得簡單。 推薦部落格: 常見錯誤:

Spring Cloud:服務zuul10

前面的文章我們介紹了,Eureka用於服務的註冊於發現,Feign支援服務的呼叫以及均衡負載,Hystrix處理服務的熔斷防止故障擴散,Spring Cloud Config服務叢集配置中心,似乎一個微服務框架已經完成了。 我們還是少考慮了一個問題,外部的應用如何來訪問內部各種各樣的微服務呢?在

Spring Cloud 入門教程1、服務註冊與發現Eureka

一、前言 1、什麼是Eureka? Eureka是Netflix開源的服務註冊與發現框架,Eureka由兩個元件組成:Eureka伺服器和Eureka客戶端。 Eureka Server提供服務註冊服務,各個節點啟動後,會在Eureka Server中進行註冊,這樣EurekaServer中的服務登

spring cloud快速入門教程路由Zuul

現在服務也統一註冊管理了,配置也統一管理了,我們就可以瘋狂的開發各項微服務了,是不是還覺得少了點什麼?前端怎麼訪問到相應服務?這就用到路由網關了。 路由閘道器就是整個微服務的統一入口,看看第一張的架構圖,專案的前端做成了動靜分離,靜態檔案、html頁面、css檔案和js檔案

Spring Cloud 入門教程(): 路由(zuul) (Greenwich.RELEASE)

一、準備工作 啟動前面的專案:erurekaserver,eurekaclient1,service-feign,service

Spring Cloud基礎教程路由使用Zuul

一、概述Zuul的主要功能是路由轉發和過濾器。路由功能是微服務的一部分,比如/client-a/轉發到到a服務,/client-b/轉發到到b服務。zuul預設和Ribbon結合實現了負載均衡的功能。二、準備將服務註冊與發現這篇部落格中的Eureka-Client-A工程,複

spring-cloud路由(zuul)(Finchley版本)

在微服務架構中,需要幾個基礎的服務治理元件,包括服務註冊與發現、服務消費、負載均衡、斷路器、智慧路由、配置管理等,由這幾個基礎元件相互協作,共同組建了一個簡單的微服務系統   在Spring Cloud微服務系統中,一種常見的負載均衡方式是,客戶端的請求首先經過負載均衡(zuul、

spring cloud進階 [路由 (zuul)]

在微服務架構中,需要幾個基礎的服務治理元件,包括服務註冊與發現、服務消費、負載均衡、斷路器、智慧路由、配置管理等,由這幾個基礎元件相互協作,共同組建了一個簡單的微服務系統。一個簡答的微服務系統如下圖: 在Spring Cloud微服務系統中,一種常見的負載均衡方式是,客戶端的請求首先經過負載均

spring cloud 教學路由(zuul)

Zuul簡介 Zuul的主要功能是路由轉發和過濾器。路由功能是微服務的一部分,比如/api/user轉發到到user服務,/api/shop轉發到到shop服務。zuul預設和Ribbon結合實現了負載均衡的功能。 準備工作 繼續使用上一節的工程。在原有的工程上,建立一

Spring Cloud與微服務服務Zuul

文章目錄 springcloud-api-gateway springcloud-api-gateway專案結構 springcloud-api-gateway原始碼 springcloud-api-gateway的使用

Spring Cloud(四):路由Zuul

   Zuul作為路由閘道器元件,在微服務架構當中有著非常重要的作用,主要體現在6個方面: Zuul,Ribbon以及Eureka相結合,可以實現智慧路由和負載均衡的功能,Zuul能夠將請求流量按某種策略分發到叢集狀態的多個伺服器例項。 閘道器將所有服務的API介面統一聚

Spring CloudAPI Zuul

一、為什麼需要閘道器? 安全性: 1.最主要的一點是閘道器可以將所有服務的API介面統一聚合,並統一對外暴露。外界系統呼叫API介

史上最簡單的SpringCloud教程 | 第篇: 路由(zuul)

在微服務架構中,需要幾個基礎的服務治理元件,包括服務註冊與發現、服務消費、負載均衡、斷路器、智慧路由、配置管理等,由這幾個基礎元件相互協作,共同組建了一個簡單的微服務系統。一個簡答的微服務系統如下圖: 注意:A服務和B服務是可以相互呼叫的,作圖的時候忘記了。並且配置服務也是註冊到服務註冊中

史上最簡單的SpringCloud教程 | 第篇: 路由(zuul)(Finchley版本)

在微服務架構中,需要幾個基礎的服務治理元件,包括服務註冊與發現、服務消費、負載均衡、斷路器、智慧路由、配置管理等,由這幾個基礎元件相互協作,共同組建了一個簡單的微服務系統。一個簡答的微服務系統如下圖: 注意:A服務和B服務是可以相互呼叫的,作圖的時候忘記了。並且配置服務也是註冊到服務註冊中

Spring Cloud學習筆記18——API

API 閘道器是一套主要用於統一API入口的應用元件,可以管理所有的API,形成一個API的入口 API閘道器的意義 集合多個API 統一API入口 API閘道器所帶來的好處 避免將內部資訊洩露給外部 為微服務新增額外的安全層 支