• .Net下的分布式唯一ID


    分布式唯一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方法详细说明如下:

    复制代码
    GenerateId
    
    声明:string GenerateId(string Prefix)
    
    用途:生成主键Id (此处生成的是一种分布式唯一Id)
    
    参数:(1string Prefix  --  前缀词
    
    返回:String   --  主键Id
    复制代码

     

    【附注】:文中所有示例均已成功运行通过!!技术交流/支持,请微信扫描二维码,备注“进群”!

  • 相关阅读:
    java生成自定义长度的唯一随机字符串
    Wnmp服务安装并结合内网穿透实现公网远程访问——“cpolar内网穿透”
    frp 从0搭建内网穿透
    给灭霸点颜色看看
    高并发系统简单玩,Alibaba全新出品亿级并发设计速成笔记真香
    python之numpy
    Spring Security 如何防止 Session Fixation 攻击
    使用Jest测试接口时间
    2022.11.4 微纳制造技术
    大学生个人网页模板 简单网页制作作业成品 极简风格个人介绍HTML网页设计(舞蹈培训网页)
  • 原文地址:https://www.cnblogs.com/dotnet-college/p/16740139.html