注冊用戶即可下載全站資源 關注Java幫幫微信公眾號
 

單體轉向微服務架構-網關篇(一)

2
發表時間:2018-11-08 13:49來源:Java幫幫-微信公眾號


背景

日本韩国三级aⅴ在线观看如果我們打開天貓APP想購買一件商品,從搜索、商品展示、購物車、下單、支付、訂單中心、物流詳情等等一系列的功能,前臺一氣呵成,用戶不需要關心后端到底做了什么,但是后端可能會調用不同的服務才能完成這一系列的操作需求。

如果客戶端直接和微服務進行通信,會存在以下諸多問題:

  • 日本韩国三级aⅴ在线观看客戶端會多次請求不同微服務,增加客戶端的復雜性

  • 存在跨域請求,在一定場景下處理相對復雜(特別是分布式session認證)

  • 每一個微服務都需要獨立認證邏輯、無疑增加了復雜度和重復工作

  • 日本韩国三级aⅴ在线观看難以重構,隨著項目的迭代,可能需要重新劃分微服務,如果客戶端直接和微服務通信,那么重構會難以實施

網關

于是微服務網關應運而生,以上問題,都可以通過網關解決。網關是介于客戶端和多個微服務的中間層,所有的客戶端請求都會先經過網關,如下圖所示:


Zuul介紹

Zuul是從設備和網站到Netflix流應用的后端的所有請求的前門。 作為邊緣服務應用程序,Zuul旨在實現動態路由,監控,彈性和安全性。 它還可以根據需要將請求路由到多個Amazon Auto Scaling Groups。

Zuul使用一系列不同類型的過濾器,使我們能夠快速靈活地將功能應用于我們的邊緣服務。 這些過濾器可幫助我們執行以下功能:

  • 身份驗證和安全 - 識別每個資源的身份驗證要求,并拒絕不滿足他們的請求。

  • 洞察和監測 - 跟蹤邊緣的有意義的數據和統計數據,以便我們準確地了解生產情況。

  • 動態路由 - 根據需要將請求動態路由到不同的后端集群。

  • 壓力測試 - 逐漸增加到集群的流量,以衡量性能。

  • 日本韩国三级aⅴ在线观看負載分配 - 為每種類型的請求分配容量并刪除超出限制的請求。

  • 靜態響應處理 - 直接在邊緣構建一些響應,而不是將它們轉發到內部集群

  • 多區域彈性 - 跨AWS地區的路由請求,以使我們的ELB使用多樣化,并使我們的邊緣更接近我們的成員

編寫Zuul微服務網關

maven依賴:

<parent>    <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.10.RELEASE</version>    <relativePath/></parent><dependencies>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-zuul</artifactId>    </dependency></dependencies><dependencyManagement>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-dependencies</artifactId>            <version>Edgware.SR3</version>            <type>pom</type>            <scope>import</scope>        </dependency>    </dependencies></dependencyManagement>

啟動類:

/** * 網關服務 * 創建時間 2017年4月18日 * linux 下 后臺啟動  nohup java -jar getway.jar & */@SpringBootApplication@EnableZuulProxypublicclassZuulApplication{        privatefinalstatic Logger logger = LoggerFactory.getLogger(ZuulApplication.class);        publicstaticvoidmain(String[] args)throws Exception {            SpringApplication.run(ZuulApplication.class, args);            logger.info("ZuulProxy Start Success");    }}

配置application.properties:

server.port=9001spring.application.name=itstyle_gateway
zuul.routes.api-pay-url.path=/pay/**zuul.routes.api-pay-url.url=http://localhost:8080/
zuul.routes.api-user-url.path=/user/**zuul.routes.api-user-url.url=http://localhost:8081/
zuul.routes.api-order-url.path=/order/**zuul.routes.api-order-url.url=http://localhost:8082/
zuul.routes.api-shop-url.path=/shop/**zuul.routes.api-shop-url.url=http://localhost:8083/

當然,以上應該是最簡單的網關服務了,隨著微服務的增多,我們不可能再去手動維護一個個路由配置,后面我們將會引入Eureka實現服務的注冊發現。


支付寶贊助-Java幫幫社區
微信贊助-Java幫幫社區
Java幫幫公眾號生態

Java幫幫公眾號生態

總有一款適合你

Java幫幫-微信公眾號

Java幫幫-微信公眾號

將分享做到極致

Python幫幫-公眾號

Python幫幫-公眾號

人工智能,爬蟲,學習教程

大數據驛站-微信公眾號

大數據驛站-微信公眾號

一起在數據中成長

九點編程-公眾號

九點編程-公眾號

深夜九點學編程

程序員生活志-公眾號

程序員生活志-公眾號

互聯網,職場,程序員那些事兒

Java幫幫學習群生態

Java幫幫學習群生態

總有一款能幫到你

Java學習群

Java學習群

與大牛一起交流

大數據學習群

大數據學習群

在數據中成長

九點編程學習群

九點編程學習群

深夜九點學編程

python學習群

python學習群

人工智能,爬蟲

測試學習群

測試學習群

感受測試的魅力

Java幫幫生態承諾

Java幫幫生態承諾

一直堅守,不負重望

初心
勤儉
誠信
正義
分享
合作品牌 非盈利生態-優質內容分享傳播者
關于我們
友鏈申請
友鏈交換:加幫主QQ2524138991 留言即可 24小時內答復  
全站內容非商業用途,內容來源于網友,并遵循 許可,如有異議請聯系客服。
會員登錄
獲取驗證碼
登錄
登錄
我的資料
留言
回到頂部