首页 > 解决方案 > 在 Azure 中使用 .Net 为大数据创建实时仪表板的最有效方法是什么?

问题描述

假设的简化场景:

我有一个 Asp.Net Core 3 API,它接受来自 Javascript 的披萨订单。订购了比萨饼,我在 C# API 中反序列化对象。我现在有一个对象“披萨”:

{
   "name": "Margherita",
   "date": "20201502",
   "amount": "10"
   "ingredients": ["tomato", "mozzarella"]
}

我每天收到 1 亿份披萨订单,我需要一个显示订单的实时仪表板,以及用于搜索“昨天”、“本月”、“去年”等历史数据的菜单。

我还需要在给定时间范围内订购最多的比萨饼列表,或使用的顶级配料。

使用 Microsoft Azure 和 C# 实现这种结果的最现代、最有效的方法是什么?

有太多的队列、数据工厂、湖泊、存储、流等分析服务可供选择。

我可以想到两种方法:

1)

2)

我认为#2是要走的路,但我还没有决定什么是最简单且具有成本效益的任务的最佳“堆栈”。

标签: c#azurebigdataazure-stream-analytics

解决方案


我建议您考虑实现一些遵循 Lambda 架构的技术。基本上这是分开的热路径和冷路径技术。这是一个很好的介绍,尽管我不会只关注 James 提到的技术。

如果您有一些常规查询,例如“在滚动 5 分钟窗口中订购的比萨饼数量”,则 Azure 流分析可以输出这些聚合的恒定流。

然后,披萨订单事件也可以存档在 Blob 存储中,以便摄取到某些批处理技术中。例如,每天或每小时加载一次 Azure SQL 数据仓库(最近更名为 Azure Synapse Analytics)。然后,您的应用程序可以以特别的方式运行诸如“上个月最受欢迎的披萨配料”之类的查询。这些热路径和冷路径技术的组合应该比试图让一个工具来做所有事情更好。

另一种选择是 Spark。我建议在 Azure Databricks 中查看 Spark 流。您应该能够进行流式聚合,并且还可以为旧时间段的批量查询加载 Delta 表。这篇文章可能会给你一个例子。


推荐阅读