我也感觉,这只是趋势递增,没法保证全局和会话递增吧。如果要递增,同业务多server肯定要访问同一个leaf。与数据库单点相比,只是说增加了号段缓存,效率能更高吧 |
引用:JackJiang 发表于 2022-06-17 10:51 路由层进行biz_tag转发的话,其实还是会有单点问题,感觉想要单调递增且全局唯一的id绕不开单点了。 |
引用:qzuser 发表于 2022-06-17 09:47 这样肯定就没法保证递增了,肯定还得有个网关一样的东西,统一调用 |
引用:JackJiang 发表于 2022-06-02 11:05 如果一个业务的并发数很高,单个leaf服务不够用,需要两个leaf服务,第一个leaf服务号段是1-1000,第二个leaf服务号段是1001-2000。那么这两个leaf服务同时对外提供服务时,会出现发号不是递增的情况呢,1,1001,2,1002,...。单个leaf服务是递增的,但是一个业务如果有多台leaf服务,怎么保证递增呢 |
引用:陈萌1 发表于 2022-06-02 00:39 不同的leaf服务,对应于不同的业务,用biz_tag字段区分 |
Leaf-segment 是怎么保证全局有序的呢,拿文章中图为例,三个leaf服务分别去了test_tag业务的不同号段分别是1-1000,1001-2000,2001-3000,同时地外提供服务,这时候拿到的 id顺序了能是 1、1001、2、2001、3、2002、1002、4 这个顺序啊?求大神解答 |
引用:ericqfli 发表于 2020-03-12 10:44 百度对SnowFlake算法进行了另一种思路的改进,可以学习一下:《IM消息ID技术专题(五):开源分布式ID生成器UidGenerator的技术实现》 |
ID生成更考验架构的设计能力,对于不同场景的理解。 学习 |
Leaf-snowflake 多个服务实例是无状态的吗? 如果是,每个机器时钟不能完全保障一致, 业务service的快速的两次请求分别落在不同实例上,是不是就不能保证ID的有序性了? |
引用:laojichuxin 发表于 2019-09-30 17:19 活体解刨苍蝇 |
精辟 |
引用:不要·不要 发表于 2019-09-23 13:12 小场景直接自增就够用了,不需要这么大的刀,杀苍蝇。 |
美团的这两种id生成算法算起来很牛,不过可能不太适合中小场景, 还是有点复杂, 技术不行的程序员可能hold不住。 那个leaf-snowflake值得研究一下,这玩意很实用 |