一个架构问题

时间:2009-08-26 04:38:43

标签: .net architecture

我有一个一般的架构问题,希望大家可以帮助我。所以先介绍一些基本背景。我有一个中型客户群使用我的旗舰产品,主要是crm会计软件。它是一个基于Windows的产品,它们在服务器上(通常在他们的办公室)托管数据。

我有一个clickonce应用程序,可以将其数据库的子集上传到我们的服务器。我们将所有客户的数据存储在一个数据库中。我们为每位客户及其后续记录提供数据提示。

clickonce使用清单工作,它基本上可以确定在我们的服务器上添加,删除或更新哪些记录。客户服务器和服务器之间的数据传输是通过Web服务进行的。在初始上传(数据密集)之后,后续上传只会推动差异(这要小得多)。我们的大多数客户倾向于上传一天。

我们还有一个Web应用程序,可以访问这个数据子集,向各种用户显示信息,这些用户是我们客户的客户。我们为这个网络应用程序提供了大约3000个活跃用户,该网站应用程序大约每周一次访问该网站。

问题在于,从网站以及上传服务对我们数据库的查询是超时的。每当我们进行新版本时,我们都会扩展数据子集(即添加新表或2)。因此,在发布之后,我们立即受到上传的轰炸。因此我们的网站最近很多。我认为在上传数据和网站数据检索方面,一个数据库的流量过多。

我们希望尽可能将数据子集与旗舰产品数据保持同步。

我们得到的东西包括,用于Clickonce的调度程序在凌晨上传数据。我们目前正在实施排队系统,因此一次只能上传x个人。

我可以在长期和短期内探索哪些途径?

欢呼。

3 个答案:

答案 0 :(得分:1)

如果上传不必立即可用(可以在选择数据之前稍等一下),我强烈考虑使用MSMQ / WCF在其前面放置一个队列。这可以帮助您减少对数据的吸收。

接下来,分析数据库结构非常重要。这里没有太多关于你的架构的信息,或者行数等...但是如果你有大量的传入数据,我可以推荐几件事。

  • 确保您没有使用不符合任务要求的技术(如Access或Sqlite)。
  • 考虑优化数据库 插入,然后将该数据库复制到您可能用于选择的其他数据库。
  • 如果您有大量数据,请考虑设置群集
  • 考虑切换到基于云的数据服务,如Amazon SimpleDB或Azure Data Services

答案 1 :(得分:0)

在开始深入研究优化过程之前,我要确保你看一件事就是找出你的瓶颈。是客户端处理,客户端带宽,服务器带宽还是服务器端处理。假设你没有提供大量的数据,那很可能是服务器端的处理,但是做出这样的假设会让你在这些事情上遇到麻烦。

答案 2 :(得分:0)

你的瓶颈在哪里?是您的数据连接带宽问题,数据库服务器上的问题,还是Web服务器上的问题等?

您运行的是哪种数据库软件?如果它是访问或类似的东西,它必须去,赞成或稍微更像企业,如SQL Server或类似的东西。

所有客户都在尝试同时上传吗?你能不能以某种方式对它们进行煽动,也许是让它们在一天中的随机时间上传,或者在特定的窗口中进行randome时间。

是否会对您的Web服务器或数据库服务器进行群集帮助?

如上所述,您可以通过msmq实现某种队列,或使用biztalk或类似产品。这样客户端可以提交结果,忘记它,然后队列软件处理实际交付。