分布式
文章平均质量分 62
南波兔不写巴哥
这个作者很懒,什么都没留下…
展开
-
单点登录的理解(SSO)
写在前面本文上将单点登录的实现,以及本人的理解写出来,仅供参考单点登录概念这里要区别于分布式会话,分布式会话是在一个系统中,一个大的域名下的众多子域名中共享会话而单点登录,是在一个集团下,多个不同域名的系统进行共享登录状态(这里不是会话哦),实现一个登录,个个登录用这样的图来表示,不同的系统域名是不一样的,且不具有父子域的关系,同时,它们的上级域名是.com,所以根本没有办法参考分布式session,把cookie的domain设置成父域来解决所以这里采取的方式是,抽取出一个系统,单独的作为原创 2021-05-02 15:21:29 · 220 阅读 · 0 评论 -
redis实现分布式锁的逻辑(setNXEX) 循循善诱,步步填坑
本文关于redis代码实现分布式锁的设计思路,每一步解决上一步的问题实现思路:代码实现:上述情况,可能会产生死锁这里设置了过期时间,但是存在的问题在于,在进行if判断时,该线程挂了,此时已然死锁所有setNX和expire必须要原子操作使用setNXEX保证原子性问题在于,线程A业务时间过长,key过期了,业务还在进行操作,此时其他线程B获得锁。当线程A业务执行完,按照流程执行删锁操作,此时删的锁并不是线程A的,而是线程B的。这种情况就是删掉了别人的锁,原创 2021-04-28 15:52:23 · 1241 阅读 · 0 评论 -
leaf 的雪花算法实现 简析
概览本文跟一下leaf的雪花模式的算法关注点:workerid生成时间回拨问题解决leaf是美团开源的分布式id 项目源码分析首先从server的Controller出发,看一下雪花算法生成的方法@RequestMapping(value = "/api/snowflake/get/{key}")public String getSnowflakeId(@PathVariable("key") String key) { return get(key, snowflak原创 2021-04-21 11:15:56 · 1207 阅读 · 0 评论 -
tinyid介绍 及架构分析
(转载请务必显著注明出处, 尊重南波兔的劳动成果)tinyid源码解读 client部分tinyid源码解读 client部分tinyid概览其是滴滴开源的一个分布式id生成器(中间件)其参考了美团开源项目leaf语言是java,目前也仅支持java项目下面是有关分布式id的相关特性高可用: id生成器项目可以部署在多个服务器上,高并发: 可以连接多个数据库,同时因为采用号段模式, 故对数据库的压力并不大全局id唯一: 因为采用了数据库自增,所以能够保证id唯一简单易用原创 2021-04-21 10:08:17 · 791 阅读 · 0 评论 -
tinyid源码解读 server部分
再来看服务端的我们通过查看client的源码,已经很清楚的发现, client获取号段的方式是 : 访问的url格式为"http://{0}/tinyid/id/nextSegmentIdSimple?token={1}&bizType=";那我们直接来server中Controller中的这个方法 @RequestMapping("nextSegmentIdSimple") public String nextSegmentIdSimple(String bizType,原创 2021-04-20 19:53:48 · 231 阅读 · 0 评论 -
tinyid源码解读 client部分
先来看clientpublic static List<Long> nextId(String bizType, Integer batchSize) { if(batchSize == null) { Long id = nextId(bizType); List<Long> list = new ArrayList<>(); list.add(id);原创 2021-04-20 17:06:38 · 377 阅读 · 1 评论 -
雪花算法中的时间回拨问题解决方案
什么是时间回拨问题雪花算法通过时间来即将作为id的区分标准之一,对于同一台id生成机器,它通过时间和序号保证id不重复当机器出现问题,时间可能回到之前,此时,时间就不能区分又或者因为闰秒的出现,导致时间回拨如何解决方法1 直接抛出异常不管3X7==21,直接抛出异常将问题交给人工解决这种方法也是原始的雪花算法,百度的uid-generator采用的太过简单,显然不好方法2 延迟等待这种时间回拨(回跳)或许只出现一次,也许只是机器出现了小问题,所以产生对于这种场景,没有必要抛原创 2021-04-20 15:45:48 · 9863 阅读 · 4 评论