快递上传一个文件就负载均衡?
Express upload a file on load balancing?
最近我在 node js 中制作了一个具有负载平衡功能的应用程序。我为数据库本身和其他管理请求做了一个服务器。问题是,在应用程序中,您可以使用 multer 上传文件,而在 express 中,您可以将文件上传到该服务器。这是一个明确的静态。
例如,我有 4 台服务器,一台用于数据库,2 台用于应用程序,1 台用于负载均衡器。
当负载均衡器请求到app-1服务器时,文件上传到app-1服务器而不是db服务器。因此,当我尝试从 app-2 服务器访问该文件时,该文件不存在。
有什么办法可以解决这个问题吗?
或者使用负载均衡器的更好方法?
因为我是负载均衡器的新手。谢谢
您将通过 app-1 上传的文件存储在哪里?例如,您可以将其存储在存储桶中,并将引用保存在 SQL 数据库中。因此,当 app-2 尝试访问该文件时,它会直接询问在您的应用程序之间共享的数据库。
要回答您的问题,您有 2 个解决方案:
- 与您的负载均衡器保持会话持久性,因此请求 app-1 的用户会一直请求 app-1,直到他的会话过期。
- 采用无状态后端设计,这意味着您不需要会话,因此任何用户都可以向您拥有的任何
app
个实例发送请求,它们的行为都是一样的。
我会选择解决方案 2,在您了解无状态概念后会更容易。
拥有外部存储桶而不依赖于您的 app
内部内存和存储系统是实现无状态架构的好方法。
最近我在 node js 中制作了一个具有负载平衡功能的应用程序。我为数据库本身和其他管理请求做了一个服务器。问题是,在应用程序中,您可以使用 multer 上传文件,而在 express 中,您可以将文件上传到该服务器。这是一个明确的静态。
例如,我有 4 台服务器,一台用于数据库,2 台用于应用程序,1 台用于负载均衡器。 当负载均衡器请求到app-1服务器时,文件上传到app-1服务器而不是db服务器。因此,当我尝试从 app-2 服务器访问该文件时,该文件不存在。
有什么办法可以解决这个问题吗? 或者使用负载均衡器的更好方法? 因为我是负载均衡器的新手。谢谢
您将通过 app-1 上传的文件存储在哪里?例如,您可以将其存储在存储桶中,并将引用保存在 SQL 数据库中。因此,当 app-2 尝试访问该文件时,它会直接询问在您的应用程序之间共享的数据库。
要回答您的问题,您有 2 个解决方案:
- 与您的负载均衡器保持会话持久性,因此请求 app-1 的用户会一直请求 app-1,直到他的会话过期。
- 采用无状态后端设计,这意味着您不需要会话,因此任何用户都可以向您拥有的任何
app
个实例发送请求,它们的行为都是一样的。
我会选择解决方案 2,在您了解无状态概念后会更容易。
拥有外部存储桶而不依赖于您的 app
内部内存和存储系统是实现无状态架构的好方法。