Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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#_Azure_Synchronization - Fatal编程技术网

C# 云服务中信用补充机制的实现 背景

C# 云服务中信用补充机制的实现 背景,c#,azure,synchronization,C#,Azure,Synchronization,我已经部署了一个云服务(C#+Azure SQL+Azure云服务)。我的网站正在出售一些服务。根据“信用”付款。用户正在访问API并向服务器提交查询。每个客户端查询都会花费用户1个或多个积分 我的计划之一是“订阅计划”。输入此计划的用户每月为我的服务付费。结果,他们获得了xxx学分(取决于他们购买的认购计划) 少了什么? 我正在尝试为订阅用户实施一种续费机制,在月份期间。例如,用户购买了普通的“每月订阅-10个信用”,并在每月的前10天使用了所有信用。显然,在提交另一个查询之后,接下来会发生的

我已经部署了一个云服务(C#+Azure SQL+Azure云服务)。我的网站正在出售一些服务。根据“信用”付款。用户正在访问API并向服务器提交查询。每个客户端查询都会花费用户1个或多个积分

我的计划之一是“订阅计划”。输入此计划的用户每月为我的服务付费。结果,他们获得了xxx学分(取决于他们购买的认购计划)

少了什么? 我正在尝试为订阅用户实施一种续费机制,在月份期间。例如,用户购买了普通的“每月订阅-10个信用”,并在每月的前10天使用了所有信用。显然,在提交另一个查询之后,接下来会发生的是“需要付款”响应

有什么问题吗? 基本上,实现这个特性是很简单的。这些步骤是:

  • 计算查询所需的积分
  • 如果需要支付的信用额度大于用户实际拥有的信用额度。 ->正确:重新加注信用卡。再买一张xxx信用卡。 ->错误:继续
  • 问题是要同步所有服务器。在大多数情况下,用户会在同一时间发送大量查询。集群中的每台服务器都会收到请求,并会说:“嘿,你没有足够的积分,让我们重新充值吧。”。不知道另一台服务器已启动付款流程。在这种情况下,服务器将多次重新加注信用卡,而不是一次(这就足够了)


    所以,问题是,同步多台服务器的正确方法是什么,而只有一台服务器才能使信用卡重新充值?

    这个问题非常广泛,而且离题。您正在描述一个非常常见的并发数据访问问题,其中有许多技术和模式用于处理并发数据库写入、过期数据等。因此,这正是问题所在。请和我分享,没有什么特别的分享。只要开始搜索,阅读数据库的乐观和悲观并发性。你会发现很多信息,包括一些答案。