你說的下游是 Upstream 吧?
工作中,有一些術語比較容易混淆,聊半天,最后發現雙方對術語的理解不一致。這個時候用英文原本的表達或者換一種方式來表述能讓溝通更順暢。
像我們經常說的『上下游』便是經常發生混淆的一對名詞。
以前,我經常說『梳理一下我們依賴的下游』,后來發現這種說法是錯誤的。正確的是:梳理一下我們依賴的上游。
是不是聽著很奇怪?
可以這樣理解,越是上游的地方,越是離源頭更近的地方,源頭就是指數據源。
對于互聯網服務用戶而言,數據沿著源頭、上游、下游,一直流到用戶的設備上。源頭可能是數據庫,上游可能是后端服務、下游可能是 gateway。對于某個微服務的 owner 也一樣:你的服務做的事就是從上游獲取某項數據,然后經過一些加工處理,吐出加工后的數據,數據會流向下游。
有人可能會反問:服務之間的交互,一問一答,請求和響應都有數據,那流向該怎么算?其實這里的數據是指響應數據,是終端用戶最終需要的數據:可能是短視頻,可能是公眾號文章。
我們記住這張圖就可以了:
上面這張圖來自這篇文章[1],文中介紹了好幾種 downstream/upstream,但對于后端研發來說,弄清服務調用間的上下游就足夠了。
實在不好區分的,想想 nginx 中的 upstream 配的是什么地址能就回憶起來。
最后,在有可能要頻繁說起上下游的場合,一定要先和大家約定好名詞的定義。這時用 upstream、downstream 可能會更好一些;或者改叫調用方、被調用方也很清晰。
參考資料
[1]文章: https://reflectoring.io/upstream-downstream?