SpringCloud讓微服務(wù)實現(xiàn)指定程序調(diào)用
我們在做微服務(wù)時,有時候需要將微服務(wù)做一些限制,比如只能我們自己的服務(wù)調(diào)用,不能通過瀏覽器直接調(diào)用等。
我們可以使用spring cloud sleuth,在應(yīng)用調(diào)用微服務(wù)時通過Tracer產(chǎn)生一個traceId,并通過request設(shè)置到header里面,
然后sleuth會將該traceId在整個鏈路傳遞,我們在微服務(wù)中定義一個攔截器,取到header里面的traceId并和鏈路中的traceId比較,
如果相等,則表明是我們自己的應(yīng)用調(diào)用,攔截器通過,否則這次請求被攔截
代碼詳見github
https://github.com/devinzhang0209/interview_springcloud.git
一. 應(yīng)用調(diào)用微服務(wù),產(chǎn)生traceId
1. feign調(diào)用微服務(wù),指定配置
2. FeignReqeustConfig中實例化攔截器用于生成traceId
3. 攔截器生成traceId并放到header里面
二 . 攔截器攔截到traceId并和鏈路中比較
1. 攔截器判斷traceId
2. 攔截器生效,只攔截微服務(wù)的請求(定義時定義微服務(wù)都是cloud開頭)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之
相關(guān)文章
java如何更改數(shù)據(jù)庫中的數(shù)據(jù)
這篇文章主要介紹了java如何更改數(shù)據(jù)庫中的數(shù)據(jù),修改數(shù)據(jù)庫是數(shù)據(jù)庫操作必不可少的一部分,使用Statement接口中的excuteUpdate()方法可以修改數(shù)據(jù)表中的數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧2021-11-11Java靜態(tài)方法不能調(diào)用非靜態(tài)成員的原因分析
在Java中,靜態(tài)方法是屬于類的方法,而不是屬于對象的方法,它可以通過類名直接調(diào)用,無需創(chuàng)建對象實例,非靜態(tài)成員指的是類的實例變量和實例方法,它們需要通過對象實例才能訪問和調(diào)用,本文小編將和大家一起探討Java靜態(tài)方法為什么不能調(diào)用非靜態(tài)成員2023-10-10Java并發(fā)編程中的生產(chǎn)者與消費者模型簡述
這篇文章主要介紹了Java并發(fā)編程中的生產(chǎn)者與消費者模型簡述,多線程并發(fā)是Java編程中最終要的部分之一,需要的朋友可以參考下2015-07-07Java算法之BFS,DFS,動態(tài)規(guī)劃和貪心算法的實現(xiàn)
廣度優(yōu)先搜索(BFS)和深度優(yōu)先搜索(DFS)是圖遍歷算法中最常見的兩種算法,主要用于解決搜索和遍歷問題。動態(tài)規(guī)劃和貪心算法則用來解決優(yōu)化問題。本文就來看看這些算法的具體實現(xiàn)吧2023-04-04Schedule定時任務(wù)在分布式產(chǎn)生的問題詳解
這篇文章主要介紹了Schedule定時任務(wù)在分布式產(chǎn)生的問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10