asp.net部署多个项目后,并发锁用什么来实现?

lb20170414 2017-06-22 02:41:35
如果是单点项目用
private static readonly object lockhelper = new object();

lock(lockhelper )
{
// code
}


-----------------------------------------------
那么部署到多台服务器上的并发锁如何实现呢?
...全文
447 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lb20170414 2017-06-27
  • 打赏
  • 举报
回复
引用 11 楼 sp1234 的回复:
[quote=引用 2 楼 lb20170414 的回复:] [quote=引用 1 楼 xdashewan 的回复:] 数据库+分布式事务
能有独立的框架(不用数据库)来实现吗?[/quote] 用不着什么“框架”,如果这个也算是框架的话那就是一个封装起来(隐藏起来)的皮毛了。 就是要让所有的客户端访问同一个服务,而这个服务其实又不能并发,就完了。[/quote] 嗯,拆分掉业务即可:网站下单,一个服务排队处理即可,想复杂了,有时候想解决一个问题,总想往没用过的一个技术上靠...
  • 打赏
  • 举报
回复
引用 2 楼 lb20170414 的回复:
[quote=引用 1 楼 xdashewan 的回复:] 数据库+分布式事务
能有独立的框架(不用数据库)来实现吗?[/quote] 用不着什么“框架”,如果这个也算是框架的话那就是一个封装起来(隐藏起来)的皮毛了。 就是要让所有的客户端访问同一个服务,而这个服务其实又不能并发,就完了。
  • 打赏
  • 举报
回复
你随便写上几行代码,部署到你的服务器,让所有的客户端(业务服务器)访问它的时候都被 hang 住,使得所有的服务器就好像“死掉”一样等待它返回。这就好像是一万个人挤1条独木桥通行,这就是你要的所谓的“并发锁”了。但是许多人只想从互联上抄来什么“银弹代码”,却不愿意改变自己的设计理念。
  • 打赏
  • 举报
回复
超过一定范围而搞所谓并发锁,那就是灾难。 简单来说,你可以选择人一个单独的服务去器来作为“并发”控制加锁机制,例如多个客户端访问这个服务器上的一个服务,而此服务实际上不能并发、只能 lock 执行,这样各个客户端(也就是你说的“多个部署”)也就很自然地被阻塞成为一个队列了。这其实很简单。 但是关键是,真正要是到了水平扩展的系统架构,也就前方百计地避免这种事儿了(否则干么不用高大上的小型机?)。而根本不是搞什么“锁”。人家的系统反而要使用散列开的不同的key 尽可能地提供并发、并行执行性能,注重“最终一致性”而并不是纠结于“锁”。 又想分布式、又想“锁”,这往往是把学校的做法放到了高达上的产品概念之上。
江南小鱼 2017-06-27
  • 打赏
  • 举报
回复
是这样的,有多台服务器上部署相同的网站,但要控制网站的某个业务(例如:业务A的下单,排队执行)
用队列不能解决么?
lb20170414 2017-06-26
  • 打赏
  • 举报
回复
引用 6 楼 diaodiaop 的回复:
一个网页要什么锁,..... 你知道程序中为什么需要"锁"吗? 那是因为N个代码同时访问一个变量.. 那么你在页面或者变量中..基本在web不存在static这回事. 所以 你认为A打开的页面 跟B打开的页面 是一个"页面"? 当然在你的理解上,他们肯定是一个页面,.. 但是你觉得 A操作页面表单以及后台变量的时候 会对B产生影响吗? 按照你的思想. A更改了一个变量 B就会看到 是吧. 其实你可以自己做一下测试.来证明一下. 而不是上来就问"如何实现并发锁"这种根本没边的问题.. 所以有问题 你自己找的解决方案就一定正确吗? 我们不是神 所以神都无法确定的事 单凭你自己的经验 是又如何判断? 所以.先找出你问题的所在.你想要实现什么.现在要干什么.代码写到什么程度了 遇到了什么问题..
是这样的,有多台服务器上部署相同的网站,但要控制网站的某个业务(例如:业务A的下单,排队执行) 我就想如果使用分布式锁就可以解决~
by_封爱 2017-06-22
  • 打赏
  • 举报
回复
一个网页要什么锁,..... 你知道程序中为什么需要"锁"吗? 那是因为N个代码同时访问一个变量.. 那么你在页面或者变量中..基本在web不存在static这回事. 所以 你认为A打开的页面 跟B打开的页面 是一个"页面"? 当然在你的理解上,他们肯定是一个页面,.. 但是你觉得 A操作页面表单以及后台变量的时候 会对B产生影响吗? 按照你的思想. A更改了一个变量 B就会看到 是吧. 其实你可以自己做一下测试.来证明一下. 而不是上来就问"如何实现并发锁"这种根本没边的问题.. 所以有问题 你自己找的解决方案就一定正确吗? 我们不是神 所以神都无法确定的事 单凭你自己的经验 是又如何判断? 所以.先找出你问题的所在.你想要实现什么.现在要干什么.代码写到什么程度了 遇到了什么问题..
xdashewan 2017-06-22
  • 打赏
  • 举报
回复
引用 4 楼 lb20170414 的回复:
类似RedisLock实现的
我手头确实没有这方面资料,你可能要自己动手搜搜了,只要是查c#分布式缓存
lb20170414 2017-06-22
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
缓存服务器+锁
能给些资料吗? 类似RedisLock实现的
xdashewan 2017-06-22
  • 打赏
  • 举报
回复
缓存服务器+锁
lb20170414 2017-06-22
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
数据库+分布式事务
能有独立的框架(不用数据库)来实现吗?
xdashewan 2017-06-22
  • 打赏
  • 举报
回复
数据库+分布式事务

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧