【问题标题】:How can I handle multiple queries with threads in c#如何在 C# 中使用线程处理多个查询
【发布时间】:2014-08-06 19:52:53
【问题描述】:

我在使用 C# 中的多线程应用程序时遇到问题,希望能得到一些帮助,因为我是多线程新手。

这是场景:我将有一个移动应用程序,它将在我的数据库(Mysql)中执行大量查询/请求,我的目标是制作一个服务器端应用程序,在 Linux 机器中使用 C# 处理多个查询(单声道救援)。我的公司正在做应用程序的数据库方面,还有另一家公司在做移动应用程序。我将数据发送到云端,云服务器将数据发送到客户端。

简而言之,我正在通过 C# 和 C# 4.0 阅读 CLR 的线程章节,但直到现在我对我能做什么只有一点线索,我相信异步方法会起作用,因为它不使用很多资源,但我对如何处理线程并发(优先级,状态)有点困惑。

所以这是我的问题:

  • 解决此问题的最佳方法是什么?
  • .NET 框架中的哪个类最适合这项工作?
  • 应该如何处理查询队列?
  • 如何以足够快的速度处理数千个线程/查询,以便我的移动应用用户可以在预计 5 分钟内获得查询结果?

一些观察:

我知道完成查询的数据和时间将成倍地等于我数据库中用户数据的大小,但我需要尽快处理(少量和大量数据)它。

我将数据发送到云数据库(Amazon EC2),然后从那里发送给客户端。我不会处理这个,这将由另一家公司处理,所以我的工作是快速完成查询并使它们可用于云数据库。

我知道要将信息发送给我的客户,我依赖于我的 IT 基础架构,但这里的重点是:我如何才能以一种我只需要担心我的应用基础架构的方式快速解决这个问题.

我不能将查询放在一个大字符串上并将其扔到数据库中,因为我需要在将结果发送给用户之前分别处理每个查询结果。

存储引擎是 MyISAM,所以不允许交易。

【问题讨论】:

  • 有点不清楚移动应用程序将如何与数据库通信 - 你能详细说明一下吗?如果你构建一个 web api,你可能会让 webserver 来处理很多线程问题。此外,使用标准的 Web 服务器,您可以启动许多监控和诊断工具。

标签: c# mysql sql .net multithreading


【解决方案1】:

我会在顶层服务堆栈或 WebAPI 上创建一个 REST Web 服务,以通过服务抽象访问您的数据。这些服务中的任何一个都能够处理来自您的移动客户端的同时请求,因为它们旨在这样做。此外,我将创建一个可以调解访问并为您的数据库(即存储库)提供工作单元的类。 MySQL 的连接提供程序应该能够处理来自您的 Web 服务的同时请求,因此您不必担心线程和请求管理。如果单个实例不够用,您可以添加更多运行相同代码的 Web 服务器,并使用负载均衡器将请求分发到服务/数据代码相同的每个实例。

基于单声道的 web-api/servicestack 的一些资源:

http://www.piotrwalat.net/running-asp-net-web-api-services-under-linux-and-os-x/

What is the best way to run ServiceStack on Linux / Mono?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2020-10-24
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多