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