Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于匹配系统并向外扩展的体系结构_C#_Asp.net_Architecture_Scalability - Fatal编程技术网

C# 用于匹配系统并向外扩展的体系结构

C# 用于匹配系统并向外扩展的体系结构,c#,asp.net,architecture,scalability,C#,Asp.net,Architecture,Scalability,我有一个网站,其中一个用户选择一个特定的标准,在网站上找到另一个用户,然后网站配对你和其他人,也在寻找同样的标准的人。存在尚未配对的未配对用户集合,每次有人请求配对时,程序将使用匹配条件检查集合中的下一个可用用户,如果存在匹配,则将该用户从未配对集合中删除,如果没有,它将把用户添加到未配对的集合中 我的问题是,根据以下标准处理此类收集的最佳方法是什么 匹配过程是实时的,所以我使用 信号员处理实时切割 如果系统关闭,则不需要保留收集 因为不会有用户搜索未配对的用户 因为系统关闭了 如果我扩展服务器

我有一个网站,其中一个用户选择一个特定的标准,在网站上找到另一个用户,然后网站配对你和其他人,也在寻找同样的标准的人。存在尚未配对的未配对用户集合,每次有人请求配对时,程序将使用匹配条件检查集合中的下一个可用用户,如果存在匹配,则将该用户从未配对集合中删除,如果没有,它将把用户添加到未配对的集合中

我的问题是,根据以下标准处理此类收集的最佳方法是什么

匹配过程是实时的,所以我使用 信号员处理实时切割 如果系统关闭,则不需要保留收集 因为不会有用户搜索未配对的用户 因为系统关闭了 如果我扩展服务器并有多个实例,它们都有 能够从同一个集合中提取 处理并发性我不知道是否需要如果有两个用户请求 同时 当我思考这一点时,出现了一些标准问题:

我甚至需要一个数据库,因为用户正在添加 并不断删除

如果我真的需要某种存储,像mongodb这样的东西会不会是一个 好的选择?为什么?

如果我把收集的东西储存在内存中,那就不可能了 如果我向外扩展,会有不同的实例,对吗

您将需要处理并发性-一旦找到要配对的用户,您将希望锁定该用户,验证该用户是否仍然未配对,将其配对,然后解锁。否则,当你第一次看到一个未配对的用户时,你可能会冒着第一次发现该用户的风险,当你要将他们配对时,他们已经被选中了。 目前尚不清楚配对会产生什么副作用,但似乎你并不在乎过去,也就是说,如果服务器宕机,配对是无关紧要的。这听起来像是内存中的操作,可能是为了日志/分析的目的而持久化到数据库。 对于不同的实例,如果它在内存中,您仍然可以在服务器上执行,map/reduce公式可以在内存中使用,可能还有很多其他的。您还可以构建解决方案,将用户存储在不同的服务器上,A-N在服务器1上,O-Z在服务器2上,如果这对您的数据有意义的话。您还可以将配对所需的数据减少到最低限度,并拥有一台强大的服务器来处理配对,将配对后发生的任何事情卸载到任何位置。 抱歉,这是一种泛型,没有更多地了解您的数据/用例

您将需要处理并发性-一旦找到要配对的用户,您将希望锁定该用户,验证该用户是否仍然未配对,将其配对,然后解锁。否则,当你第一次看到一个未配对的用户时,你可能会冒着第一次发现该用户的风险,当你要将他们配对时,他们已经被选中了。 目前尚不清楚配对会产生什么副作用,但似乎你并不在乎过去,也就是说,如果服务器宕机,配对是无关紧要的。这听起来像是内存中的操作,可能是为了日志/分析的目的而持久化到数据库。 对于不同的实例,如果它在内存中,您仍然可以在服务器上执行,map/reduce公式可以在内存中使用,可能还有很多其他的。您还可以构建解决方案,将用户存储在不同的服务器上,A-N在服务器1上,O-Z在服务器2上,如果这对您的数据有意义的话。您还可以将配对所需的数据减少到最低限度,并拥有一台强大的服务器来处理配对,将配对后发生的任何事情卸载到任何位置。 抱歉,这是一种泛型,没有更多地了解您的数据/用例