设计秒杀系统应该注意的 5 个架构原则
摘要:架构原则:“4 要 1 不要” 如果你是一个架构师,你首先要勾勒出一个轮廓,想一想如何构建一个超大流量并发读写、高性能,以及高可用的系统,这其中有哪些要素需要考虑。我把这些要素总结为“4要 1 不要”。 1.数据要尽量少 所谓“数据要尽量少”,首先是指用户请求的数据能少就少。请求的数据包括上传给系统
阅读全文
posted @
2024-08-29 17:19
坐在云上飘
阅读(12)
推荐(0) 编辑
MQ消息
摘要:RocketMQ 延迟消息 延迟消息,当消息写入到 Broker 后,不会立刻被消费者消费,需要等待指定的时长后才可被消费处理的消息,称为延时消息。在订单创建之后,我们就可以把订单作为一条消息投递到 rocketmq,并将延迟时间设置为 30 分钟, 这样30分钟后我们定义的 consumer 就可
阅读全文
posted @
2024-08-29 17:01
坐在云上飘
阅读(20)
推荐(0) 编辑
Redisson分布式延迟队列
摘要:Redisson 是一个基于 redis 实现的 Java 驻内存数据网格,它不仅提供了一系列的分布式的 Java 常用对象,还提供了许多分布式服务。 Redisson 除了提供我们常用的分布式锁外,还提供了一个分布式延迟队列 RDelayedQueue,他是一种基于 zset 结构实现的延迟队列,
阅读全文
posted @
2024-08-29 16:51
坐在云上飘
阅读(166)
推荐(0) 编辑
redis过期监听
摘要:redis 是一个高性能的 KV 数据库,除了用作缓存以外,其实还提供了过期监听的功能在 redis.conf 中,配置 notify-keyspace-events Ex 即可开启此功能。 然后在代码中继承 KeyspaceEventMessageListener,实现 onMessage 就可以
阅读全文
posted @
2024-08-29 16:27
坐在云上飘
阅读(131)
推荐(0) 编辑
JDK延迟队列 DelayQueue
摘要:DelayQueue是JDK提供的一个无界队列,我们可以看到,DelayQueue队列中的元素需要实现Delayed,它只提供了一个方法,就是获取过期时间。 用户的订单生成以后,设置过期时间比如30分钟,放入定义好的DelayQueue,然后创建一个线程,在线程中通过while(true)不断的从D
阅读全文
posted @
2024-08-29 16:17
坐在云上飘
阅读(56)
推荐(0) 编辑
定时任务
摘要:通过定时任务关闭订单,是一种成本很低,实现也很容易的方案。通过简单的几行代码,写一个定时任务,定期扫描数据库中的订单,如果时间过期,就将其状态更新为关闭即可 优点:实现容易,成本低,基本不依赖其他组件。 缺点:时间可能不够精确。由于定时任务扫描的间隔是固定的,所以可能造成一些订单已经过期了一段时间才
阅读全文
posted @
2024-08-29 16:12
坐在云上飘
阅读(17)
推荐(0) 编辑
mysql事务
摘要:事务的四大特性 原子性 undolog 要么全部成功 要么全部失败 隔离性 锁加mvcc 持久性 redolog 加 double read buffer 双写缓冲 一致性 事务的隔离级别 read uncommitted(读未提交) read committed(读已提交) repeatable
阅读全文
posted @
2024-08-12 17:30
坐在云上飘
阅读(4)
推荐(0) 编辑
接口安全处理
摘要:如何防止api接口被恶意调用或攻击 无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了。目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提供便利的同时,也成了呗恶意攻击的对象,那么如何才能防止被恶意调用
阅读全文
posted @
2024-08-12 17:15
坐在云上飘
阅读(19)
推荐(0) 编辑
redis持久化
摘要:https://blog.csdn.net/weixin_43888891/article/details/131031003
阅读全文
posted @
2024-08-12 17:01
坐在云上飘
阅读(7)
推荐(0) 编辑
redis的更新策略以及淘汰策略
摘要:redis更新策略 1.先更新缓存再更新数据库:在双写场景下,很容易出现一致性问题,在读写场景下,小概率出现一致性问题,所以Pass。 2.先删除缓存再更新数据库:在双写场景下,不会出现一致性问题,在读写场景下,很容易出现一致性问题,所以Pass。 3.先更新数据库再更新缓存:在双写场景下,很容易出
阅读全文
posted @
2024-08-12 16:32
坐在云上飘
阅读(69)
推荐(0) 编辑
redis的几种常见问题
摘要:缓存穿透 redis缓存和数据库中没有相关数据 解决方案 1. 对不存在的数据缓存到redis中,设置key,value值为null(不管是数据未null还是系统bug问题),并设置一个短期过期时间段,避免过期时间过长影响正常用户使用。 2. 拉黑该IP地址 3. 对参数进行校验,不合法参数进行拦截
阅读全文
posted @
2024-08-09 16:21
坐在云上飘
阅读(13)
推荐(0) 编辑
redis数据结构
摘要:redis 数据类型 string list hash set zset HyperLogLog GEO BloomFilter(布隆过滤器) HyperLogLog 基本概念: Redis 在 2.8.9 版本添加了 HyperLogLog 结构。 Redis HyperLogLog 是用来做基数
阅读全文
posted @
2024-08-09 15:44
坐在云上飘
阅读(7)
推荐(0) 编辑
stream的用法
摘要:/** * 筛选出Integer集合中大于7的元素,并打印出来 */ private static void test2() { List<Integer> list = Arrays.asList(6, 7, 3, 8, 1, 2, 9); Stream<Integer> stream1 = li
阅读全文
posted @
2024-08-09 09:57
坐在云上飘
阅读(31)
推荐(0) 编辑
mysql索引失效的场景
摘要:MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引
阅读全文
posted @
2024-08-09 09:51
坐在云上飘
阅读(6)
推荐(0) 编辑