加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 00:11:53 所属栏目:百科 来源:网络整理
导读:我正在开发一种需要在 Windows平台上扩展的服务. 最初它将每秒接收大约50个连接(每个连接将发送大约5kb数据),但它需要可扩展以接收超过500个未来. 将接收的数据保存到像Microsoft SQL Server这样的公共数据库是不切实际的(我猜). 还有其他解决方案来保存数据
我正在开发一种需要在 Windows平台上扩展的服务.

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

将接收的数据保存到像Microsoft SQL Server这样的公共数据库是不切实际的(我猜).

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

有5个步骤:

>通过http处理程序(c#)接收数据;
>保存收到的数据; < - HERE
>请求处理保存的数据;
>处理请求的数据;
>保存已处理的数据. < - HERE
我的预解决方案是:

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

解决方法

每天600万条记录听起来不是特别大.特别是,每天24小时不是每秒500 – 你认为交通是“突发性的”吗?

我不会亲自使用消息队列 – 我之前被不稳定和一般困难所困扰.我可能只是直接写入磁盘.在内存中,使用生成器/使用者队列,并将单个线程写入磁盘.生产者只会转储要写入队列的记录.

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读