【分布式id生成】关于分布式id生成器生成单调递增id的思考

本文探讨了如何在分布式环境中确保ID的单调递增,并分析了性能、扩展性和可用性。当请求路由到Master时,直接响应以保证效率;而在Master切换时,介绍了处理ID分发问题的策略,以及租约机制来防止脏数据。微信序列号生成器的实现方式也被提及,其通过单Master服务和租约机制确保服务稳定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

如何保证获取到的id单调递增?

方案评估

评估详情

性能

情况1:当获取id的请求路由到Master

情况2:当获取id的请求路由到非Master

总结

扩展性

可用性

Master切换

如何处理Master切换时的id分发问题,保证在Master切换时的可用性?

附录

微信序列号生成器如何实现唯一、递增的


如何保证获取到的id单调递增?

约束条件:

1)集群中一台机器为Master,仅Master提供id生成服务

2)当获取id的请求路由到Master机器时,直接返回响应(一轮RPC)

当获取id的请求路由到非Master机器时,转发至Master机器(两轮RPC)

 

方案评估

 

评估

性能

1)请求最终由Master机器进行响应。单机能支持的最大QPS即为集群最大QPS。

2)请求路由到非Master机器时,需两轮RPC,会增加耗时。

3)请求最终由Master机器进行响应,导致同机房优先路由策略不适用,某些情况下,请求耗时较长。

扩展性

集群总QPS无法随集群机器数量的增加而线性扩展。

可用性

1)当发生Master切换时,会损失一定可用性

2)某些情况下,请求耗时较长,会导致可用性降低。

 

评估详情

性能

(1)当获取id的请求最终由Master进行响应。单机能支持的最大QPS即为集群最大QPS。

(2)由于仅Master能够提供id生成服务,同机房优先等路由规则不再适用

情况1:当获取id的请求路由到Master

当获取id的请求路由到Master,直接返回响应,一轮RPC

case1:

client和Master同城市,比如都在Beijing

client(Beijing)----->server(Master,Beijing)

 

case2:

client和Master不同城市,比如一个Beijing,一个Shanghai

client(Beijing)--(25ms+)--->server(Master,Shanghai)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值