Category: Distributed Solution

[汇总]分布式ID经验 0

[汇总]分布式ID经验

美团(Leaf)分布式ID生成器 ULID – 一种比UUID更好的方案   为什么MySQL不推荐使用uuid或者雪花id作为主键? 时间占用量总体可以打出的效率排名为:auto_key>random_key>uuid 那么使用自增的id就完全没有坏处了吗?并不是,自增id也会存在以下几点问题: ①别人一旦爬取你的数据库,就可以根据数据库的自增id获取到你的业务增长信息,很容易分析出你的经营情况 ②对于高并发的负载,innodb在按主键进行插入的时候会造成明显的锁争用,主键的上界会成为争抢的热点,因为所有的插入都发生在这里,并发插入会导致间隙锁竞争 ③Auto_Increment锁机制会造成自增锁的抢夺,有一定的性能损失 我在项目里用雪花算法搞了唯一ID生成,结果上线就引发了故障 我们猜测是不是服务器上的时钟不同步后,又自动进行同步了,前后时间不一致。      

[汇总]关于JWT扩展思考 0

[汇总]关于JWT扩展思考

如果accessToken放Client端,refreshToken存储在服务器,那么会违背微服务的无状态构架初衷。 accessToken和refreshToken统一放在Client端,可以遵循微服务无状态构架。 两种情况都可以通过accessToken来延长refreshToken,做到长时间保持登录状态的需求。

[汇总]高可用经验 0

[汇总]高可用经验

为了做到微服务的高可用,鬼知道我出了多少张牌 你管这破玩意儿叫高可用? (更详细构架)      

[转]高并发下的接口幂等性如何实现 0

[转]高并发下的接口幂等性如何实现

1. 一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题等等很多重要的情况都需要幂等的特性来支持。

[汇总]分布式锁开发 0

[汇总]分布式锁开发

Spring Boot 2实现分布式锁 早期,分布式锁的相关代码存在于Spring Cloud的子项目Spring Cloud Cluster中,后来被迁到Spring Integration中。 Spring Boot加一个注解,轻松实现 Redis 分布式锁

[转]布谷鸟过滤器 0

[转]布谷鸟过滤器

为解决布隆过滤器不能删除元素的问题,布谷鸟过滤器横空出世。 论文《Cuckoo Filter:Better Than Bloom》作者将布谷鸟过滤器和布隆过滤器进行了深入的对比。 相比布谷鸟过滤器而言,布隆过滤器有以下不足: 查询性能弱 空间利用效率低 不支持反向操作(删除) 不支持计数。

[转]谈谈服务雪崩、降级与熔断 0

[转]谈谈服务雪崩、降级与熔断

首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文。当然,考虑到目前大多微服务的文章都是口水文,烟哥争取将实现方式讲透,点清楚,让大家有所收获! OK,我要先说明一下,我有很长一段时间将服务降级和服务熔断混在一起,认为是一回事!

[转]分布式缓存中的一致性哈希算法 0

[转]分布式缓存中的一致性哈希算法

一致性哈希算法在分布式缓存领域的 MemCached,负载均衡领域的 Nginx 以及各类 RPC 框架中都有广泛的应用 它主要是为了解决传统哈希函数添加哈希表槽位数后要将关键字重新映射的问题。 本文会介绍一致性哈希算法的原理及其实现,并给出其不同哈希函数实现的性能数据对比,探讨Redis 集群的数据分片实现等,文末会给出实现的具体 github 地址。