zoukankan      html  css  js  c++  java
  • asp.net高并发网站解决方案【未完成版本】

    场景:假设现在是一个电商网站,今天要举办活动,有10个商品低价销售,但是会来抢购的人会特别多,最后只有十个人可以成功的买到商品
     
    明确2个问题
    1.访问量:抢票时间断用户访问量
    2.并发:1秒内请求量
     
    技术点:
    1、前台页面
         1.1、gzip压缩文件 (参考网址:http://www.cnblogs.com/KevinYang/archive/2010/06/02/1749675.html)
         1.2、请求抢票提交增加验证码
    2、消息队列:RabbitMq(用户的请求到达了抢单接口,我们只向队列中丢一条数据后就立即返回)
    3、缓存层 :
    3.1、首先我们需要针对IO密集型异步化操作,抢单的页面不只是有抢单按钮,还有商品的介绍,图片,文字描述等。对于这些数据我们要进行缓存(建立对应的机制:增删改),一万个用户一万次请求都从数据库中取数据与只取一次剩下9999次从缓存中取效率自然是不一样的
    3.2、会有同一个用户多次进行请求的情况,如果像之前的逻辑,前10条信息有二条是属于一个人的呢,(这里假设每个人只可以购买一次)我们就需要进行判断了,同一个账户发送的多次请求,我们只认为第一次请求是有效的,剩下的都请都直接返回。因为是并发,我们又怎么做到第一次请求有效呢?这时我们可以使用Redis incr存储用户的标识,Redis是单线程的,不存在并发的问题。incr返回为1那么是第一次请求,为N则是第N请求那么它就是无效的
     
    4、代码层
    • 服务层(webapiwcf等技术)
    5、数据库层
    • 分布数据(未知)
    • 读写分离(数据库复制技术发布订阅方式:主数据库写操作从数据库查询)-未解决
    • 表数据拆分
           水平拆分(表分区-已解决)
           垂直拆分(单表按照业务功能拆分字段为多表按,比如A表有a、b、c、d、e、f字段 a、b、c是业务A常用的操作字段d、e、f是业务B常用的操作字段)-未解决
    • 数据库缓存(Redis)-未解决

    参考文章:Net高并发解决思路(附源码)

  • 相关阅读:
    PHP培训教程 PHP里10个鲜为人知但却非常有用的函数
    跟我学Spring Boot(一)创建Spring Boot 项目
    android 4.0 webview 无法播放视频
    vs2008 安装部署 启动项
    android 使用webview 加载网页
    hbase 无法打开60010网页
    oracle 提示没有监听
    hbase 基本命令
    hbase 单机版安装
    win7 64位远程连接oracle11g64位
  • 原文地址:https://www.cnblogs.com/bwlluck/p/6678428.html
Copyright © 2011-2022 走看看