当前位置: 首页 > news >正文

安徽苏亚建设安装有限公司网站宝塔 wordpress ssl

安徽苏亚建设安装有限公司网站,宝塔 wordpress ssl,纵横seo,做三轨网站犯法吗目录 Redis 秒杀 Mysql数据库设计 Mysql秒杀实现 MysqlRedis秒杀实现 秒杀是一种高并发场景#xff0c;通常指的是在短时间内#xff08;秒级别#xff09;有大量用户同时访问某个商品或服务#xff0c;争相抢购的情景。在这种情况下#xff0c;系统需要处理大量并发请…目录 Redis 秒杀 Mysql数据库设计 Mysql秒杀实现 MysqlRedis秒杀实现 秒杀是一种高并发场景通常指的是在短时间内秒级别有大量用户同时访问某个商品或服务争相抢购的情景。在这种情况下系统需要处理大量并发请求确保公平性、一致性并防止因并发而导致的问题例如超卖、恶意请求等。以下是在高并发秒杀场景下需要考虑的一些关键问题和解决方案 超卖问题 大量用户同时抢购同一商品可能导致超卖卖出超过库存数量的问题。为了解决这个问题可以采用悲观锁或乐观锁的方式来控制库存的访问。数据库的行级锁、分布式锁等技术都可以用来防止超卖。 性能优化 高并发场景下系统性能是关键。使用缓存、异步处理、CDN 加速等手段可以显著提升系统的性能。缓存可以存储商品信息、用户状态等减轻数据库压力。异步处理可以将一些不需要即时返回结果的操作异步执行减轻请求的响应时间。 并发控制 在高并发场景下为了防止系统崩溃或服务不可用需要对并发进行控制。可以使用队列、限流等技术确保系统在承受能力范围内处理请求防止系统超负荷崩溃。 秒杀令牌和时间窗口 可以在系统中引入秒杀令牌只有携带有效令牌的用户才能参与秒杀。同时可以设置一个时间窗口只在特定的时间范围内允许秒杀操作有效控制请求的涌入。 用户鉴权和防刷 针对恶意请求需要进行用户鉴权并采用防刷策略。例如限制同一用户在短时间内的请求次数通过验证码等方式增加用户请求的成本防止恶意请求。 队列和异步处理 使用消息队列将用户的秒杀请求进行排队然后异步处理。这样可以有效地削峰填谷减轻系统瞬时的压力提高系统的容错能力。 分布式事务 如果系统是分布式的需要考虑分布式事务的问题。确保在秒杀过程中的各个阶段包括扣减库存、生成订单等能够保持事务的一致性。 实时监控和日志记录 在高并发场景下实时监控是及时发现问题、解决问题的关键。记录详细的日志信息包括用户请求日志、系统性能日志等便于事后分析和优化。 Redis 秒杀 Mysql数据库设计 /* SQLyog Community v11.26 (32 bit) MySQL - 8.0.33 : Database - test ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQUE_CHECKSUNIQUE_CHECKS, UNIQUE_CHECKS0 */; /*!40014 SET OLD_FOREIGN_KEY_CHECKSFOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS0 */; /*!40101 SET OLD_SQL_MODESQL_MODE, SQL_MODENO_AUTO_VALUE_ON_ZERO */; /*!40111 SET OLD_SQL_NOTESSQL_NOTES, SQL_NOTES0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/test /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTIONN */;USE test;/*Table structure for table stock */DROP TABLE IF EXISTS stock;CREATE TABLE stock (id BIGINT NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,count INT DEFAULT NULL,create_time TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (id) ) ENGINEINNODB AUTO_INCREMENT3 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;/*Data for the table stock */INSERT INTO stock(id,name,count,create_time) VALUES (1,apple,500,2023-11-28 19:02:04),(2,huawei,500,2023-11-28 19:02:26);/*Table structure for table stock_order */DROP TABLE IF EXISTS stock_order;CREATE TABLE stock_order (id BIGINT NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,price INT DEFAULT NULL,create_time TIMESTAMP NULL DEFAULT NULL,PRIMARY KEY (id) ) ENGINEINNODB AUTO_INCREMENT1729467951815541250 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;/*Data for the table stock_order *//*Table structure for table article_select */DROP TABLE IF EXISTS article_select;/*!50001 DROP VIEW IF EXISTS article_select */; /*!50001 DROP TABLE IF EXISTS article_select */;/*!50001 CREATE TABLE article_select(a bigint ,b varchar(11) ,c varchar(20) ,d bigint )*/;/*View structure for view article_select *//*!50001 DROP TABLE IF EXISTS article_select */; /*!50001 DROP VIEW IF EXISTS article_select */;/*!50001 CREATE ALGORITHMUNDEFINED DEFINERrootlocalhost SQL SECURITY DEFINER VIEW article_select (a,b,c,d) AS select article.id AS id,article.name AS name,article.des AS des,article.categoryid AS categoryid from article */;/*!40101 SET SQL_MODEOLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKSOLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKSOLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTESOLD_SQL_NOTES */;Mysql秒杀实现 秒杀代码设计初步代码如下: RestController public class MyController {AutowiredStockMapper stockMapper;AutowiredStockOrderMapper stockOrderMapper;TransactionalGetMapping(/order/{id})public String order(PathVariable(id) Long id){Stock stock stockMapper.selectById(id);Integer count stock.getCount();if(count0){throw new RuntimeException(库存不足);}StockOrder stockOrdernew StockOrder();stockOrder.setName(stock.getName());stockOrderMapper.insert(stockOrder);UpdateWrapperStock updateWrappernew UpdateWrapper();updateWrapper.setSql(count count - 1 where count 0 and id id); //在mysql这里执行的时候数据库会加行锁所以相对是安全的int update stockMapper.update(null, updateWrapper);if(update0){throw new RuntimeException(库存不足);}return success;} }由于业务代码直接与mysql数据库进行交互mysql一秒支持的并发量低性能较低然后下面进行压测 压测得到的汇总报告如下图 MysqlRedis秒杀实现 使用redis修改代码如下 RestController public class MyController {AutowiredStringRedisTemplate stringRedisTemplate;AutowiredStockMapper stockMapper;AutowiredStockOrderMapper stockOrderMapper;PostConstructpublic void init(){ListStock stocks stockMapper.selectList(null);for (Stock stock : stocks) {stringRedisTemplate.opsForValue().set(product_stock.getId(),stock.getCount());}}GetMapping(/order/{id})public String order(PathVariable(id) Long id){Long decrement stringRedisTemplate.opsForValue().decrement(product_ id);if(decrement0){stringRedisTemplate.opsForValue().increment(product_id);return 库存不足;}try {((MyController)AopContext.currentProxy()).mys_order(id);}catch (Exception e){stringRedisTemplate.opsForValue().increment(product_id);return 库存不足;}return 购买成功;}Transactionalpublic void mys_order(Long id){Stock stock stockMapper.selectById(id);if(stock.getCount()0){throw new RuntimeException(库存不足);}StockOrder stockOrdernew StockOrder();stockOrder.setName(stock.getName());stockOrderMapper.insert(stockOrder);UpdateWrapperStock updateWrappernew UpdateWrapper();updateWrapper.setSql(count count - 1 where count 0 and id id); //在mysql这里执行的时候数据库会加行锁所以相对是安全的int update stockMapper.update(null, updateWrapper);if(update0){throw new RuntimeException(库存不足);}} } 压测结果吞吐量如下图使用redis作为缓存相对于仅仅使用mysql数据库吞吐量提升了不少性能得到了提升。
http://www.pierceye.com/news/607306/

相关文章:

  • 如何访问win7下做的网站时间轴网站模板
  • html5网站制作软件做app找哪个网站吗
  • 网站名称怎么备案外贸商城网站模板
  • 网页设计网站网站建设课程设计客户关系管理流程图
  • 网站开发遇到的难题品牌策划公司有哪些
  • 网站如何做视频链接网络服务器可提供的常见服务
  • 做二手钢结构网站有哪些网站建设开发ppt
  • 做网站分什么软件免费备案网站空间
  • 网站建设公司大全如何制作网站视频的软件
  • 手机网站开发有前途软件开发服务费税率
  • 代做网站的公司有哪些logo一键生成器不要钱的
  • 网站建设和编程的区别游戏网站模板html
  • 大麦网网站内似网站开发百度资料怎么做网站
  • 网站销售方案英文淘宝网站建设
  • wordpress双语网站微信二次开发
  • 公司的网站建设做什么费用尚海整装公司电话
  • 贵阳市建设厅官方网站官方网站开发需要几个技术人员
  • 电子政务网站模版科学规划网页的做法是
  • 昆明网站建设猫咪科技抚州网站建设
  • 山东网站建设运行工资做的很漂亮的网站
  • 网站免费源码大全无用下载淘宝支持做微交易网站吗
  • 常用网站推广方法石家庄营销网站建设价格
  • 网站界面设计的基本原则是什么论坛做视频网站
  • 学校网站总务建设怎么做网站流量竞品分析
  • 企业网站建设所需要的资料网站备案 icp备案
  • 商城类网站方案中国风 wordpress主题
  • 网站更换服务器教程南阳网站推广招聘
  • 海尔网站的建设目标四库一平台个人信息查询
  • 佛山市建设网站公司网站手机端和电脑端
  • 属于c2c的网站是重庆化工建设信息网站