javascript
Spring Cloud Zuul支持–配置超时
Spring Cloud為Netflix Zuul提供了支持 -Netflix Zuul是用于創建具有路由和過濾功能的邊緣服務的工具包。
在Spring Cloud站點上非常全面地記錄了Zuul代理支持。 我的目標是關注與代理服務處理超時有關的一小部分屬性。
目標服務和網關
為了更好地研究超時,我創建了一個示例服務( 此處提供代碼),該服務將可配置的“延遲”參數作為請求正文的一部分,并且示例請求/響應如下所示:
延遲5秒的樣本請求:
{"id": "1","payload": "Hello","delay_by": 5000,"throw_exception": false }和預期的響應:
{"id": "1","received": "Hello","payload": "Hello!" }該服務已在Eureka中以“ sample-svc”的ID注冊,該服務之上的Spring Cloud Zuul代理具有以下配置:
zuul:ignoredServices: '*'routes:samplesvc:path: /samplesvc/**stripPrefix: trueserviceId: sample-svc本質上,通過Eureka將對/ samplesvc / uri的所有請求轉發到名稱為“ sample-svc”的歧義服務。
我還在網關頂部有一個UI,可以使具有不同延遲的測試更加容易:
服務延遲測試
將低“延遲”參數添加到服務調用時,網關的行為沒有任何與超時相關的問題,但是,如果將延遲參數更改為低至1到1.5秒,則網關將超時。
原因是,如果將網關設置為使用Eureka,則網關將使用Netflix Ribbon組件進行實際呼叫。 此外,將功能區調用包裝在Hystrix中,以確保該調用保持容錯能力。 我們遇到的第一個超時是因為Hystrix的延遲容限閾值非常低,因此調整hystrix設置應該可以使我們超過第一次超時。
hystrix:command:sample-svc:execution:isolation:thread:timeoutInMilliseconds: 15000請注意,用于配置的Hystrix“命令鍵”是在Eureka中注冊的服務名稱。
對于這個特定的Zuul調用來說,這可能有些微不足道,如果您可以全面地對其進行調整,那么按照以下方式進行配置就可以了:
hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 15000進行此更改后,通過網關對服務的請求最多可以延遲5秒,而不會出現任何問題。 如果我們超過5秒,盡管會再次超時。 現在,我們達到了Ribbons超時設置,可以通過調整如下所示的配置再次為特定的服務調用以細粒度的方式對其進行配置:
sample-svc:ribbon:ReadTimeout: 15000通過這兩個超時調整,基于網關的呼叫現在應該通過
結論
目的不是顯示設置任意高的超時值的方法,而只是顯示如何設置可能更適合您的應用程序的值。 合理的超時對于確保不良的服務行為不會累積到用戶非常重要。 要注意的一件事是,如果通過指定服務的直接url將網關配置為不使用功能區和Eureka,則這些超時設置根本不相關。
如果您有興趣進一步探索,請在此處找到示例。
翻譯自: https://www.javacodegeeks.com/2016/06/spring-cloud-zuul-support-configuring-timeouts.html
總結
以上是生活随笔為你收集整理的Spring Cloud Zuul支持–配置超时的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “克隆羊之父”伊恩・威尔穆特逝世,享年
- 下一篇: 发布就交付!华为AITO问界新M7系列售