zoukankan      html  css  js  c++  java
  • (转) 并发处理

    1、使用事物

    2、使用消息队列

    可以基于例如MemcacheQ等这样的消息队列。

    比如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人中有400个人是不可能获得商品的。所以可以根据进入队列的先后顺序只能前100个人购买成功。后面400个人就直接转到活动结束页面。当然进去500个人只是举个例子,至于多少可以自己调整。而活动结束页面一定要用静态页面,不要用数据库。这样就减轻了数据库的压力。

    (非原创)
    1. 尽量将请求拦截在系统上游:
    2. 读多写少,多使用缓存

    • 浏览器和app:做限速,限制用户在X秒之内只能提交一次请求(比如虽然你在疯狂的摇微信,但其实x秒后才向后端发起一次请求)
    • 站点层:按照uid做限速,做页面缓存,这时用uid,一个uid5秒只准透过一个请求。这样就能拦住99%的for循环请求。
    • 服务层:按照业务做写请求队列控制流量(每个提供服务的服务器各一个队列)(每次只透有限的写请求去数据层,如下订单,做支付这样的写业务)。3k张火车票,只透3k个下单去db
    • 数据层:这时已经没有多少压力了。全部透到数据库,100w个下单,0个成功,请求有效率是0%;透3k个请求到数据,全部成功,请求有效率100%

  • 相关阅读:
    hive 数据hadoop数据etl交换
    团队冲刺(三)
    团队冲刺(二)
    CVPR2019论文热词云的实现
    团队冲刺(一)
    团队开发之电梯演讲----团队项目介绍--“益青春APP”
    android的finish()方法
    java web项目通过外网ip访问
    MySQL出现错误1205-Lock wait timeout exceeded; try restarting transaction
    团队开发(自己的理解)
  • 原文地址:https://www.cnblogs.com/ilys/p/7813545.html
Copyright © 2011-2022 走看看