用于图像上传的 Service Fabric 方法
Service Fabric approach for images uploading
我有专门的 Images
无状态可靠服务用于图片上传。它将内容上传到 Azure Blob 存储,并 returns 为上传的项目返回 url。我的项目还具有 ApiGateway
无状态可靠服务,具有 OwinCommunicationListener
和 API 用户的授权端点。我想为授权用户添加一个新端点,允许上传存储中的图像。
最有效最快的方法是什么?
我有两个建议,不知道哪个最好:
- 向我的
ApiGateway
Reliable Service 添加一个新端点,为图像无状态服务创建代理并将到达的数据传递给它以进行上传。
- 在我的
Images
具有外部端点的稳定可靠服务上创建一个 OwinCommunicationListener
。
第一种情况看起来比第二种情况花费更多时间。因为我需要花一些时间在服务之间传递数据。在第二种情况下,我没有花时间进行传输,而是等到我的 Azure Table 存储完成上传。但这种方法的主要缺点是我需要为 Images
OwinCommunicationListener
配置授权并确保它正确处理外部授权请求。
API网关只能接受请求(图片)。然后它将调用一个可靠的服务,将图像存储在文件中(本地到集群或另一个 blob 存储),将请求(带有标识符的图像)添加到可靠队列中,然后 return 标识符(Guid)到API 网关。
在可靠服务中有一个进程检查可靠队列中的项目并通过调用无状态服务进行图像处理来处理它,将图像存储在 Azure Blob 存储中,然后 return 返回 URL 到有状态服务。有状态服务会将结果 (URL) 存储在 Reliable Dictionary 中(带有标识符)。
如果标识符在可靠字典中,API网关可以重新查询可靠服务。应该很快,具体取决于集群中处理图像的无状态服务的数量。
过去做类似的事情时 - 我使用 API 网关
- 授权请求
- 使用 GUID 存储对文件的引用
在数据库中
- Return一个URL客户端需要post文件(见下文)
使用 Azure Blob API,您应该能够创建自定义签名请求 (URL),允许客户端直接上传到 blob 存储,但权限有限,例如
- 只上传文件名完全相同的文件
- 文件必须在 X 小时内上传
然后客户端设备直接上传到 Azure Blob。
这是安全和性能方面的最佳方法。
这是一个很好的起点:
我有专门的 Images
无状态可靠服务用于图片上传。它将内容上传到 Azure Blob 存储,并 returns 为上传的项目返回 url。我的项目还具有 ApiGateway
无状态可靠服务,具有 OwinCommunicationListener
和 API 用户的授权端点。我想为授权用户添加一个新端点,允许上传存储中的图像。
最有效最快的方法是什么?
我有两个建议,不知道哪个最好:
- 向我的
ApiGateway
Reliable Service 添加一个新端点,为图像无状态服务创建代理并将到达的数据传递给它以进行上传。 - 在我的
Images
具有外部端点的稳定可靠服务上创建一个OwinCommunicationListener
。
第一种情况看起来比第二种情况花费更多时间。因为我需要花一些时间在服务之间传递数据。在第二种情况下,我没有花时间进行传输,而是等到我的 Azure Table 存储完成上传。但这种方法的主要缺点是我需要为 Images
OwinCommunicationListener
配置授权并确保它正确处理外部授权请求。
API网关只能接受请求(图片)。然后它将调用一个可靠的服务,将图像存储在文件中(本地到集群或另一个 blob 存储),将请求(带有标识符的图像)添加到可靠队列中,然后 return 标识符(Guid)到API 网关。
在可靠服务中有一个进程检查可靠队列中的项目并通过调用无状态服务进行图像处理来处理它,将图像存储在 Azure Blob 存储中,然后 return 返回 URL 到有状态服务。有状态服务会将结果 (URL) 存储在 Reliable Dictionary 中(带有标识符)。
如果标识符在可靠字典中,API网关可以重新查询可靠服务。应该很快,具体取决于集群中处理图像的无状态服务的数量。
过去做类似的事情时 - 我使用 API 网关
- 授权请求
- 使用 GUID 存储对文件的引用 在数据库中
- Return一个URL客户端需要post文件(见下文)
使用 Azure Blob API,您应该能够创建自定义签名请求 (URL),允许客户端直接上传到 blob 存储,但权限有限,例如
- 只上传文件名完全相同的文件
- 文件必须在 X 小时内上传
然后客户端设备直接上传到 Azure Blob。
这是安全和性能方面的最佳方法。
这是一个很好的起点: