手头有一个项目,.net +SQL2008,需要程序能够承受每秒1000个终端请求,并写入数据库,而且是持续性的,没有间断,求解决方案数据库.NET解决方案

解决方案 »

  1.   

    直接对数据库访问,频繁并且并发大的话,可能会受影响,你最好搞个缓存程序,比如通过socket通讯,服务端做缓存,客户端要数据时,如果缓存仲有,救不到数据库中要了
      

  2.   

    我怎么看糊涂了
    每秒有1000次
    有10000000也没什么啊
    但是我一次就要执行n操作1个就有可能完蛋你单纯要减少次数也简单
    用一个datatable
    每次就在datatable里面加,每秒有1000次不叫事
    然后到一定条数在提交,不是有10秒的空闲吗!可以利用
      

  3.   

    1.1000个终端写,数据量是多少?1次1K还是1次1MB,这个差别很大。
    2.根据实际数据量大小计算IO需要多少,如果虽然次数多,但是数据量小,IO能够挺,那么就搞定了。
    3.如果IO不能挺住,就只能分片了,把数据存储在不同的数据库中,然后再在上层形成数据仓库进行统一的查询和检索。
    个人见解,不对请喷
      

  4.   

    能想到要注意的大概有以下几点:
    1. 要减少web服务器与DB服务器之间的round trip, 这个的话就要尽量直接使用ado.net的sqlclient, 避免使用datatable和entity framework等.
    2. 采用多DB服务器的架构.
    3. 根据第2条, 数据库table的设计必须采用可横向扩展的设计, 也就是根据请求的某些关键字来哈希映射到某一台DB服务器的连接字符串. 根据需求, 可能会需要静态映射, 也就是映射方式必须能保证进行横向扩展之后, 同样的关键字还是能映射到以前所用的那个DB服务器的连接字符串. 网上可以搜到很多相应的方法.
    4. 最重要的, 必须定期通过压力测试来收集统计数据, 以确定是否需要搭新的DB服务器进行横向扩展, 以及要扩展几台服务器.
    最后, 强烈推荐使用天生具有扩展性的一些NoSQL数据库来替换掉SQL Server.
      

  5.   


    先准备好在5~20台服务器上实现这个要求。终端首先要访问一个Master服务器,获取其真正要连接的服务器地址,然后同时要向至少2台(最好3台)服务器上传送数据,保证系统中数据不会丢失。不要纠结在一台服务器上如何“优化”,这不是优化能够解决问题的。