分布式6大核心专题_分布式ID

文章目录

          • 一、号段模式
            • 1. 拉取项目源码编译
            • 2. springboot集成Leaf
            • 3. 配置leaf.properties
            • 4. 创建数据库
            • 5. 初始化表结构和数据
            • 6. 测试案例
            • 7. 浏览器测试

美团Leaf的号段模式和雪花算法模式生成分布式全局唯一id方式2种

一、号段模式

目前jar在maven仓库中没有上传

1. 拉取项目源码编译
git clone git@github.com:Meituan-Dianping/Leaf.git
cd Leaf/
git checkout feature/spring-boot-starter
mvn clean install -Dmaven.test.skip=true
2. springboot集成Leaf
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.18.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.gblfy</groupId><artifactId>distributed</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--SpringMVC启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><artifactId>leaf-boot-starter</artifactId><groupId>com.sankuai.inf.leaf</groupId><version>1.0.1-RELEASE</version></dependency><!--zk--><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.6.0</version><exclusions><exclusion><artifactId>log4j</artifactId><groupId>log4j</groupId></exclusion></exclusions></dependency></dependencies>
</project>
3. 配置leaf.properties
leaf.name=com.sankuai.leaf.opensource.test
#是否开启号段模式
leaf.segment.enable=true
#数据库连接url
leaf.segment.url=jdbc:mysql://localhost:3306/dca?useSSL=false&serverTimezone=GMT%2B8
#用户名
leaf.segment.username=root
#密码
leaf.segment.password=root#是否开启雪花算法
leaf.snowflake.enable=true
#zk服务端ip
leaf.snowflake.address=192.168.0.113
#zk服务端端口号
leaf.snowflake.port=2181注:服务端防火墙要开启2181端口权限
4. 创建数据库
CREATE DATABASE leaf
5. 初始化表结构和数据
use leaf;
CREATE TABLE `leaf_alloc` (`biz_tag` varchar(128)  NOT NULL DEFAULT '', -- your biz unique name`max_id` bigint(20) NOT NULL DEFAULT '1',`step` int(11) NOT NULL,`description` varchar(256)  DEFAULT NULL,`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`biz_tag`)
) ENGINE=InnoDB;insert into leaf_alloc(biz_tag, max_id, step, description) values('leaf-segment-test', 1, 2000, 'Test leaf Segment Mode Get Id')
6. 测试案例
package com.gblfy.distributedid;import com.sankuai.inf.leaf.service.SegmentService;
import com.sankuai.inf.leaf.service.SnowflakeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 参考博客:* 美团Leaf源码——snowflake模式源码解析* https://blog.csdn.net/bskfnvjtlyzmv867/article/details/90247036*/
@RestController
public class LeafController {@Autowiredprivate SegmentService segmentService;@Autowiredprivate SnowflakeService snowflakeService;/*** 号段模式** @return*/@RequestMapping(value = "/api/segment/get/")public String getSegmentId() {//这个key需要和数据库的字段biz_tag保持一致 名称和好短可以自定义return String.valueOf(segmentService.getId("leaf-segment-test").getId());}/*** 雪花算法模式** @return*/@RequestMapping(value = "/api/snowflake/get/{key}")public String getSnowflakeId(@PathVariable String key) {//这里的key无实际意义,但是必须要传可以写死return String.valueOf(snowflakeService.getId(key).getId());}
}
7. 浏览器测试

号段模式

http://localhost/api/segment/get/

在这里插入图片描述

雪花算法模式

http://localhost/api/snowflake/get/key

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代编程语言大 PK,2020 年开发者关心的七大编程语言!

【CSDN 编者按】“如果我们把人类文明想象成汽车的话&#xff0c;那么软件开发行业就相当于汽车的引擎&#xff0c;编程语言就像引擎的燃料。”作为一名开发者&#xff0c;需跟随技术潮流的发展来学习新技术。2020年&#xff0c;你有计划新学一门编程语言吗&#xff1f;本文作者…

一文读懂深度学习:从神经元到BERT

阿里妹导读&#xff1a;自然语言处理领域的殿堂标志 BERT 并非横空出世&#xff0c;背后有它的发展原理。今天&#xff0c;蚂蚁金服财富对话算法团队整理对比了深度学习模型在自然语言处理领域的发展历程。从简易的神经元到当前最复杂的BERT模型&#xff0c;深入浅出地介绍了深…

启动redis闪退/失败

问题&#xff1a;正常启动redis-server.exe时&#xff0c;项目出现闪退情况 解决方式&#xff1a;按照下图完整流程输出即能正常启动

阿里开发者招聘节 | 2019阿里巴巴技术面试题分享:20位专家28道题

为帮助开发者们提升面试技能、有机会入职阿里&#xff0c;云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次将陆续放出&#xff08;面试题官方参考答案将在专辑结束后统一汇总分享&#xff0c;点此进入答题并围观他…

uniapp页面传参使用encodeURIComponent转义特殊符号

答主在uniapp页面跳转传imgUrl&#xff08;地址为&#xff1a;https://metting.oss-cn-beijing.aliyuncs.com/20210615153312771.9AT5NO.jpg?Expires4779415992&OSSAccessKeyIdLTAI4GKXzR3eLCustbbLYxFf&Signature***********&#xff09;时&#xff0c;图片无法正常显…

论程序员的自我修养——我在阿里干了十年开发

究竟是努力重要&#xff0c;还是选择重要&#xff1f;资深阿里技术人毕玄师兄有着自己的见解。 毕玄&#xff0c;阿里巴巴基础设施事业群负责人&#xff0c;资深技术专家。打造了阿里目前使用最为广泛的核心中间件之一的服务框架&#xff1b;设计并带领团队实现了阿里技术发展…

一文了解 Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控!...

作者 | Richard_Yi责编 | 徐威龙稿源 | 掘金封图| CSDN 下载于视觉中国本文为作者个人经验&#xff0c;供大家参考。去年我们项目做了微服务1.0的架构转型&#xff0c;但是服务监控这块却没有跟上。这不&#xff0c;最近我就被分配了要将我们核心的微服务应用全部监控起来的任务…

分布式6大核心专题_分布式Session

文章目录一、Session存在服务器上还是tomcat中&#xff1f;1. 创建springboot项目2. 启动项目3. 调用登录接口4. 调用获取用户信息接口5. 重启tomcat调用获取用户信息接口二、Session与Cookie的关系三、传统Session3.1. 启动项目3.2. 浏览器测试四、分布式Session解决方案4.1. …

Nacos: Namespace 和 Endpoint 在生产环境下的最佳实践

随着使用 Nacos 的企业越来越多&#xff0c;遇到的最频繁的两个问题就是&#xff1a;如何在我的生产环境正确的来使用 namespace 以及 endpoint。这篇文章主要就是针对这两个问题来聊聊使用 nacos 过程中关于这两个参数配置的最佳实践方式。 namespce 关于 namespace &#x…

java.lang.ArrayIndexOutOfBoundsException:数组下标越界越界

前台vue初始化 pinIds:[]&#xff0c;但是当pinIds前台查询条件传值为空时&#xff0c;pinIds[0]、pinIds[1]取不到值&#xff0c;就会报数组下标越界越界 改为 就可以了

如何实现“持续集成”?闲鱼把研发效率翻了个翻

阿里妹导读&#xff1a;业务的快速发展&#xff0c;需要我们更快速地响应&#xff0c;和更高质量产品的交付。如何从原来大(xiao)迭(pu)代(bu)的开发模式切换为精益开发模式&#xff1f;以 2-1-1&#xff08;2周需求交付周期&#xff0c;1周需求开发周期&#xff0c;1小时集成时…

分布式Session解决方案_Spring Session + Redis

接上一篇&#xff1a;分布式6大核心专题_分布式Session https://gblfy.blog.csdn.net/article/details/113802195 文章目录1. 安装redis服务并启动2. 引入Spring Session组件3. 分别启动8081端口和8082端口4. 调用8081登录接口5. 调用8081获取用户信息接口6. 调用8082获取用户信…

酸了!华为补贴湖北员工每天最高 2000 元

近日&#xff0c;华为员工发帖称&#xff0c;华为将给武汉研究所现场办公的人员&#xff0c;每人补助2000元&#xff08;从2020年1月23日开始算&#xff0c;以湖北发布疫情终止之日截止&#xff09;&#xff0c;湖北以外其他地区1000 元&#xff0c;海外每天150美金&#xff08…

java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String

数据库字段&#xff1a; 数据库中的时间字段handle_time是datatime 前端&#xff1a; xml文件&#xff1a; 运行结果&#xff1a; 原因 这是因为原因是mybatis 中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串进行对比判断则会引发异常. 所以在上面…

四年从P7到P9,这个阿里小二的秘诀是给自己挖坑

恶魔有一头精彩的头发。 “紫色、灰色、灰色、雾霾蓝色、黄色、蓝色、紫色、绿色、灰色、绿色。” 若有人问起她的染发史&#xff0c;她能准确地报出过去两年里的所有发色。干脆利落&#xff0c;没半个字多余。 恰如她在工作中给大多数人的印象&#xff1a;语速极快&#xf…

达摩院首席数据库科学家李飞飞:云原生新战场,我们如何把握先机?

阿里妹导读&#xff1a;云计算大潮来袭&#xff0c;传统数据库市场正面临重新洗牌的情境&#xff0c;包括云数据库在内的一批新生力量崛起&#xff0c;动摇了传统数据库的垄断地位&#xff0c;而由云厂商主导的云原生数据库则将这种“改变”推向了高潮。 云时代的数据库将面临怎…

什么? 搞不定redis分布式锁?

作者&#xff1a;故事凌 分布式锁 1. 什么是分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中&#xff0c;常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源&#xff0c;那么访问这些资源的时候&am…

阿里云CDN技术掌舵人文景:相爱相杀一路狂奔的这十年

提到阿里云CDN&#xff0c;不得不提技术掌舵人姚伟斌&#xff08;文景&#xff09;&#xff0c;虽然他不是团队中最“老”的同学&#xff0c;但他却历经了淘宝业务发展最为飞速的几年&#xff0c;见证了从最初服务淘宝和集团内部的CDN&#xff0c;到如今国内服务客户最多的云CD…

把握数据库发展趋势 DBA应如何避免“踩坑”?

在DTCC 2019大会上&#xff0c;阿里云智能数据库产品事业部高级产品专家萧少聪做了题为《如何构建云时代DBA的知识体系》的演讲&#xff0c;进行云时代以后&#xff0c;IT行业各工种的职责都在发生变化&#xff0c;云数据库使得日常DBA管理实现更多的自动化&#xff0c;大大提高…

DevOps 转型时如何安全融入?对企业产出有何影响?2019年 DevOps 最新现状研究报告解读 | 原力计划...

作者 | liumiaocn责编 | 徐威龙封图| CSDN 下载于视觉中国2019年DORA发布了DevOps的研究报告&#xff0c;迄今为止这已经是DORA的第八次报告的发布。相较于往年的报告&#xff0c;2019年的报告全篇只聚焦于一个要素&#xff1a;安全。在2018年DORA提供了一个包含五个步骤的模型…