天天看點

java B2B2C 仿淘寶電子商城系統-服務網關zuul初級篇

為什麼需要API Gateway

1、簡化用戶端調用複雜度

在微服務架構模式下後端服務的執行個體數一般是動态的,對于用戶端而言很難發現動态改變的服務執行個體的通路位址資訊。是以在基于微服務的項目中為了簡化前端的調用邏輯,通常會引入API Gateway作為輕量級網關,同時API Gateway中也會實作相關的認證邏輯進而簡化内部服務之間互相調用的複雜度。

2、資料裁剪以及聚合

通常而言不同的用戶端對于顯示時對于資料的需求是不一緻的,比如手機端或者Web端又或者在低延遲的網絡環境或者高延遲的網絡環境。

是以為了優化用戶端的使用體驗,API Gateway可以對通用性的響應資料進行裁剪以适應不同用戶端的使用需求。同時還可以将多個API調用邏輯進行聚合,進而減少用戶端的請求數,優化用戶端使用者體驗

3、多管道支援

當然我們還可以針對不同的管道和用戶端提供不同的API Gateway,對于該模式的使用由另外一個大家熟知的方式叫Backend for front-end, 在Backend for front-end模式當中,我們可以針對不同的用戶端分别建立其BFF。

4、遺留系統的微服務化改造

對于系統而言進行微服務改造通常是由于原有的系統存在或多或少的問題,比如技術債務,代碼品質,可維護性,可擴充性等等。API Gateway的模式同樣适用于這一類遺留系統的改造,通過微服務化的改造逐漸實作對原有系統中的問題的修複,進而提升對于原有業務響應力的提升。通過引入抽象層,逐漸使用新的實作替換舊的實作。

在Spring Cloud體系中, Spring Cloud Zuul就是提供負載均衡、反向代理、權限認證的一個API gateway。

Spring Cloud Zuul

Spring Cloud Zuul路由是微服務架構的不可或缺的一部分,提供動态路由,監控,彈性,安全等的邊緣服務。Zuul是Netflix出品的一個基于JVM路由和服務端的負載均衡器。

下面我們通過代碼來了解Zuul是如何工作的

簡單使用

1、添加依賴

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

引入spring-cloud-starter-zuul包

2、配置檔案

spring.application.name=gateway-service-zuul
server.port=8888
 
#這裡的配置表示,通路/it/** 直接重定向到http://www.ityouknow.com/**
zuul.routes.baidu.path=/it/**
zuul.routes.baidu.url=http://www.ityouknow.com/           

3、啟動類

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

啟動類添加@EnableZuulProxy,支援網關路由。

史上最簡單的zuul案例就配置完了。

java B2B2C 源碼 多級分銷Springcloud多租戶電子商城系統