我正在研究纯在Golang的后端架构。我有一个API,用于将文件上传到golang服务器,然后将文件传输到云存储(从golang服务器本身)。现在,我希望这两个传输都是独立的,这样,最终用户就不必在上传文件后等待响应。
End User -> Golang Server ->[Concurrency/Parallelism] -> Cloud Storage现在,我想到了两种方法:
我发现了使用goroutine和频道的例子,但我认为这会产生同样多的goroutine有上传。我想使用第二种选择,但无法理解如何在金刚进行呢?
另外,如果我使用了错误的方法,还有其他一些有效的方法。
更新
关于需求和约束的详细信息:
发布于 2015-12-14 02:58:42
上传文件的用户可以容忍错误,然后再试一次。但是,如果上传的文件只存在于上传到的机器上,并且在上传到云存储之前出现问题,则存在危险。在这种情况下,该文件将丢失,这将是一个令人沮丧的用户。
好的建筑解决了这个问题。这是一个先入先出队列模式。
这种模式最受欢迎的Go实现是上班族,也许是由Redis数据库支持的。
假设有n数量的服务器在任何给定时间运行您的服务。假设后端代码编译了两个独立的二进制文件,一个是服务器二进制文件,另一个是工作者二进制文件。
理想情况下,接受文件上载的机器都会挂载一个共享的网络文件系统,以便:
通过将服务器流量和工作队列大小作为两个独立的度量来监视,可以确定应该分别运行服务器/工作人员服务的服务器数量。
https://stackoverflow.com/questions/34253215
复制相似问题