本篇內(nèi)容主要講解“怎么使用Spring Cloud中API網(wǎng)關”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用Spring Cloud中API網(wǎng)關”吧!
創(chuàng)新互聯(lián)公司主營澤庫網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App定制開發(fā),澤庫h5小程序設計搭建,澤庫網(wǎng)站營銷推廣歡迎澤庫等地區(qū)企業(yè)咨詢
一、為什么需要網(wǎng)關?
安全性:
1.最主要的一點是網(wǎng)關可以將所有服務的API接口統(tǒng)一聚合,并統(tǒng)一對外暴露。外界系統(tǒng)調(diào)用API接口時,都是由網(wǎng)關對外暴露的API接口,外界系統(tǒng)不需要知道微服務系統(tǒng)中各個服務之間相互調(diào)用的復雜性。微服務系統(tǒng)也保護了七內(nèi)部微服務單元的API接口,防止其被外部直接調(diào)用,導致服務的敏感信息泄露。
2.網(wǎng)關可以做用戶身份認證和權限認證,防止非法請求操作API接口,對服務器起到保護作用。
性能:
1.zuul、ribbon、eureka相結合,可以實現(xiàn)路由和負載均衡的功能,zuul可以將請求流量按照默認輪詢策略分發(fā)到集群狀態(tài)下的不同服務實例。
作用:
1.可以實現(xiàn)負載均衡、路由轉(zhuǎn)發(fā)、實時日志輸出、權限控制、系統(tǒng)監(jiān)控等
2.可以實現(xiàn)流量監(jiān)控,在高流量的情況下,對服務進行降級
二、網(wǎng)關框架分類
1.Netflix Zuul,zuul是spring cloud的一個推薦組件,https://github.com/Netflix/zuul
--本博客講解Zuul
2.Kong kong是基于Nginx+Lua進行二次開發(fā)的方案, https://konghq.com/
3.orange,這個開源程序是國人開發(fā)的, http://orange.sumory.com/
三、怎么使用網(wǎng)關(Zuul)==>實戰(zhàn)?
1.jar包依賴
<groupId>com.suning.drp</groupId>
<artifactId>drp-gateway</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<parent>
<artifactId>drp-parent</artifactId>
<groupId>com.suning.drp</groupId>
<version>0.0.1</version>
<relativePath>../drp-parent/pom.xml</relativePath>
</parent>
<dependencies>
<!-- spring boot 1.X版本所依賴的zuul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<!-- spring boot 2.X版本所依賴的zuul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!-- SpringBoot整合eureka客戶端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
2.配置文件
### eureka注冊服務中心
server.port=80
eureka.client.serviceUrl.defaultZone=${eurekaServiceDefaultZone}
### eurekaServiceDefaultZone取值不同環(huán)境下的值,例子取的生產(chǎn)中的值,vars.prd.properties
eurekaServiceDefaultZone=http://10.235.5.28:8080/eureka,http://10.235.5.29:8080/eureka,http://10.235.5.30:8080/eureka
### 網(wǎng)關名稱
spring.application.name=tigbs-gateway
### 反向代理,將服務的IP隱藏,通過項目名訪問
### 以/cms/訪問的請求地址轉(zhuǎn)發(fā)到管理端
zuul.routes.cms.path=/cms/**
zuul.routes.cms.serviceId=drp-cms
### 以/portal/訪問的請求地址轉(zhuǎn)發(fā)到管理端
zuul.routes.portal.path=/portal/**
zuul.routes.portal.serviceId=drp-portal
3.啟動類
// EnableZuulProxy開啟zuul功能
@EnableZuulProxy
// EnableEurekaClient將網(wǎng)關服務當做客戶端注冊到eureka服務中心
@EnableEurekaClient
@SpringBootApplication
public class GateWayServiceApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(GateWayServiceApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(GateWayServiceApplication.class);
}
}
4.業(yè)務代碼--驗證用戶在客戶端是否有登陸
@Component
public class TokenFilter extends ZuulFilter {
//具體過濾的邏輯
public Object run() throws ZuulException {
// 獲取上下文
RequestContext currentContext = RequestContext.getCurrentContext();
HttpServletRequest request = currentContext.getRequest();
String userToken = request.getParameter("userToken");
if (StringUtils.isEmpty(userToken)) {
currentContext.setSendZuulResponse(false);
currentContext.setResponseStatusCode(401);
currentContext.setResponseBody("userToken is empty");
return null;
}
// 否則正常執(zhí)行業(yè)務邏輯.....
return null;
}
// 判斷過濾器是否生效,為true,說明需要過濾,則執(zhí)行run()
public boolean shouldFilter() {
return true;
}
// 過濾器的執(zhí)行順序。當請求在一個階段的時候存在多個多個過濾器時,需要根據(jù)該方法的返回值依次執(zhí)行
// 優(yōu)先級為0,數(shù)字越小,越早執(zhí)行該過濾器
public int filterOrder() {
return 0;
}
// 過濾器類型:pre,post,routing,error四種。 pre表示在請求之前進行攔截
public String filterType() {
return "pre";
}
}
到此,相信大家對“怎么使用Spring Cloud中API網(wǎng)關”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
網(wǎng)頁名稱:怎么使用SpringCloud中API網(wǎng)關
轉(zhuǎn)載源于:http://www.chinadenli.net/article18/ieosdp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、商城網(wǎng)站、企業(yè)建站、品牌網(wǎng)站制作、軟件開發(fā)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)