随笔分类 -  铁路购票系统12306

利用Soringboot3实现高并发的铁路12306购票系统
十六、压力测试
摘要:介绍 压力测试相关概念 使用JMeter对高并发优化前后的代码进行压测对比 压力测试相关概念 并发量:指在同一时间点内,系统中同时处理的用户请求数。(并发1000时,响应时间1s;并发5000时,响应时间5s,处理得慢一点,但也能处理。那么并发量到底是1000还是5000?) 响应时间:系统处理一个 阅读全文

posted @ 2023-06-21 19:51 夏雪冬蝉 阅读(133) 评论(0) 推荐(0) 编辑

十五、使用RocketMQ组件对请求做削峰处理
摘要:内容 rocketMQ基本介绍 使用MQ,将购票流程一分为二。目前系统的吞吐量低,用户从购买车票到拿到票花费的时间较长。 增加排队购票功能。排队提示loading。 购票时序图 目前的时序图,用户发送购票请求,服务端校验验证码,拿令牌,拿锁,然后选座购票,结束流程才会返回。服务器执行时间太长。 增加 阅读全文

posted @ 2023-06-21 11:35 夏雪冬蝉 阅读(528) 评论(0) 推荐(0) 编辑

十五、高并发抢票时,防止机器人刷票的令牌大闸,可减轻服务器的压力(防刷+限流)
摘要:介绍 为什么引入令牌大闸? 分布式锁和限流都不能解决机器人刷票问题,1000个请求抢票,900个限流快速失败,另外100个人有可能是同一个人在刷库。引入令牌功能,令牌记录用户信息,一旦用户拿到令牌,那么几秒钟之内不能重新拿到令牌。 没有余票时,需要查库存才知道没票,会影响性能,不如查令牌存量来的快。 阅读全文

posted @ 2023-06-06 23:56 夏雪冬蝉 阅读(481) 评论(1) 推荐(0) 编辑

十四、使用Sentinal进行限流熔断
摘要:内容 sentinal限流降级:限流是接口流量太大要进行限制,限制后的流量进行降级。 sentinal熔断降级:熔断是A调用B,而B不靠谱,就熔断不调用,并降级。 sentinal+nacos组合。 常见的限流算法 静态窗口限流 动态窗口限流 例如:当前是第2.5秒 静态:统计第2秒到现在的请求数 阅读全文

posted @ 2023-06-03 17:13 夏雪冬蝉 阅读(543) 评论(1) 推荐(0) 编辑

十三、利用分布式锁解决超卖问题
摘要:库存超卖问题 对于商城系统。超卖了一部分可以补获,12306对超卖问题更敏感。 JMeter的使用 超卖演示&使用JMeter对购票功能进行压测 使用synchronized是否能解决库存超卖? 超卖问题出现原因: 假设余票为1,此时多个线程同时查询到这条余票记录,并进行扣减,那么则会导致超卖发生。 阅读全文

posted @ 2023-05-28 22:05 夏雪冬蝉 阅读(367) 评论(0) 推荐(0) 编辑

十二、集成分布式事务组件Seata
摘要:什么是Seata 网址:seata.io Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 seata术语 TC (Transaction Coordin 阅读全文

posted @ 2023-05-26 22:04 夏雪冬蝉 阅读(176) 评论(0) 推荐(0) 编辑

七、使用调度框架quartz,为12306系统增加定时调度功能
摘要:为什么要有定时调度 定时调度在企业级系统中非常重要(统计报表、功能补偿、不紧急的大批量任务) 12306每天都需要生成15天后的车次数据 本章内容 集成quartz,比较SpringBoot自带定时任务喝quartz的区别 使用控台来操作定时任务:新增、暂停、重启、删除 项目中增加batch定时调度 阅读全文

posted @ 2023-05-02 21:30 夏雪冬蝉 阅读(118) 评论(0) 推荐(0) 编辑

五、自制代码生成器提高开发效率
摘要:主要内容 以乘车人增删改查为模板,自制单表管理,前后端生成器。 学习代码生成器原理,学习freemarker。 写自己的生成器,可用于导出复制excel,页面静态化等。 代码生成器的底层原理 生成器原理:使用freemarker,利用模板,生成java、vue等项目文件。freemarker是老牌模 阅读全文

posted @ 2023-04-22 22:23 夏雪冬蝉 阅读(273) 评论(0) 推荐(0) 编辑

四、12306系统会员基础功能的实现
摘要:乘车人表的设计 新增/修改时间保存到毫秒 drop table if exists `passenger`; create table `passenger` ( `id` bigint not null comment 'id', `member_id` bigint not null comme 阅读全文

posted @ 2023-04-17 15:38 夏雪冬蝉 阅读(94) 评论(0) 推荐(0) 编辑

三、实现JWT单点登录功能
摘要:什么是单点登录 一次登录,自由访问 两种单点登录方案:redis+token; jwt JWT原理:https://hutool.cn/docs/#ljwt/概述?id=由来 结构: Header:头部,声明签名算法 Payload:载荷信息,放用户数据 Signature:签名,用于校验数据(私密 阅读全文

posted @ 2023-04-17 14:15 夏雪冬蝉 阅读(825) 评论(0) 推荐(0) 编辑

二、使用Vue3 + Vue CLI 实现系统前端模块的搭建
摘要:主要内容 前端模块的搭建:Vue CLI5 + Vue3 + Ant Design Vue3 完成手机号登录/注册功能 收获 学会纯前端项目的搭建 理解前后端分离架构 本地环境准备 vue cli安装: https://cli.vuejs.org/zh/guide/installation.html 阅读全文

posted @ 2023-04-17 09:47 夏雪冬蝉 阅读(101) 评论(0) 推荐(0) 编辑

一、新版Spring Cloud Alibaba与Springbooot3.0搭建后端架构
摘要:新增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. 阅读全文

posted @ 2023-04-15 20:23 夏雪冬蝉 阅读(656) 评论(0) 推荐(1) 编辑