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高并发解决思路(附源码)

  • 相关阅读:
    浮点型float
    Linux时间同步命令
    四层负载均衡和七层负载均衡的区别
    Linux下把Mysql和Apache加入到系统服务里
    Linux下Nagios的安装与配置
    Linux是怎么启动的(整理)
    centos 双网卡 eth0 eth1 配置
    MYSQL的常用命令和增删改查语句和数据类型
    CentOS 下如何修改 MySQL 的密码
    mysql unrecognized service问题解决
  • 原文地址:https://www.cnblogs.com/bwlluck/p/6678428.html
Copyright © 2011-2022 走看看