摘要:介绍 压力测试相关概念 使用JMeter对高并发优化前后的代码进行压测对比 压力测试相关概念 并发量:指在同一时间点内,系统中同时处理的用户请求数。(并发1000时,响应时间1s;并发5000时,响应时间5s,处理得慢一点,但也能处理。那么并发量到底是1000还是5000?) 响应时间:系统处理一个
阅读全文
摘要:内容 rocketMQ基本介绍 使用MQ,将购票流程一分为二。目前系统的吞吐量低,用户从购买车票到拿到票花费的时间较长。 增加排队购票功能。排队提示loading。 购票时序图 目前的时序图,用户发送购票请求,服务端校验验证码,拿令牌,拿锁,然后选座购票,结束流程才会返回。服务器执行时间太长。 增加
阅读全文
摘要:介绍 为什么引入令牌大闸? 分布式锁和限流都不能解决机器人刷票问题,1000个请求抢票,900个限流快速失败,另外100个人有可能是同一个人在刷库。引入令牌功能,令牌记录用户信息,一旦用户拿到令牌,那么几秒钟之内不能重新拿到令牌。 没有余票时,需要查库存才知道没票,会影响性能,不如查令牌存量来的快。
阅读全文
摘要:内容 sentinal限流降级:限流是接口流量太大要进行限制,限制后的流量进行降级。 sentinal熔断降级:熔断是A调用B,而B不靠谱,就熔断不调用,并降级。 sentinal+nacos组合。 常见的限流算法 静态窗口限流 动态窗口限流 例如:当前是第2.5秒 静态:统计第2秒到现在的请求数
阅读全文
摘要:库存超卖问题 对于商城系统。超卖了一部分可以补获,12306对超卖问题更敏感。 JMeter的使用 超卖演示&使用JMeter对购票功能进行压测 使用synchronized是否能解决库存超卖? 超卖问题出现原因: 假设余票为1,此时多个线程同时查询到这条余票记录,并进行扣减,那么则会导致超卖发生。
阅读全文
摘要:什么是Seata 网址:seata.io Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 seata术语 TC (Transaction Coordin
阅读全文
摘要:为什么要有定时调度 定时调度在企业级系统中非常重要(统计报表、功能补偿、不紧急的大批量任务) 12306每天都需要生成15天后的车次数据 本章内容 集成quartz,比较SpringBoot自带定时任务喝quartz的区别 使用控台来操作定时任务:新增、暂停、重启、删除 项目中增加batch定时调度
阅读全文
摘要:主要内容 以乘车人增删改查为模板,自制单表管理,前后端生成器。 学习代码生成器原理,学习freemarker。 写自己的生成器,可用于导出复制excel,页面静态化等。 代码生成器的底层原理 生成器原理:使用freemarker,利用模板,生成java、vue等项目文件。freemarker是老牌模
阅读全文
摘要:乘车人表的设计 新增/修改时间保存到毫秒 drop table if exists `passenger`; create table `passenger` ( `id` bigint not null comment 'id', `member_id` bigint not null comme
阅读全文
摘要:什么是单点登录 一次登录,自由访问 两种单点登录方案:redis+token; jwt JWT原理:https://hutool.cn/docs/#ljwt/概述?id=由来 结构: Header:头部,声明签名算法 Payload:载荷信息,放用户数据 Signature:签名,用于校验数据(私密
阅读全文
摘要:主要内容 前端模块的搭建:Vue CLI5 + Vue3 + Ant Design Vue3 完成手机号登录/注册功能 收获 学会纯前端项目的搭建 理解前后端分离架构 本地环境准备 vue cli安装: https://cli.vuejs.org/zh/guide/installation.html
阅读全文
摘要:新增member会员模块 创建member模块,添加依赖 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.
阅读全文