如何设计ASP.NET MVC+SQL SERVER高并发写入数据库开发方案?

xiaosong2008 2019-01-20 07:12:31
前两天一个客户找我洽谈建设一个体育活动赛事组织(地级市体育总会)的网站,除展示资讯信息外,网站有一个主要功能是能同时容纳10万人同时报名协会组织的体育赛事活动,报名后可以在线缴费,缴费成功后,短信通知报名人!网站拟采用ASP.NET MVC+SQL SERVER开发,目前在给客户做方案。
我缺少高并发写入数据库的开发经验,对于这种数量级的写入数据库开发方案,请大家给一些指导意见,谢谢!
...全文
1586 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
10w人最大客户的话上个mongoDB就可以了根本不用其他操作,如果资源丰富上个Rides不要太爽,注意做好持久化和初始化工作,整个项目没有啥难度。
ASPNETCHENGXU 2019-01-31
  • 打赏
  • 举报
回复
最简单有效的办法就是使用消息队列,先让数据进来,然后在顺序或者按你自己制定的规则处理,而不是一上来就让数据入库,这样对数据库的瞬间压力确实大
xiaosong2008 2019-01-25
  • 打赏
  • 举报
回复
目前瞬时10万人报名的情况应该非常少,但要这样设计
a410787073 2019-01-24
  • 打赏
  • 举报
回复
10万人 又不多,感觉弄个队列 排队吧。反正实时性要求也不高,就算延时个2秒3秒 的 也能接受
qq_34897745 2019-01-24
  • 打赏
  • 举报
回复
不可能10万人同一瞬间报名的
吉普赛的歌 2019-01-24
  • 打赏
  • 举报
回复
引用 17 楼 xiaosong2008 的回复:
没有混淆,说的就是每秒10万并发
引用 16 楼 qq_24859323 的回复:
10万人报名,跟每秒10万次请求,你是不是混淆了?
一个地市级的体育活动赛事, 应该是 10 万人而已。 但这 10 万人不可能在同一瞬间报名, 你可能想复杂了。
xiaosong2008 2019-01-23
  • 打赏
  • 举报
回复
没有混淆,说的就是每秒10万并发
引用 16 楼 qq_24859323 的回复:
10万人报名,跟每秒10万次请求,你是不是混淆了?
qq_24859323 2019-01-23
  • 打赏
  • 举报
回复
10万人报名,跟每秒10万次请求,你是不是混淆了?
luj_1768 2019-01-23
  • 打赏
  • 举报
回复
建议采用两次提交方案:第一次提交存入缓存库,第二次提交写入后台数据库。数据库并发写入,需要实现数据的局部锁定,同时还要发数据更改变动通知以便使能数据。大型数据库一般使用view 或者snapshot 提供数据服务,一段库存数据对应多个view 或者被多个view 引用,为了保证系统稳定性,上述操作是必须的。
丰云 2019-01-22
  • 打赏
  • 举报
回复
10万人真不算什么吧,小心一点,代码写简洁高效一点,普通方法都能应付得了
xiaosong2008 2019-01-22
  • 打赏
  • 举报
回复
谢谢热心的各位,目前项目还在谈,这个项目对我目前来说较难的一点是设计某时刻能同时容纳10万人在线提交报名,之前没有类似处理的经验,心里有点没底; 我目前的考虑是ASP.NET MVC+SQL SERVER+三层架构,报名数据采用JQUERY AJAX提交,先存到服务器缓存,再提交到数据库,并对IIS作高并发设置,先按这个方案考虑,并做一些测试; 至于大家提到的微服务,Redis,Node.js等,我用得少,先熟悉一下,再来完善我的方案,我注意到有的朋友说按照平常的方法写就可以了,我会测试一下,谢谢大家的关心,有进展再和大家分享这个项目的情况,希望大家继续关心指导!
吉普赛的歌 2019-01-22
  • 打赏
  • 举报
回复
建议安装 SQL Server 2014 或 更高版本(2016,2017,2019) 可以试一下内存优化表:https://blog.csdn.net/yenange/article/details/32705347 可以给你意想不到的效果。
草履虫程序员 2019-01-22
  • 打赏
  • 举报
回复
高并发,你需要好好看看,这个也不是一天两天就能一蹴而就得。楼上都给出了好得建议。
winner2050 2019-01-22
  • 打赏
  • 举报
回复
你按照平时写代码的方式来写就行了。没什么的,作了你就知道容易。
你这不涉及资源竞争,根本就不难。
低丶调 2019-01-22
  • 打赏
  • 举报
回复
老哥,刚才看到一个东西,不知道对你有没有帮助,你看一下?

https://www.ibm.com/developerworks/cn/opensource/os-nodejs/

  • 打赏
  • 举报
回复
从最基本的方面、页面一遍遍刷新重建方面,一旦你进行改造,你就遇到了一个“专业前端开发”的问题。这个时候技术上就卡壳了。所以我们接项目时面对需求的设计开发任务担当,不招聘 asp.net 程序员,我们只招聘前端程序员,程序负责人不需要懂任何 asp.net,(她)顶多需要将服务接口需求机制说出来、写成文档让后台服务开发人员做几个接口而已。这样大型复杂的 web 应用程序用户体验能保证快几十倍,甚至上百倍。 假设还是动不动就一遍遍地简单地重新增删改查并重建 html 整个页面的模式,那么自然就只能想到纠缠数据库这个性能死结了。
  • 打赏
  • 举报
回复
例如说根本不一遍遍刷新重建页面(重新查询数据库),这方面的富客户端 web 应用在用户体验上提高20倍速度。例如说根本就是采用现在的大数据分布式设计理念,针对中间业务微服务的 Actor 对象而不是针对什么关系数据库引擎来编程。例如说整个高层的业务流程是最终一致性的,可撤回的,而不是什么滥用关系数据库事务锁的。例如客户操作状态改变提醒是主动推送到终端的而不是轮询的。等等。
  • 打赏
  • 举报
回复
基于你的整个框架技术所限,还真可能看不出有什么办法。高并发甚至分布式技术,有一系列新技术需要学习。你何时看到最近10年的高并发系统设计就接到什么关系数据库上面了呢?数据库是最底层,那么任何新框架必定涉及到数据库,这是肯定的,就好像是不管是什么样的新型盖楼方法都设计到了搬石头的小工,问题是盖楼速度已经大大提高,高并发技术已经在通讯、线程、高速对象缓冲、一致性等等方面与传统关系数据库的概念做了根本相反的设计。
threenewbee 2019-01-21
  • 打赏
  • 举报
回复
分库分表,后台作业再同步汇总,报名这个不涉及事务性(transnational)操作,是比较容易的
xiaosong2008 2019-01-21
  • 打赏
  • 举报
回复
感谢两位大神的回复,我目前缺少这种高并发应用的经验 这个项目业务并不复杂,这个高并发处理对于我现在来说有一定技术难度 我现在考虑到的是项目采用ASP.NET MVC+SQL SERVER+三层架构,报名数据采用JQUERY AJAX提交,先存到服务器缓存,再提交到数据库,并对IIS作高并发设置 读写分离,分布式,负载均衡,非关系型数据库,这些技术我有所了解,但尚未实际运用过 请大家给一些具体一点的指导和建议,谢谢
加载更多回复(2)

62,244

社区成员

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

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

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

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