• 大话 程序猿眼里的高并发

    大话 程序猿眼里的高并发

  • 2016-06-01 15:52 61
  • 产品价格:面议
  • 发货地址:北京市海淀区学院路街道包装说明:不限
  • 产品数量:不限产品规格:不限
  • 信息编号:41364187公司编号:4158912
  • 中软**
    15771340807 (联系我请说明是在阿德采购网看到的信息)
  • 进入店铺 在线咨询
  • 信息举报
    产品描述
    关于高并发
          高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再直白点的说法就像玩LOL被ADC暴击了一样,那伤害你懂得。
    高并发会来带的后果
    服务端:
          导致站点服务器/DB服务器资源被占满崩溃,数据的存储和较新结果和理想的设计是不一样的,比如:出现重复的数据记录,多次添加了用户积分等。
    用户角度:
          尼玛,这么卡,老子来参加活动的,刷新了还是这样,垃圾网站,再也不来了。
    
    一个故事
          在做公司产品网站的过程中,经常会有这样的需求,比如什么搞个活动专题,**,签到,搞个积分竞拍等等,如果没有考虑到高并发下的数据处理,那就Game Over了,很*导致**被多抽走,签到会发现一个用户有多条记录,签到一次获得了获得了多积分,等等,各种**出正常逻辑的现象,这就是做产品网站**考虑的问题,因为这些都是面向大量用户的,而不是像做ERP管理系统,OA系统那样,只是面向员工。
    
    并发下的数据处理
           通过表设计,如:记录表添加一约束,数据处理逻辑使用事物防止并发下的数据错乱问题
           通过服务端锁进程防止包并发下的数据错乱问题
           这里主要讲述的是在并发请求下的数据逻辑处理的接口,如何**数据的一致性和完整性,这里的并发可能是大量用户发起的,也可能攻击者通过并发工具发起的并发请求
           如:通过表设计防止并发导致数据错乱
    
    需求点
        【签到功能】 一天一个用户只能签到一次,
         签到成功后用户获取到一个积分
    
    已知表
         用户表,包含积分字段
        高并发分析(属于开发前的猜测):
        在高并发的情况下,会导致,一个用户签到记录会有多条,或者用户签到后不止加一积分。
    
    前辈的设计
          **根据需求我会添加一张签到记录表,**来了,这张表需要把用户一标识字段(ID,Token)和签到日期字段添加为一约束,或者一索引,这样就可以防止并发的时候插入重复用户的签到记录。然后再程序代码逻辑里,先执行签到数据的添加(这里可以防止并发,添加成功后再进行积分的添加,这样就可以防止重复的添加积分了。最后我还是建议所有的数据操作都写在一个sql事务里面, 这样在添加失败,或者编辑用户积分失败的时候可以回滚数据。
    
    如例子2(事务+通过较新锁 防止并发导致数据错乱,或者事物+Update的锁表机制)
    需求点:
        【**功能】 **一次消耗一个积分**中奖后编辑剩余**总数 剩余**总数为0,或者用户积分为0的时候无法进行**
    已知表:
          用户表,包含积分字段 **表,包含**剩余数量字段
    高并发分析(属于开发前的猜测):
         在高并发的情况下,会导致用户参与**的时候积分被扣除,而**实际上已经被抽完了
    
    前辈的设计
          在事物里,通过WITH (UPDLOCK) 锁住商品表,或者Update 表的**剩余数量和最后编辑时间字段,来把数据行锁住,然后进行用户积分的消耗,都完成后提交事物,失败就回滚。这样就可以**,只有可能存在一个操作在操作这件商品的数量,只有等到这个操作事物提交后,其他的操作这个商品行的事物才会继续执行。
    
    如例子3(通过程序代码防止包并发下的数据错乱问题)
    需求点:
        【缓存数据到cache里】, 当缓存不存在的时候,从数据库中获取并保存在cache里,如果存在从cache里获取,每天10点**较新一次,其他时间点缓存两个小时较新一次到10点的时候,凡是打开页面的用户会自动刷新页面
    问题点:
          这里有个逻辑用户触发缓存的较新,用户刷新页面,当缓存存在的时候,会取到最后一次缓存较新时间,如果当前时间大于十点,并且最后缓存时间是10点前,则会从数据库中重新获取数据保存到cache中。 还有客户端页面会在10点时候用js发起页面的刷新,就是因为有这样的逻辑,导致10点的时候有很多并发请求同时过来,然后就会导致很多的sql查询操作,理想的逻辑是,只有一个请求会去数据库获取,其他都是从缓存中获取数据。(因为这个sql查询很耗服务器性能,所以导致在10点的时候,突然间数据库服务器压力暴增)
    解决问题:
          C#通过 (锁)lock,在从数据读取到缓存的那段代码**加上锁,这样在并发的情况下只会有一个请求是从数据库里获取数据,其他都是从缓存中获取。
    
    访问量大的数据统计接口
    需求: 
          用户行为数据统计接口,用来记录商品展示次数,用户通过点击图片,或者链接,或者其他方式进入到商品详情的行为次数
    问题点:
          这接口是给**ajax使用,访问量会很大,一页面展示的时候就会有几十件商品的展示,滚动条滚到到页面显示商品的时候就会请求接口进行展示数据的统计,每次翻页又会加载几十件
    意淫分析:
          设想如果同时有1W个用户同时在线访问页面,一个次拉动滚动条屏幕页面展示10件商品,这样就会有10W个请求过来,服务端需要把请求数据入库。在实际线上环境可能还会**过这个请求量,如果不经过进行高并发设计处理,服务器分分钟给跪了。
    解决问题:
          我们通过nodejs写了一个数据处理接口,把统计数据先存到redis的list里。(使用nodejs写接口的好处是,nodejs使用单线程异步事件机制,高并发处理能力强,不会因为数据逻辑处理问题导致服务器资源被占用而导致服务器宕机) 然后再使用nodejs写了一个脚本,脚本功能就是从redis里出列数据保存到mysql数据库中。这个脚本会一直运行,当redis没有数据需要同步到数据库中的时候,sleep,让在进行数据同步操作
    
    高并发的下的服务器压力均衡,合理站点架设,DB部署
    1、服务器代理nginx,做服务器的均衡负载,把压力均衡到多台服务器
    2、部署集群 mysql数据库, redis服务器,或者mongodb服务器,把一些常用的查询数据,并且不会经常的变化的数据保存到其他nosql DB服务器中,来减少数据库服务器的压力,加快数据的响应速度。
    3、数据缓存,Cache
    4、在高并发接口的设计中可以使用具有高并发能力的编程语言去开发,如:nodejs 做web接口
    5、服务器部署,图片服务器分离,静态文件走CDN
    6、DBA数据库的优化查询条件,索引优化
    7、消息存储机制,将数据添加到信息队列中(redislist),然后再写工具去入库
    8.脚本合理控制请求,如,防止用户重复点击导致的ajax多余的请求,等等。
    
    并发测试利器推荐
    1、Apache JMeter
    2、Microsoft WebApplication Stress Tool
    3、Visual Studio 性能负载
    
    
    
    [url=http:///]中软**[/url] 
    [url=http:///]中软**[/url] 
    [url=http:///]it培训[/url] 
    [url=http:///w/10kcym/ios.html]ios开发[/url] 
    [url=http:///p/12-15.html]android开发[/url] 
    [url=http:///w/jpkc/index.html]软件开发[/url] 
    [url=http:///w/jpkc/index.html]软件开发工程师[/url] 
    [url=http:///w/jpkc/index.html]软件工程师[/url] 
    [url=http:///]中软**教育[/url] 

    北京中软**教育科技股份有限公司下设**培训中心(ETC)和**体验中心(EEC),是中软**教育科技集团投资的大型IT人才培训机构,是中软**人才战略的**组成部分之一,承担着集团发展过程中人才储备和培养的任务,是软件及外包业务**发展的重要人才支撑平台,是集团保持高速增长的动力之一。

    欢迎来到北京中软**教育科技股份有限公司网站,我公司位于拥有6项世界级遗产,拥有文化遗产项目数最多的城市,一座有着三千余年建城历史、八百六十余年建都史的历史文化名城,拥有众多历史名胜古迹和人文景观的中国“八大古都”之一 —北京。 具体地址是北京海淀学院路公司街道地址,联系人是。
    主要经营北京中软**教育科技股份有限公司下设**培训中心(ETC)和**体验中心(EEC),是中软**教育科技集团投资的大型IT人才培训机构,是中软**人才战略的**组成部分之一,承担着集团发展过程中人才储备和培养的任务,是软件及外包业务**发展的重要人才支撑平台,是集团保持高速增长的动力之一。。
    单位注册资金:人民币 10 万元以下。
    我们有优秀的管理和教学团队,办学目标明确,观念超前,优质的服务和产品,不断地受到新老用户及业内人士的肯定和信任。如果您对我公司的服务有兴趣,请在线留言或者来电咨询。

    本页链接:http://www.cg160.cn/vgy-41364187.html
    以上信息由企业自行发布,该企业负责信息内容的完整性、真实性、准确性和合法性。阿德采购网对此不承担任何责任。 马上查看收录情况: 百度 360搜索 搜狗
北京中软**教育科技股份有限公司下设**培训中心(ETC)和**体验中心(EEC),是中软**教育科技集团投资的大型IT人才培训机构,是中软**人才战略的**组成部分之一,承担着集团发展过程中人才储备和培养的任务,是软件及外包业务**发展的重要人才支撑平台,是集团保持高速增长的动力之一。
相关分类
附近产地
X