【发布时间】:2014-09-30 05:26:10
【问题描述】:
我们正在尝试在 Azure env 上构建一个 OpenRtb 投标器。我们使用部署在 Linux VM 上的 redis 实例来存储实时数据(跟踪密钥、请求/投标计数等)。我们使用基于 WebApi 的网站(标准计划/大型实例/按性能扩展)作为端点。在 webapi bidder 控制器中,我们使用异步方法,对 DB 和 redis 的所有请求也是异步的。 Json.net 到 ser/der json req/resp.
目前我们遇到了延迟问题。我们应该有可能每秒接收超过 10000 个请求,延迟应该小于 100 毫秒。
有人可以和我分享经验吗?这个技术堆栈是否适合构建像 rtb 投标人这样的应用程序。目前我正在尝试找到存储每个请求的请求上下文(查询、请求正文、标头等)的最佳策略。所以,我需要一种非常快速地插入大量(> 10000)大消息的方法。我在想:
- 存储到日志文件并将它们复制到 HDFS 并由 Hadoop MapReduce 任务 (HDInsight) 进行解析
- 使用一些队列,如 AzureQueue 或 ServiceBus 或者 RabbitMQ 并将 req 消息发送到队列,一些服务(自制或 LogStash 等)也会接收它们并存储到一些存储中。
也许有人可以告诉我如何优化延迟和性能,因为目前我们在这方面存在问题。也许是一些基本的陷阱?
【问题讨论】:
-
您能描述一下您系统的工作流程吗?就像从您收到投标请求到回复时发生的情况一样。以更详细的方式。
标签: c# azure logging statistics