为了账号安全,请及时绑定邮箱和手机立即绑定
  • 大型公司系统架构
    查看全部
    1 采集 收起 来源:系统部署架构

    2017-03-29

  • 采用存储过程后,seckillservice的执行秒杀不需要抛出异常(之前的异常抛出是为了告知spring的声明式事务的回滚及提交)。
    查看全部
  • 一部分流量已经被cdn缓存锁拦截 不过秒杀的操作,秒杀的地址获取这样的请求不方便放入cdn中,所以访问到我们的服务器 我们的服务器会通过我们的dns查找到我们的地址 一般找到的是nginx地址,nginx一般部署到不同的机房,比如电信,移动,联通 这样的话智能的dns会根据用户的请求ip地址来智能的dns解析来请求最近的Nginx服务器 nginx还会给我们的服务器做负载均衡 之后会有jetty tomcat等我们的逻辑集群,用来放置我们的代码 访问到tomcat jetty服务器的时候,会用到缓存集群redis(根据数据量,使用规模,一般用一个redis集群) 会根据使用规模来调整集群 mysql,根据关键的id来分库分表,这里关键的id肯定是秒杀的id 因为同一个秒杀的id应该放在同一个数据库中,这样事务才会在同一个数据库中生效 根据seckillId来取模,分表(一般分表都是512张表,1024张表等等这样的翻倍) 然后按照负载及读写的请求量来做到分库 (分库分表框架,阿里巴巴的TDDL) 这样保证了同一个秒杀单在同一个数据库中完成事务,同时保证如果是非常庞大的请求, 可以把流量和读写的事务量分发到不同的数据库中 还会有一个统计分析组件,在多个DB中拉取秒杀单来做分析(类似于BI系统,各种数据统计报表)
    查看全部
    1 采集 收起 来源:系统部署架构

    2017-02-10

  • 秒杀存储过程java调用截图1 建议使用common-collections中的MapUtils工具类获取map中的值 MapUtils.getInteger(map,result,-2),-2表示设置默认值
    查看全部
  • 秒杀存储过程实现截图4 存储过程中,row_count()函数用来返回上一条sql(delete,insert,update)影响的行数。 根据row_count()返回值,可以进行接下来的流程判断: 0:未修改数据; >0: 表示修改的行数; <0: 表示SQL错误或未执行修改SQL
    查看全部
  • 秒杀存储过程实现截图1 重要:最主要的是业务逻辑,而不是存储过程的依赖与实现,简单的逻辑可以使用存储过程,并不需要特别关注存储过程 ;表示语句结束,由于sql语句中";"表示语句结束,存储过程中,";"也表示存储过程结束,所以定义DELIMITER $$,用$$表示存储过程语句的结束
    查看全部
  • 4.Mysql事务行锁串行等待执行,一个事务提交或回滚,下一个事务才能执行。
    查看全部
  • 缓存字节
    查看全部
  • 秒杀地址接口优化
    查看全部
  • 上一节讲解使用cdn、redis、mysal层缓存数据,提高系统的高并发
    查看全部
  • 查看表或者存储过程创建的SQL show create table/procedure execute 表名/存储过程名\G 修改分隔符 DELIMITER 要定义的符号
    查看全部
  • java访问内存的时间
    查看全部
  • https://github.com/iemi/imooc-seckill

    https://github.com/yoyo185644/seckill/tree/master/src



    ChatGPT:

    綜合上述內容,我們可以整理出以下關於CDN和秒殺操作最佳化的要點:


    CDN:

    - CDN(內容分發網路)是一個加速使用者獲取資料的系統,尤其適用於提供靜態資源和JavaScript等不變的資源。

    - CDN部署在離使用者最近的網路節點上,可以提高資料的載入速度。

    - 使用CDN可以避免訪問後端伺服器,提高效能並減輕後端伺服器的負載。


    秒殺操作最佳化:

    - 秒殺操作無法使用CDN快取,因為它涉及到寫操作或核心資料的請求,通常無法被快取。

    - 對於秒殺操作,後端快取困難,因為庫存問題無法在快取中直接減少庫存,需要使用事務來保證資料的一致性。

    - 秒殺操作可能會產生對資料庫表中某一行資料的大量update減庫存競爭,這是熱點資料的特點。


    最佳化方向:

    - 減少行級鎖持有的時間,快速執行commit/rollback操作,以釋放行級鎖,減少其他等待行鎖的執行緒的等待時間。

    - 在秒殺操作中,將客戶端邏輯放到MySQL伺服器端,避免網路延遲和GC影響,可以使用定製SQL方案或儲存過程來實現。

    - 儲存過程的設計可以讓一組SQL組成一個事務,在MySQL伺服器端完成,避免客戶端控制事務造成的性能干擾。


    總結最佳化要點:

    1. 前端控制:暴露介面,防止按鈕重複請求。

    2. 動靜態資料分離:使用CDN快取和後端快取來提高效能。

    3. 事務競爭最佳化:減少事務鎖持有的時間,將客戶端邏輯放到MySQL伺服器端,並使用儲存過程等方式實現秒殺操作的效能優化。

    查看全部
  • 投影片~~~~~~


    查看全部
    0 采集 收起 来源:8-课程总结

    2023-06-14

  • 投影片~~~~~~


    查看全部
    0 采集 收起 来源:系统部署架构

    2023-06-14

举报

0/150
提交
取消
课程须知
《Java高并发秒杀API》是系列课程,共四门课,分别为业务分析和DAO层,Service层,Web层和高并发优化。本门课程是第二门课程,学习前需要了解如下知识: 1、精通JavaWeb基础 2、熟悉SpringMVC、Spring和MyBatis框架 3、了解事务和存储过程的概念
老师告诉你能学到什么?
1、掌握秒杀业务 2、能够进行SpringMVC+Spring+MyBatis的整合开发 3、能够对秒杀业务的瓶颈有所了解 4、能够实现对秒杀业务的优化

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!