日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud Edgware新特性之八:Zuul回退的改进

發(fā)布時間:2023/12/19 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud Edgware新特性之八:Zuul回退的改进 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

Spring Cloud Edgware對Hystrix回退的邏輯進行了一些改進。本文將信息探討新舊版本的回退操作,并分析的原因及改進后的優(yōu)勢。

Dalston及更低版本

對于Dalston及更低版本,要想為Zuul提供回退,只需編寫代碼如下:

@Component public class MyFallbackProvider implements ZuulFallbackProvider {@Overridepublic String getRoute() {// 表明是為哪個微服務提供回退,*表示為所有微服務提供回退return "*";}@Overridepublic ClientHttpResponse fallbackResponse() {return new ClientHttpResponse() {@Overridepublic HttpStatus getStatusCode() throws IOException {// fallback時的狀態(tài)碼return HttpStatus.OK;}@Overridepublic int getRawStatusCode() throws IOException {// 數(shù)字類型的狀態(tài)碼,本例返回的其實就是200,詳見HttpStatusreturn this.getStatusCode().value();}@Overridepublic String getStatusText() throws IOException {// 狀態(tài)文本,本例返回的其實就是OK,詳見HttpStatusreturn this.getStatusCode().getReasonPhrase();}@Overridepublic void close() {}@Overridepublic InputStream getBody() throws IOException {// 響應體return new ByteArrayInputStream("用戶微服務不可用,請稍后再試。".getBytes());}@Overridepublic HttpHeaders getHeaders() {// headers設定HttpHeaders headers = new HttpHeaders();MediaType mt = new MediaType("application", "json", Charset.forName("UTF-8"));headers.setContentType(mt);return headers;}};} }

Edgware及更高版本

@Component public class MyFallbackProvider implements FallbackProvider {@Overridepublic String getRoute() {// 表明是為哪個微服務提供回退,*表示為所有微服務提供回退return "*";}@Overridepublic ClientHttpResponse fallbackResponse(Throwable cause) {if (cause instanceof HystrixTimeoutException) {return response(HttpStatus.GATEWAY_TIMEOUT);} else {return this.fallbackResponse();}}@Overridepublic ClientHttpResponse fallbackResponse() {return this.response(HttpStatus.INTERNAL_SERVER_ERROR);}private ClientHttpResponse response(final HttpStatus status) {return new ClientHttpResponse() {@Overridepublic HttpStatus getStatusCode() throws IOException {return status;}@Overridepublic int getRawStatusCode() throws IOException {return status.value();}@Overridepublic String getStatusText() throws IOException {return status.getReasonPhrase();}@Overridepublic void close() {}@Overridepublic InputStream getBody() throws IOException {return new ByteArrayInputStream("服務不可用,請稍后再試。".getBytes());}@Overridepublic HttpHeaders getHeaders() {// headers設定HttpHeaders headers = new HttpHeaders();MediaType mt = new MediaType("application", "json", Charset.forName("UTF-8"));headers.setContentType(mt);return headers;}};} }

分析

由代碼可知:

  • Dalston及更低版本通過實現(xiàn)ZuulFallbackProvider 接口,從而實現(xiàn)回退;
  • Edgware及更高版本通過實現(xiàn)FallbackProvider 接口,從而實現(xiàn)回退。
  • 在Edgware中:
    • FallbackProvider是ZuulFallbackProvider的子接口。
    • ZuulFallbackProvider已經(jīng)被標注Deprecated ,很可能在未來的版本中被刪除。
    • FallbackProvider接口比ZuulFallbackProvider多了一個ClientHttpResponse fallbackResponse(Throwable cause); 方法,使用該方法,可獲得造成回退的原因。
  • 筆者將在下一篇文章詳細總結在Spring Cloud中如何獲得造成回退原因的各種姿勢。

轉載于:https://my.oschina.net/eacdy/blog/1609309

總結

以上是生活随笔為你收集整理的Spring Cloud Edgware新特性之八:Zuul回退的改进的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。