分布式唯一ID , 顾名思义 , 是指在全世界任何一台计算机上都不会重复的唯一Id 。
在单机/单服务器/单数据库的小型应用中 , 不需要用到这类东西 。但在高并发、海量数据、大型分布式应用中 , 这类却是构建整个系统的最核心一环 。
设想一下如下场景:
在某个大型电商系统A中 , “订单”这类大数据(比如 , 每天产生1500万条订单)必定不会存储在1台数据库服务器中 , 而是分布式的存储在多台数据库服务器组成的一个集群中(比如 , 1000台数据库服务器组成一个集群) 。由于海量数据+高并发等特性时常会伴随“订单”发生 , 所以 , 如何确保“订单Id”在整个系统中唯一不重复 , 已经有些设计难度了 。
若此时 , 另外一家公司的电商系统B , 要与你家的电商系统A合并(甚至还有更多公司的C、D、E、等等) , 那么这些系统合并时“订单Id”出现重复的概率是很大的 。要把这些重复修改成唯一 , 又会要费一番不小的改造功夫 , 十分麻烦…
但是 , 若我们一开始就使用分布式唯一Id来实现“订单Id” , 则不会有这些麻烦 , 一切迎刃而解 , 且十分轻松…
以下代码提供了十分完善的分布式唯一Id生成(支持.Net/.Net Core/.Net Framework) , 可在需要时采用:
using DeveloperSharp.Framework.CoreUtility;//从NuGet引用DeveloperSharp包------------------------ IUtility IU = new Utility(); var Id = IU.GenerateId("Order");//产生分布式唯一Id附注:其实 , 无论是单机小型应用 , 还是多机大型分布式应用 , 现在都应采用“分布式唯一Id”作为数据库中表的“主键” 。因为与所谓可读性、自增Id比起来 , 它的扩展性好太多、太多...
IUtility.GenerateId方法详细说明如下:
【.Net下的分布式唯一ID】GenerateId声明:string GenerateId(string Prefix)用途:生成主键Id (此处生成的是一种分布式唯一Id)参数:(1)string Prefix -- 前缀词返回:String -- 主键Id【附注】:文中所有示例均已成功运行通过!!技术交流/支持 , 请微信扫描二维码 , 备注“进群”!
经验总结扩展阅读
- Go 源码解读|如何用好 errors 库的 errors.Is 与 errors.As() 方法
- 我的 Kafka 旅程 - Consumer
- 大华海康NVR录像JAVA下载及WEB播放
- cpf是什么意思?
- r7 5800h和i7 11800h哪个好_r7 5800h和i7 11800h对比
- iQOO8为什么不建议买_iQOO8的缺点
- 华为手机怎么左右截屏(华为手机下滑截屏没了)
- .NET 反向代理 YARP 代理 GRPC
- 小米11s配置参数_小米11s配置消息
- 新垣结衣下海了吗 新垣结衣