拼多多网站在那里做,做网站需要学会做哪些东西,上海企业网站模板建站哪家好,黄冈网站官方登录平台一、介绍
由美团开发#xff0c;开源项目链接#xff1a;https://github.com/Meituan-Dianping/Leaf
Leaf同时支持号段模式和snowflake算法模式#xff0c;可以切换使用。ID号码是趋势递增的8byte的64位数字#xff0c;满足上述数据库存储的主键要求。
Leaf的snowflake模…一、介绍
由美团开发开源项目链接https://github.com/Meituan-Dianping/Leaf
Leaf同时支持号段模式和snowflake算法模式可以切换使用。ID号码是趋势递增的8byte的64位数字满足上述数据库存储的主键要求。
Leaf的snowflake模式依赖于ZooKeeper不同于原始snowflake算法也主要是在workId的生成上Leaf中workId是基于ZooKeeper的顺序Id来生成的每个应用在使用Leaf-snowflake时启动时都会都在Zookeeper中生成一个顺序Id相当于一台机器对应一个顺序节点也就是一个workId。
Leaf的号段模式是对直接用数据库自增ID充当分布式ID的一种优化减少对数据库的频率操作。相当于从数据库批量的获取自增ID每次从数据库取出一个号段范围例如 (1,1000] 代表1000个ID业务服务将号段在本地生成1~1000的自增ID并加载到内存.。
二、特性
1全局唯一绝对不会出现重复的ID且ID整体趋势递增。
2高可用服务完全基于分布式架构即使MySQL宕机也能容忍一段时间的数据库不可用。
3高并发低延时在CentOS 4C8G的虚拟机上远程调用QPS可达5WTP99在1ms内。
4接入简单直接通过公司RPC服务或者HTTP调用即可接入。
Leaf采用双buffer的方式它的服务内部有两个号段缓存区segment。当前号段已消耗10%时还没能拿到下一个号段则会另启一个更新线程去更新下一个号段。
简而言之就是Leaf保证了总是会多缓存两个号段即便哪一时刻数据库挂了也会保证发号服务可以正常工作一段时间。
三、案例记录 dependencyartifactIdleaf-boot-starter/artifactIdgroupIdcom.sankuai.inf.leaf/groupIdversion1.0.1-RELEASE/version/dependencydependencygroupIdorg.apache.curator/groupIdartifactIdcurator-recipes/artifactIdversion2.6.0/versionexclusionsexclusionartifactIdlog4j/artifactIdgroupIdlog4j/groupId/exclusion/exclusions/dependency/dependencies属性文件配置 properties
leaf.namecom.boge.vip
leaf.segment.enablefalse
#leaf.segment.url
#leaf.segment.username
#leaf.segment.passwordleaf.snowflake.enabletrue
#leaf.snowflake.address
#leaf.snowflake.port
leaf.snowflake.address192.168.56.100
leaf.snowflake.port2181启动类增加EnableLeafServer注解
注意你还需要启动一个Zookeeper服务。
测试代码 SpringBootTest
class DistributedIdsVipApplicationTests {AutowiredRedisDistributedId redisDistributedId;Autowiredprivate SnowflakeService snowflakeService;Testvoid contextLoads() {Result abc snowflakeService.getId(abc);System.out.println(abc.getId());System.out.println(Long.toBinaryString(abc.getId()));}}如果对你有帮助可以关注博主不定期更新各种技术文档 给博主一个免费的点赞以示鼓励谢谢 ! 欢迎各位点赞评论收藏⭐️