.NET集成DeveloperSharp实现分布式唯一ID

🏆作者:科技、互联网行业优质创作者
🏆专注领域:.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造
🏆欢迎关注我(Net数字智慧化基地),里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你快速成长。升职+涨薪!!

分布式唯一Id,顾名思义,是指在全世界任何一台计算机上都不会重复的唯一Id。

在单机/单服务器/单数据库的小型应用中,不需要用到这类东西。但在高并发、海量数据、大型分布式应用中,分布式唯一Id却是构建整个系统的最核心一环。

设想一下如下场景:

在某个大型电商系统A中,“订单”这类大数据(比如,每天产生1500万条订单)必定不会存储在1台数据库服务器中,而是分布式的存储在多台数据库服务器组成的一个集群中(比如,1000台数据库服务器组成一个集群)。由于海量数据+高并发等特性时常会伴随“订单”发生,所以,如何确保“订单Id”在整个系统中唯一不重复,已经有些设计难度了。

若此时,另外一家公司的电商系统B,要与你家的电商系统A合并(甚至还有更多公司的C、D、E、等等),那么这些系统合并时“订单Id”出现重复的概率是很大的。要把这些重复修改成唯一,又会要费一番不小的改造功夫,十分麻烦…

但是,若我们一开始就使用分布式唯一Id来实现“订单Id”,则不会有这些麻烦,一切迎刃而解,且十分轻松…

DeveloperSharp包中,提供了全网最完善的分布式唯一Id生成工具,使用示例如下:

若是在.Net Core环境下,代码如下:

using DeveloperSharp.Framework.CoreUtility; //从NuGet引用DeveloperSharp包
--------------------------

   //首先在Startup.cs或Program.cs文件中进行工具预载
   Services.AddTransient<IUtility, Utility>();
--------------------------

   //IU是在相关文件中,通过依赖注入方式获取的IUtility类型对象
   var Id = IU.GenerateId("Order");//产生分布式唯一Id

若是在.Net Framework环境下,代码如下:

using DeveloperSharp.Framework.CoreUtility;//从NuGet引用DeveloperSharp包
------------------------

     IUtility IU = new Utility();
     var Id = IU.GenerateId("Order");//产生分布式唯一Id

说明:(1)“分布式唯一Id”的长度较长,具有全球唯一性,最早起源于facebook、twitter的应用。

           (2)“分布式唯一Id”比GUID更好。GUID在分布式、高并发环境下偶尔还是会有重复出现,而且它是无序的,会导致数据库查询性能下降,而“分布式唯一Id”是相对有序的。

           (3)网上自称分布式唯一Id、GUID、雪花Id、等的工具有很多,但它们生成的Id一般实现不了“全球唯一性”。文本是极少数真正意义上能实现“全球唯一性”的Id工具。

经验:其实,无论是单机小型应用,还是多机大型分布式应用,从今天开始,你都应采用“分布式唯一Id”作为数据库中、每个表的“主键”。因为与所谓可读性、长短、自增Id比起来,它的扩展性好太多、太多... 

GenerateId方法详细说明如下:

GenerateId(Async)

声明:string GenerateId(string Prefix)

用途:生成主键Id (此处生成的是一种分布式唯一Id)

参数:(1)string Prefix  --  前缀词

返回:String   --  主键Id

🏆欢迎关注我(Net数字智慧化基地),里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你升职+涨薪!!
🏆点击下方卡片关注公众号,里面有很多大佬的技术文章,能助你快速成长。还可免费领取如下15个视频教程!

回复'面试',获取C#/.NET/.NET Core面试宝典

回复'C#',领取零基础学习C#编程

回复'NET',领取.NET零基础入门到实战

回复'Linux',领取Linux从入门到精通

回复'wpf',领取高薪热门【WPF上位机+工业互联网】从零手写实战

回复'Modbus',领取初识C#+上位机Modbus通信

回复'PLC',领取C#语言与西门子PLC的通信实操

回复'blazor',领取blazor从入门到实战

回复'TypeScript',领取前端热门TypeScript系统教程

回复'vue',领取vue前端从入门到精通

回复'23P',领取C#实现23种常见设计模式

回复'MongoDB',领取MongoDB实战

回复'Trans',领取分布式事务

回复'Lock',领取分布式锁实践

回复'Docker',领取微服务+Docker综合实战

回复'K8s',领取K8s部署微服务

回复'加群',进.NET技术社区交流群 

.NET/C#大型项目研发必备(3)--数据库的负载均衡 本文技术点思路梳理: 创建用来实施负载均衡的一组数据库。 通过DeveloperSharp.xml来配置负载均衡策略。 在App.config/Web.config中添加链接DeveloperSharp.xml的appSettings节点。 创建基于DeveloperSharp.dll组件的“负载均衡器”类(本篇为:StudentLB类)。 通过“负载均衡器”产生的ConnectionString链接数据库。 为了演示数据库的负载均衡(Load Balance),我们先创建三个数据库,它们的名字分别为Y 阅读详情

相关推荐

.NET集成DeveloperSharp实现分布式唯一Id

在某个大型电商系统A中,“订单”这类大数据(比如,每天产生1500万条订单)必定不会存储在1台数据库服务器中,而是分布式的存储在多台数据库服务器组成的一个集群中(比如,1000台数据库服务器组成一个集群)。若此时,另外一家公司的电商系统B,要与你家的电商系统A合并(甚至还有更多公司的C、D、E、等等),那么这些系统合并时“订单Id”出现重复的概率是很大的。经验:其实,无论是单机小型应用,还是多机大型分布式应用,从今天开始,你都应采用“分布式唯一Id”作为数据库中、每个表的“主键”。

.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 955

.NET集成DeveloperSharp实现数据库操作

int affectedRows2 = IDA.SqlExecute("insert into t_Student(Name,Age)values(@N,@A)", new { N = "孙悟空", A = 200 });IDA.SpExecute("Test5", new { N = "杨小伟", B = "1999-02-28 12:03:45", h = 11.023, Id = 2 }, op1, op2, op3);

.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 1706

.NET集成DeveloperSharp实现图片的裁剪、缩放、与加水印

DeveloperSharp系列近期又被制造业ERP、民航飞行App、建筑BIM、电力掌上营业厅、等多家大型采用,站在巨人的肩膀上你能走的更远。图片的裁剪、缩放、与加水印,是任何系统经常要用到的功能,它们现已集成到IUtility工具中,使用十分简便。(具体代码将在文末给出)——理清技术脉络、形成思维体系、获取最佳实践、框架开发能力。🏆专注领域:.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造。注意:X、Y坐标,是以图片左上角为原点而定,单位是像素。

.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 732

【愚公系列】2023年10月 .NET CORE工具案例-DeveloperSharp(数据库访问技术)

数据库访问技术是指访问和操作数据库的方法和技术。数据库访问技术主要有以下几种:SQL:SQL(Structured Query Language)是一种专门用于管理关系型数据库的语言,它可以用来进行数据的增删改查,以及对数据库表、视图等进行创建、修改和删除等操作。JDBC:JDBC(Java Database Connectivity)是一种用于在Java应用程序中访问数据库的API。它提供了一系列的接口和类,可以通过Java代码连接和操作各种数据库。

愚公智库 9629

.NET集成DeveloperSharp生成分布式唯一ID

在某个大型电商系统A中,“订单”这类大数据(比如,每天产生1500万条订单)必定不会存储在1台数据库服务器中,而是分布式的存储在多台数据库服务器组成的一个集群中(比如,1000台数据库服务器组成一个集群)。若此时,另外一家公司的电商系统B,要与你家的电商系统A合并(甚至还有更多公司的C、D、E、等等),那么这些系统合并时“订单Id”出现重复的概率是很大的。经验:其实,无论是单机小型应用,还是多机大型分布式应用,从今天开始,你都应采用“分布式唯一Id”作为数据库中、每个表的“主键”。//产生分布式唯一Id

.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 1716

【愚公系列】2023年10月 .NET CORE工具案例-DeveloperSharp(分布式唯一Id)

分布式唯一ID(Distributed Unique ID,简称DUID)是指在分布式系统中,为了避免ID冲突而使用的一种ID生成方式。在分布式系统中,多个节点同时生成ID,如果采用单机自增序列的方式,容易造成ID重复的问题。为了解决这个问题,产生了DUID的概念。常见的DUID生成方式有:UUID:通用唯一识别码,是一种由网络软件使用的标准,用于标识信息的唯一性。UUID是根据时间戳、硬件设备等多个因素生成的,因此非常难以重复。

愚公智库 5万+

.NET/C#大型项目研发必备(1)--分布式唯一Id

UUID全球通用唯一识别码,顾名思义,是指在全世界任何一台计算机上都不会重复的唯一Id。 在单机/单服务器/单数据库的小型应用中,不需要用到这类东西。但在高并发、海量数据、大型分布式应用中,UUID/GUID这类却是构建整个系统的最核心一环。 设想一下如下场景: 在某个大型电商系统A中,“订单”这类大数据(比如,每天产生1500万条订单)必定不会存储在1台数据库服务器中,而是分布式的存储在多台数据库服务器组成的一个集群中(比如,1000台数据库服务器组成一个集群)。由于海量数据+高并发等特性时常会伴随“订单

首席架构师 ◆ 顶尖领航员 ◆ 研发金字塔 ◆ 互联网基础架构 1959

【朝夕教育】2023年10月 .NET CORE工具案例-DeveloperSharp(分布式唯一Id)

分布式唯一ID(Distributed Unique ID,简称DUID)是指在分布式系统中,为了避免ID冲突而使用的一种ID生成方式。在分布式系统中,多个节点同时生成ID,如果采用单机自增序列的方式,容易造成ID重复的问题。为了解决这个问题,产生了DUID的概念。常见的DUID生成方式有:UUID:通用唯一识别码,是一种由网络软件使用的标准,用于标识信息的唯一性。UUID是根据时间戳、硬件设备等多个因素生成的,因此非常难以重复。

微软MVP Eleven 540

为什么.NET/C#开发者都换用此“分布式唯一Id“做主键

在某个大型电商系统A中,“订单”这类大数据(比如,每天产生1500万条订单)必定不会存储在1台数据库服务器中,而是分布式的存储在多台数据库服务器组成的一个集群中(比如,1000台数据库服务器组成一个集群)。若此时,另外一家公司的电商系统B,要与你家的电商系统A合并(甚至还有更多公司的C、D、E、等等),那么这些系统合并时“订单Id”出现重复的概率是很大的。经验:其实,无论是单机小型应用,还是多机大型分布式应用,从今天开始,你都应采用“分布式唯一Id”作为数据库中、每个表的“主键”。

.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 473

.NET UUID

参考 .NET中大型项目开发必备(1)--分布式唯一Id - DeveloperSharp - 博客园 (cnblogs.com) 环境搭建 DeveloperSharp builder.Services.AddTransient<IUtility, Utility>(); 测试 ``` using DeveloperSharp.Framework.CoreUti...

xy的博客 233

【朝夕教育】2023年11月 .NET CORE工具案例-DeveloperSharp(Web服务负载均衡)

Web服务负载均衡是一种将Web服务请求分发到多个服务器上的技术,以提高系统的可靠性、可用性和性能。具体来说,它会将用户的请求分发到不同的服务器上,每个服务器只处理一部分请求,从而减轻单一服务器的负担,避免单点故障,并提高系统的响应速度和吞吐量。Web服务负载均衡可以实现多种算法,如轮询、加权轮询、随机、最少连接等。其中,轮询算法是最简单的一种,它将请求依次分发给每个服务器,直至所有服务器都获得请求。加权轮询算法则是在轮询的基础上,为每个服务器设置不同的权重,以更加合理地分配请求。

微软MVP Eleven 1万+

.NET集成DeveloperSharp实现强大的AOP

若是在.Net Core环境下,我们只需要把DeveloperSharp.json文件放到程序执行目录中(即bin目录下与dll、exe等文件的同一目录中,放错了位置会报错)(注意:有些.Net Core版本在Visual Studio“调试”时,不会在bin目录下生成全部的dll、exe,此时需要把此配置文件放在应用程序的“根目录”下)。正确的使用AOP,甚至能对传统的软件架构设计,产生颠覆性的影响,如超级战士出场一般,让所有人刮目相看,完全耳目一新!这样的一个业务案例,你以前会怎么设计这个程序?

.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 1266

【朝夕教育】2023年10月 .NET CORE工具案例-DeveloperSharp(数据库访问技术)

数据库访问技术是指访问和操作数据库的方法和技术。数据库访问技术主要有以下几种:SQL:SQL(Structured Query Language)是一种专门用于管理关系型数据库的语言,它可以用来进行数据的增删改查,以及对数据库表、视图等进行创建、修改和删除等操作。JDBC:JDBC(Java Database Connectivity)是一种用于在Java应用程序中访问数据库的API。它提供了一系列的接口和类,可以通过Java代码连接和操作各种数据库。

微软MVP Eleven 2万+

.NET集成DeveloperSharp实现AOP(经典+扩充)

AOP(Aspect Oriented Programming)是“面向横切面编程”,主要是用来对程序/模块进行解耦。怎么理解??

寒冰屋的专栏 400

.Net全网最火RabbitMQ操作【强烈推荐】

【前言】本文自1年前的1.0版本推出以来,已被业界大量科技公司采用。同时也得到了.Net圈内多位大佬的关注+推荐,文章也被多家顶级.Net/C#公众号转载。现在更新到了7.0版本,更好的服务各位.Neter。【正文】支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac。RabbitMQ作为一款主流的消息队列工具早已广受欢迎...

zls365365的博客 428

.NET/C#大型项目研发必备(13)--DataAccess数据库访问技术(续)

常见的ORM技术(比如:Entity Framework,Dapper,SqlSugar,NHibernate,等…),它们不是在做Sql语句的程序化变种,就是在做Sql语句的面向对象化。缺点显而易见:把简单的Sql语句复杂化、不伦不类、非标的各家自定义语法、难以大规模统一应用… 而ADO.NET也存在操作复杂、不同类型数据库(SqlServer、MySql、Oracle、等)操作代码需要重构等缺点。 本文要介绍的主角-DeveloperSharp框架中的ORM数据库访问技术(续),则巧妙的规避了上述各种

首席架构师 ◆ 顶尖领航员 ◆ 研发金字塔 ◆ 互联网基础架构 1607

【朝夕教育】2023年11月 .NET CORE工具案例-DeveloperSharp(Redis缓存)

Redis是一个高性能的开源键值对存储系统,可以用作数据库、缓存、消息中间件等多种用途。Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合,可以对这些数据结构进行快速的读写操作。Redis还提供了一些高级特性,如事务、发布/订阅、Lua脚本等。Redis的作用和应用场景包括:缓存:Redis可以作为缓存来加速读取频繁的数据,在访问数据库之前将数据存储在Redis中,从而加快数据的响应速度。

微软MVP Eleven 504
上一篇: .NET集成DeveloperSharp实现CORS跨域访问
下一篇: Translumo:基于.NET开发的开源的屏幕实时翻译工具
数字智慧化基地
博客等级 码龄15年 1694粉丝 · 132原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值