分布式
晴天小哥哥
追求卓越, 成功就会在不经意间追上你
展开
-
Redis生成分布式环境下自增ID
相信大家在分布式系统一定会遇到如何生成唯一Id;uuid可以但是,作为数据库主键很浪费性能(索引相关),雪花算法可以,但是很依赖于环境.这里推荐大家使用redis生成;1.需求明确我们生成的Id组成为,时间戳+自增Id,补0例如:今天是2020.2.28 , 补6个0 ,那么生成的id范围是20200228000001-2020022899999...原创 2020-02-28 14:11:18 · 9030 阅读 · 2 评论 -
分布式一致性算法 Raft
分布式一致性算法最著名的应该是 Paxos,1990年提出,google的Chubby Lock服务就是使用的Paxos之后的一些一致性算法基本都是在Paxos思路上的调整,例如 ZooKeeper的 ZAB但Paxos算法一直被认为比较繁杂,很不好理解,大家对其调整优化,就是因为他的复杂2013年,斯坦福的两个人以易懂为目标,设计了一致性算法 Raft,现在已经被广泛应用,比较有名的是et...原创 2019-12-23 09:12:08 · 383 阅读 · 0 评论 -
分布式一致性算法 Paxos
Paxos 是著名的分布式一致性算法,Google Chubby的作者Mike Burrows对Paxos的评价极高:“这个世界上只有一种一致性算法,那就是 Paxos”。其实也不为过,像非常有名的 Raft 算法、Zab 算法等都是基于 Paxos 的简化和改进。Paxos 解决什么问题Paxos 是解决分布式环境下多节点的数据一致性问题,先看下一致性问题。例如一个cache...原创 2019-12-23 09:10:40 · 665 阅读 · 0 评论 -
分布式锁, 注解形式, 搞定SpringBoot定时任务@Scheduled 在集群下的优化
SpringBoot提供了 Schedule模块完美支持定时任务的执行在实际开发中由于项目部署在分布式或集群服务器上 会导致定时任务多次触发因此,使用redis分布锁机制可以有效避免多次执行定时任务 核心方法是org.springframework.data.redis.core包下的 setIfAbsent() 方法 返回值为布尔类型 方法类似redis的SETNX命令 ...原创 2018-08-29 14:07:06 · 11732 阅读 · 14 评论 -
RedisTemplate实现分布式锁
使用Redis的SETNX命令获取分布式锁的步骤:C1和C2线程同时检查时间戳获取锁,执行SETNX命令并都返回0,此时锁仍被C3持有,并且C3已经崩溃 C1 DEL锁 C1 使用SETNX命令获取锁,并且成功 C2 DEL锁 C2 使用SETNX命令获取锁,并且成功 ERROR : 由于竞态条件,C1和C2都获取到了锁幸运的是,以下面的步骤完全可以避免这种情况发生,看看C4线程如...原创 2018-09-18 10:58:16 · 31957 阅读 · 15 评论 -
java代码利用RestTemplate模拟http发送请求
我这边用SpringBoot来配置RestTemplate 直接上代码,先是配置类/** * Description: httpApiConfig, 用于restTemplate * User: zhouzhou * Date: 2018-09-14 * Time: 13:25 */@Configurationpublic class HttpApiConfig { @...原创 2018-09-14 15:13:30 · 2907 阅读 · 0 评论 -
注解形式实现,Redis分布式锁
Redis工具类参考我的博文:https://blog.csdn.net/weixin_38399962/article/details/82753763一个注解就可以实现分布式锁?这么神奇么?首先定义注解:/** * Description:分布式Redis锁 * User: zhouzhou * Date: 2018-09-25 * Time: 10:55 */@Re...原创 2018-09-26 09:17:21 · 1399 阅读 · 0 评论 -
消息队列常见问题和解决方案
说明:此文是笔者对中华石衫老师对消息队列讲解的一篇总结包括笔者自己的一些理解一、为什么使用消息队列?消息队列使用的场景和中间件有很多,但解决的核心问题主要是:异步、解耦、消峰填谷。二、消息队列的优缺点异步、解耦、消峰填谷这是消息队列最大的优点,除了这些消息队列还可以会解决一些我们特殊业务场景的问题。但是缺点主要在于系统的可用性、复杂性、一致性问题,引入消息队列后,需要考虑MQ的...原创 2019-04-17 09:11:15 · 894 阅读 · 0 评论 -
监听Redis 缓存过期(Key 失效)事件
很多业务场景,例如订单过期自动删除,订单几天后自动好评,这些常用操作可以通过定时任务,数据库轮询做,但是订单量大的情况可能会对数据库产生大的压力。所以今天介绍的就是 redis 缓存过期通知。1.事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 故需要开启 redis 的事件监听与发布2.修改redis.conf文件打开 notify-keyspace...原创 2019-04-18 10:13:01 · 14964 阅读 · 5 评论