當外部的應用如何來訪問內部各種各樣的微服務時,當然可以直接用ip埠加服務來進行訪問,但是這樣就不能實現負載均衡。當然我們可以將外部應用也加入到eureka中,這樣也就可以通過eureka實現負載均衡。但是實際情況下我們不能將所有的請求端都加入eureka中(千萬級訪問量我們不可能將千萬個客戶端都加進來),在微服務架構中,後端服務往往不直接開放給呼叫端,而是通過乙個api閘道器根據請求的url,路由到相應的服務。當新增api閘道器後,在第三方呼叫端和服務提供方之間就建立了一面牆,這面牆直接與呼叫方通訊進行許可權控制,後將請求均衡分發給後台服務端。
使用zuul的好處:
1、簡化客戶端呼叫複雜度
在微服務架構模式下後端服務的例項數一般是動態的,對於客戶端而言很難發現動態改變的服務例項的訪問位址資訊。因此在基於微服務的專案中為了簡化前端的呼叫邏輯,通常會引入api gateway作為輕量級閘道器,同時api gateway中也會實現相關的認證邏輯從而簡化內部服務之間相互呼叫的複雜度。
2、資料裁剪以及聚合
通常而言不同的客戶端對於顯示時對於資料的需求是不一致的,比如手機端或者web端又或者在低延遲的網路環境或者高延遲的網路環境。因此為了優化客戶端的使用體驗,api gateway可以對通用性的響應資料進行裁剪以適應不同客戶端的使用需求。同時還可以將多個api呼叫邏輯進行聚合,從而減少客戶端的請求數,優化客戶端使用者體驗
3、多渠道支援
當然我們還可以針對不同的渠道和客戶端提供不同的api gateway,對於該模式的使用由另外乙個大家熟知的方式叫backend for front-end, 在backend for front-end模式當中,我們可以針對不同的客戶端分別建立其bff
4、其他
api閘道器主要為了服務本身對外的呼叫該怎麼呼叫來解決的,還有解決許可權校驗的問題,你可以在這裡整合呼叫一系列過濾器的,例如整合shiro,springsecurity之類的東西。
下面我們來試一試zuul
首先再pom裡面加入依賴:spring-cloud-starter-netflix-zuul
<?xml version="1.0" encoding="utf-8"?>
parent
com.cjc.spring.cloud
1.0-snapshot
4.0.0
com.cjc.spring.cloud
eureka-zuul
1.0-snapshot
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-zuul
然後在啟動類裡面加入@enablezuulproxy註解
package com.cjc.spring.cloud.zuul.main;
import org.springframework.cloud.netflix.eureka.enableeurekaclient;
import org.springframework.cloud.netflix.zuul.enablezuulproxy;
@enablezuulproxy
@enableeurekaclient
public static void main(string arg)
}
server:
port: 8085
spring:
name: eureka-zuul
eureka:
client:
register-with-eureka: true #false表示不向註冊中心註冊自己。
fetch-registry: true #false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務
route-action: #路由名稱自己定義
serviceid: eureka-user #訪問服務的服務名
path: /** #將訪問此位址的請求**給上面的服務
這時候我們就已經實現負載均衡了,當訪問任意乙個請求時候,會**給eureka-user服務處理,如果eureka裡面有多個eureka-user服務,zuul就會通過輪詢服務列表進行負載均衡**請求。
啟動eureka-server,eureka-user(8001),eureka-user(8002),eureka-zuul
訪問 http://localhost:8085/getconfig
這個時候我們就發現請求**到eureka-user服務的getconfig請求上了,多訪問幾次,會發現一會訪問8001一會訪問8002,這樣便實現了服務的路由**和負載均衡。
springCloud框架搭建詳解
1.springcloud框架 是springboot的公升級框架,其中包含很多子專案 eureka註冊中心,feign消費者,hystrix熔斷器,zuul路由,config全域性配置中心,bus訊息匯流排,負載均衡策略 底層基於httpclient實現,發布乙個controller類 sprin...
Spring Cloud 環境搭建
1 搭建eurake註冊中心工程 1 在pom.xml 新增eurake 註冊中心依賴包 1.8greenwich.sr2 org.springframework.cloud spring cloud starter netflix eureka server org.springframework...
spring cloud簡單搭建
spring cloud簡單搭建,該分享來自eureka和feign的使用 遇到的問題及解決 feign.feignexception status 404 reading userfeignclient findbyid long provide專案controller層的方法要 public l...