这个问题是针对有经验的建筑师的——大男孩是怎么做的?:)
概述
我正在构建这个基于 .NET 的高流量、类似分析的解决方案,它最终将托管在 Azure 上。假设这个 Web 应用程序每天将收到 5 亿+“事务”,这些对我们的服务器的访问速度非常快,几乎不需要对每个数据库进行查询,几乎所有繁重的工作都将在服务器端按设定的时间间隔完成. 我很确定我必须实现某种队列来存储所有传入的命中并在后端实现“聚合器”,该后端将每分钟左右运行一次以处理队列中的新项目。
建议的解决方案
如果我错了,请纠正我,但我认为将这些事务直接写入数据库(某种日志表)将是一个错误,所以我将使用 Azure 存储帐户(表)作为我的队列并分拆几个Azure 工作角色(根据需要)来处理数据和更新数据库。想法?
重要的是要记住,Azure 存储主要基于每个事务模型,因此我必须为所有传入事务(写入)和聚合器(读取)的事务付费。因此,每天 5 亿次写入和 5 亿次读取,这大约是 100 美元/天。那有意义吗?此外,通过使用 Azure 存储,我可以读取一组行(以考虑单个事务)还是我必须同时读取队列一条记录?
最后,为每一行执行数据库插入/更新对于我的聚合器来说是一种过度杀伤,所以我认为每个聚合器都应该聚合内存中的工作负载,然后将其清除到数据库中。