我們在做微服務時,有時候需要將微服務做一些限制,比如只能我們自己的服務調用,不能通過瀏覽器直接調用等。
我們可以使用spring cloud sleuth,在應用調用微服務時通過Tracer產生一個traceId,並通過request設置到header裡面,
然後sleuth會將該traceId在整個鏈路傳遞,我們在微服務中定義一個攔截器,取到header裡面的traceId並和鏈路中的traceId比較,
如果相等,則表明是我們自己的應用調用,攔截器通過,否則這次請求被攔截
代碼詳見github
https://github.com/devinzhang0209/interview_springcloud.git
一. 應用調用微服務,產生traceId
1. feign調用微服務,指定配置
2. FeignReqeustConfig中實例化攔截器用於生成traceId
3. 攔截器生成traceId並放到header裡面
二 . 攔截器攔截到traceId並和鏈路中比較
1. 攔截器判斷traceId
2. 攔截器生效,只攔截微服務的請求(定義時定義微服務都是cloud開頭)
[qp18502452 ] SpringCloud讓微服務實現指定程序調用已經有251次圍觀