gpt4 book ai didi

c# - 是否有快速且可扩展的解决方案来保存数据?

转载 作者:行者123 更新时间:2023-11-30 13:25:05 24 4
gpt4 key购买 nike

我正在开发一项需要在 Windows 平台上可扩展的服务。

最初它将每秒接收大约 50 个连接(每个连接将发送大约 5kb 的数据),但它需要可扩展以接收超过 500 个 future 。

(我猜)将接收到的数据保存到像 Microsoft SQL Server 这样的通用数据库中是不切实际的。

是否有其他解决方案来保存数据?考虑到它每天将收到超过 600 万条“记录”。

有5个步骤:

  1. 通过 http 处理程序 (c#) 接收数据;
  2. 保存接收到的数据; <- 这里
  3. 请求处理保存的数据;
  4. 处理请求的数据;
  5. 保存处理后的数据。 <- 这里

我的预解决方案是:

  1. 通过 http 处理程序 (c#) 接收数据;
  2. 将接收到的数据保存到Message Queue
  3. MSQ 请求使用 Windows 服务处理保存的数据;
  4. 处理请求的数据;
  5. 将处理后的数据保存到Microsoft SQL Server(这里是瓶颈);

最佳答案

每天 600 万条记录听起来并不多。特别是,一天 24 小时不是每秒 500 次 - 您认为流量会“突发”吗?

我不会个人使用消息队列 - 之前我一直被不稳定和一般困难所困扰。我可能会直接写入磁盘。在内存中,使用单线程写入磁盘的生产者/消费者队列。生产者只会转储要写入队列的记录。

有一个单独的批处理任务,一次将一堆记录插入数据库。

一次对最佳(或至少“好”数量的要批量上传的记录)进行基准测试。您可能希望有一个线程从磁盘读取和一个单独的线程写入数据库(如果数据库线程有大量积压,则文件线程阻塞),这样您就不必同时等待文件访问和数据库同时。

我建议您尽早进行一些测试,看看数据库可以处理什么(并让您测试各种不同的配置)。弄清楚瓶颈在哪里,以及它们会给您带来多大的伤害。

关于c# - 是否有快速且可扩展的解决方案来保存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com