C# 高可用性&;C语言的可伸缩性#

C# 高可用性&;C语言的可伸缩性#,c#,scalability,load-balancing,C#,Scalability,Load Balancing,我有一个C#服务,目前在一台PC上运行单个实例。我想拆分此组件,使其在多台PC上运行。应为每台PC分配一部分工作。如果一台电脑出现故障,它的工作应该转移到备份机器上 数据同步可以由数据库完成,因此这应该不是什么大问题。我目前的想法是使用某种负载平衡器,将传入的请求拆分并发送到PC阵列,确保工作得到实际处理 我将如何实现这样的功能?我不确定我问的问题是否正确。如果我对如何实现这一目标的理解是错误的,请给我一个提示 编辑: 我想知道上面给出的想法(负载平衡器将软件包拆分到PC并检查结果)是否可行。如

我有一个C#服务,目前在一台PC上运行单个实例。我想拆分此组件,使其在多台PC上运行。应为每台PC分配一部分工作。如果一台电脑出现故障,它的工作应该转移到备份机器上

数据同步可以由数据库完成,因此这应该不是什么大问题。我目前的想法是使用某种负载平衡器,将传入的请求拆分并发送到PC阵列,确保工作得到实际处理

我将如何实现这样的功能?我不确定我问的问题是否正确。如果我对如何实现这一目标的理解是错误的,请给我一个提示

编辑:

  • 我想知道上面给出的想法(负载平衡器将软件包拆分到PC并检查结果)是否可行。如果有某种已经实施的解决方案,那么这个看似常见的问题,我很乐意使用这种解决方案

  • 可用性是一项关键要求


  • 使用服务器和多线程进行处理怎么样?甚至可以在PC上使用多线程,因为您现在可以在标准桌面上获得多个内核


    这显然不能解决机器停机的问题,但可以以更少的投资获得更高的性能。

    使用服务器和多线程处理如何?甚至可以在PC上使用多线程,因为您现在可以在标准桌面上获得多个内核


    这显然不能解决机器出现故障的问题,但可以以更少的投资获得更高的性能。

    您可以检查,并且您必须处理一系列问题,这些问题取决于服务的行为(您可以提供有关服务本身的更多详细信息,以便我可以回答)

    您可以检查,您必须处理一系列问题,这些问题取决于服务的行为(您可以提供有关服务本身的更多详细信息,以便我可以回答)

    根据您所说的,每台电脑都需要一份完整的服务副本-

    应为每台PC分配特定的 工作的一部分。如果一台电脑出现故障,它的 工作应该转移到备份 机器

    否则,您将无法将其工作移动到另一台PC

    我很想有一个中央服务器,将工作分配给个人电脑。这意味着您需要在每台机器之间进行某种形式的通信,并在中央服务器上记录分配到哪里的工作

    您还需要每台机器测量其cpu负载,并在太忙时拒绝工作


    多线程的服务方式将充分利用当今无处不在的多处理器内核。

    根据您所说,每台电脑都需要一份完整的服务副本-

    应为每台PC分配特定的 工作的一部分。如果一台电脑出现故障,它的 工作应该转移到备份 机器

    否则,您将无法将其工作移动到另一台PC

    我很想有一个中央服务器,将工作分配给个人电脑。这意味着您需要在每台机器之间进行某种形式的通信,并在中央服务器上记录分配到哪里的工作

    您还需要每台机器测量其cpu负载,并在太忙时拒绝工作


    多线程的服务方式可以很好地利用当今无处不在的多处理器内核。

    这取决于您希望如何分配工作负载,这通常由

    • 将同一工作负载拆分为多个服务

      表示在上安装了相同的服务 不同的服务器和服务器将执行相同的操作 同样的工作。假设您的服务正在从数据库服务器读取大量数据,并对其进行处理,以生成大量特定于客户端的数据文件,最后将该数据文件发送到客户端。在这种方法中,安装在diff服务器中的所有服务都将执行相同的工作,但它们会将工作拆分以提高性能

    • 按多个服务拆分工作负载的一部分

      在这种方法中,每个服务将被分配到不同的工作岗位,并针对不同的目标工作。在上面的示例中,一个服务负责从db读取数据并生成巨大的数据文件,而另一个服务仅配置为读取数据文件并将其发送给客户端


    我已经在我的一项工作中实施了第二种方法。因为这让我能够在出现任何故障时隔离和调试错误。

    这取决于您希望如何分配工作负载,这通常由

    • 将同一工作负载拆分为多个服务

      表示在上安装了相同的服务 不同的服务器和服务器将执行相同的操作 同样的工作。假设您的服务正在从数据库服务器读取大量数据,并对其进行处理,以生成大量特定于客户端的数据文件,最后将该数据文件发送到客户端。在这种方法中,安装在diff服务器中的所有服务都将执行相同的工作,但它们会将工作拆分以提高性能

    • 按多个服务拆分工作负载的一部分

      在这种方法中,每个服务将被分配到不同的工作岗位,并针对不同的目标工作。在上面的示例中,一个服务负责从db读取数据并生成巨大的数据文件,而另一个服务仅配置为读取数据文件并将其发送给客户端


    我已经在我的一项工作中实施了第二种方法。因为这让我能够在出现任何故障时隔离和调试错误。

    负载平衡器的常用方法是在所有服务实例之间平均分割服务请求


    对于每个工作项(请求),您可以在数据库中存储相关信息。然后,每个服务还应该至少有一个后台线程检查数据库来检查废弃的工作项。

    负载平衡器的常用方法是spli