最佳答案
我一直认为上游或下游是沿着一条真实的溪流流动的,在那里信息的流动就像水一样。因此,上游是水/数据的来源(例如 HTTP 请求) ,下游是水/数据的去向(例如服务请求的底层系统)。
我最近一直在研究 API 网关,并注意到其中一些网关使用了与此定义相反的定义。当时我把它当作一种奇怪的东西对待。然后我发现,一些 API 网关所基于的 nginx 也以与我预期相反的方式使用术语。Nginx 调用它向“上游服务器”发送请求的服务器,因此传入的请求可能是“下游客户机”。
从概念上看,如果发送到“上游服务器”,nginx 似乎会把请求推向“上坡”,这完全是违反直觉的... ... 显然,在反向代理和 API 网关的土地上,重力是相反的!
我看到过其他讨论关于上游/下游表示系统之间的依赖关系,但是对于坐落在系统之间的中间件或基础设施组件来说,依赖关系的概念有点松散,我发现从信息流的角度来考虑更有帮助——因为那通常是你的依赖关系的来源。
我对流类比的理解从根本上是错误的,还是这些软件组件把概念倒过来了?