首页 > 编程语言 >(一)Bluebell用户表结构设计及用户ID生成(雪花算法)

(一)Bluebell用户表结构设计及用户ID生成(雪花算法)

时间:2024-09-23 17:46:13浏览次数:8  
标签:err Bluebell snowflake 用户 ID user NULL id

一、用户表结构

在mysql数据库中创建user表

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) NOT NULL,
`username` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`password` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
`email` varchar(64) COLLATE utf8mb4_general_ci,
`gender` tinyint(4) NOT NULL DEFAULT '0',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`) USING BTREE,
UNIQUE KEY `idx_user_id` (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

二、雪花算法生成用户ID

分布式ID生成器

分布式ID的特点

递增性:确保⽣生成ID对于⽤用户或业务是递增的。
⾼高可⽤用性:确保任何时候都能⽣生成正确的ID。
⾼高性能性:在⾼高并发的环境下依然表现良好。

使用场景

不不仅仅是⽤用于⽤用户ID,实际互联⽹网中有很多场景需要能够⽣生成类似MySQL⾃自增ID这样不不断增⼤大,同时⼜又
不不会重复的id。以⽀支持业务中的⾼高并发场景。
⽐比较典型的场景有:电商促销时短时间内会有⼤大量量的订单涌⼊入到系统,⽐比如每秒10w+;明星出轨时微
博短时间内会产⽣生⼤大量量的相关微博转发和评论消息。在这些业务场景下将数据插⼊入数据库之前,我们需
要给这些订单和消息先分配⼀一个唯⼀一ID,然后再保存到数据库中。对这个id的要求是希望其中能带有⼀一
些时间信息,这样即使我们后端的系统对消息进⾏行行了了分库分表,也能够以时间顺序对这些消息进⾏行行排
序。

雪花算法

雪花算法介绍

image
SnowFlake算法在同⼀一毫秒内最多可以⽣生成多少个全局唯⼀一ID呢?
同⼀一毫秒的ID数量量 = 1024 X 4096 = 4194304,因此爆破是几乎不可能的。

雪花算法的go实现

github.com/bwmarrin/snowflake是一个轻量级的snowflake的Go实现。

package main
import (
"fmt"
"time"
"github.com/bwmarrin/snowflake"
)
var node *snowflake.Node
func Init(startTime string, machineID int64) (err error) {
var st time.Time
st, err = time.Parse("2006-01-02", startTime)
if err != nil {
return
}
snowflake.Epoch = st.UnixNano() / 1000000
node, err = snowflake.NewNode(machineID)
return
}
func GenID() int64 {
return node.Generate().Int64()
}
func main() {
if err := Init("2020-07-01", 1); err != nil {
fmt.Printf("init failed, err:%v\n", err)
return
}
id := GenID()
fmt.Println(id)
}

标签:err,Bluebell,snowflake,用户,ID,user,NULL,id
From: https://www.cnblogs.com/iruan/p/18427496

相关文章

  • ESP32等单片机学习和研究的迷宫-传统和现代-端和云-Arduino IDE和wokwi web
    ESP32等单片机学习和研究的迷宫-传统和现代-端和云-Arduino和wokwiESP32等单片机学习和研究的迷宫-传统和现代-端和云-Arduino和wokwi什么是迷宫?不合适的学习和研究方式,花费大量的精力和时间,收效甚微。这种又称之为学习和研究的“黑洞”出路从传统到现代:降本增效!E......
  • 谷歌浏览器,记住密码后,账户和用户名自动填充了
    解决办法:给el-input加上readonly,foucus时设置为false.参考文章地址:https://blog.csdn.net/yolo3712/article/details/135388592本文介绍了解决在新增用户时,由于浏览器记住密码导致输入框自动填充账号密码问题的方法,通过使用Vue的el-input组件的readonly属性,并配合鼠标聚焦事件......
  • Paper Reading(1)-VarietySound: Timbre-Controllable Video to Sound Generation via U
    VarietySound:Timbre-ControllableVideotoSoundGenerationviaUnsupervisedInformationDisentanglement来源:https://doi.org/10.48550/arXiv.2211.10666https://conferencedemos.github.io/icassp23/主要贡献:1)定义了一个新的任务,称为timbre-controlledvideo-to-audi......
  • 第三方系统和金蝶不做单点登录只做用户名密码验证
    项目背景:第三方系统要使用金蝶云星空系统的用户名和密码,但是不做金蝶系统的单点登录,只做金蝶系统的用户名密码校验前提条件:此帖子涉及到的方法需要部署在金蝶内网,并且能登陆金蝶系统后台数据库的前提条件下1、金蝶内网环境下做个自定义接口程序2、接口引用Kingdee.BOS.dll3、C......
  • LeCun谢赛宁首发全新视觉多模态模型,等效1000张A100干翻GPT-4V,AI视频长度扩展调优技术:E
    LeCun谢赛宁首发全新视觉多模态模型,等效1000张A100干翻GPT-4V,AI视频长度扩展调优技术:ExVideo帮你轻松生成更长、更优质的视频,EVTexture:提升视频分辨率的新方法!利用AI将模糊视频变清晰!近日,LeCun和谢赛宁等大佬,共同提出了这一种全新的SOTAMLLM——Cambrian-1。开创了以视觉为中心的......
  • 超越Sora支持120秒超长AI视频模型免费开玩,免费无限制生成视频的ai,这样的ai你需要吗?附
    超越Sora支持120秒超长AI视频模型免费开玩,免费无限制生成视频的ai,这样的ai你需要吗?附代码及详细搭建步骤,包含全套工具iPhone、Mac、Android直接下载使用。120秒超长AI视频模型来了!不仅超越Sora极限,还免费开源!近日,PicsartAIResarch等团队联合发布了StreamingT2V,可以生成长达1200帧......
  • Android实战之组件化中如何进行版本控制和依赖管理
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点GitSubmodules是Git的一个功能,它允许你将一个Git仓库作为另一个Git仓库的子目录。这个功能在组件化开发中非常有用,因为它允许你将项目分解为多个独立的模块,每个模块都......
  • Android经典实战之组件化原理、优缺点、实现方法?
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点组件化的原理组件化是一种软件架构设计方法,它将复杂的应用程序分解为更小、更易于管理的模块或组件。在Android开发中,组件化允许开发者将应用分割成独立的、可复用的模块,每个......
  • idea运行java项目main方法报build failure错误的解决方法BR
    当在使用IntelliJIDEA运行Java项目的main方法时遇到"BuildFailure"错误,这通常意味着在项目的构建过程中遇到了问题。解决这类问题通常需要系统地检查和调整项目设置、代码、依赖项等多个方面。以下是一些详细的解决步骤,以及一个简单的代码示例,用于展示如何确保Java程......
  • 释放创意潜力! 探索智谱CogVideoX-2b:轻松生成6秒精彩视频的开发者指南!
    文章目录1CogVideoX的背景2创建丹摩实例3配置环境和依赖4模型与配置文件5运行6效果图1CogVideoX的背景CogVideoX的问世标志着视频生成技术的一次质的飞跃。过去,许多技术在效率与质量之间常常难以取得平衡,CogVideoX的3D变分自编码器使得视频数据的压缩......