当前位置: 首页 > news >正文

企业建设网站目的是什么汕头网站建设

企业建设网站目的是什么,汕头网站建设,做网站的一个专题,南通网站建设方案托管1、分布式id使用场景 分布式ID是指在分布式系统中用于唯一标识每个元素的数字或字符串。在分布式系统中,各个节点或服务可能独立运行在不同的服务器、数据中心或地理位置,因此需要一种机制来确保每个生成的ID都是全局唯一的,以避免ID冲突。 …

1、分布式id使用场景

分布式ID是指在分布式系统中用于唯一标识每个元素的数字或字符串。在分布式系统中,各个节点或服务可能独立运行在不同的服务器、数据中心或地理位置,因此需要一种机制来确保每个生成的ID都是全局唯一的,以避免ID冲突。

以下是分布式ID的一些关键特点:

  1. 全局唯一性:分布式ID必须保证在全系统中的唯一性,即使在大规模分布式环境中也能确保没有重复。

  2. 高可用性:分布式ID的生成机制需要高可用,确保在任何时候都能生成ID。

  3. 高性能:ID生成过程应该快速且对系统性能影响小。

  4. 高并发:在高并发场景下,分布式ID生成机制应能支持大量ID的生成。

  5. 无单点依赖:分布式ID的生成不应依赖于单个中心服务,以避免成为系统瓶颈。

  6. 易于分配:分布式ID应易于在各个节点上分配和生成。

  7. 可扩展性:随着系统规模的扩大,ID生成机制应能够水平扩展以满足需求。

  8. 安全性:分布式ID不应包含敏感信息,且不易被预测。

  9. 有序性:虽然不是严格要求,但在某些场景下,有序的ID可以帮助优化数据库存储和查询性能。

2、常见的分布式id生成算法

  • UUID(Universally Unique Identifier):基于特定算法生成的全局唯一标识符。
  • 数据库自增ID:依赖于数据库的自增字段来保证唯一性。
  • Redis生成ID:使用Redis的原子操作来生成唯一ID。
  • Snowflake算法:由Twitter开发的算法,生成一个64位的长整型ID。
  • 分段步长:从数据库批量获取ID段,然后由应用逐步分配。

3、mongodb分布式id解决方案

3.1、分布式id生成规则

MongoDB内置分布式id是指在MongoDB数据库中,有一个内置的机制可以生成全局唯一的、递增的分布式id。这个分布式id被称为ObjectId。每当在MongoDB中创建一个新文档时,都会自动生成一个ObjectId作为该文档的唯一标识符。

mongodb分布式id思想有点类似于雪花算法

ObjectId是一个12字节的唯一标识符,由以下三个部分组成:

  • 时间戳:前4个字节表示该ObjectId的生成时间戳,可以精确到秒级别。这样可以保证新创建的文档的ObjectId总是比旧的文档的ObjectId大。
  • 机器标识符:接下来的3个字节表示MongoDB服务器的唯一标识符,如果是在同一台机器上创建的文档,那么这部分是相同的。
  • 进程标识符:接下来的2个字节是MongoDB进程的唯一标识符,用于区分同一机器上不同的MongoDB进程。
  • 随机数:最后的3个字节是一个随机数,用于避免在同一秒内生成相同的ObjectId。

由于ObjectId是全局唯一的,因此可以在分布式系统中使用它作为文档的唯一标识符,而不需要进行复杂的分布式id生成和管理。

对于一个特定的id,比如6641a6afda7b897ba34d5a81

前4个字节(8个十六进制),即6641a6af,将十六进制转为10进制的1715578543,单位为秒数,再乘以1000得到时间戳毫秒数,用js计算得到的即为生成id的时间(精确到秒

最后3个字节(6个十六进制),即4d5a81,表示一个计数器,用于保证在同一秒产生的id不重复。3个字节,总共有3*8位,最大可表示2^24=16777216,一千六百多万,绝对够用的。

3.2、不同集合也能保证全局唯一??

网上大部分都是说这个id只保证在同一个集合(表)里是唯一的,在不同集合是没有保证的。也就是说,假设有A,B,C三张表,自动生成的id保证在三张表内部是唯一的,但不同表之间的id可以重复。针对这个说法,笔者做了一个演示。

循环1w次,每次循环生成表1的id和表2的id,分别把生成id放到一个有序的集合里。

最后发现两个集合没有交集,也就是说两个表的id不会重复,生成的id是全集合唯一的

   public void testUid() {Set<String> set1 = new LinkedHashSet<>();Set<String> set2 = new LinkedHashSet<>();for (int i = 0; i < 10000; i++) {Table1 t = new Table1();table1Repository.insert(t);set1.add(t.getId());Table2 t2 = new Table2();table2Repository.insert(t2);set2.add(t2.getId());}System.out.println(set1);System.out.println(set2);System.out.println("两个表id交集" + Sets.intersection(set1, set2));}

从生成的id, 表1的第一个id为e9,表2的第一个元素为ea,表1的第二个id为eb,表2的第二个元素为ec... 刚好是十六进制的递增顺序。

至于出现这种情况是否为巧合,可能需要从mongodb源码找到答案。

3.3、客户端生成API

虽然mongodo生成的id是全局唯一的,但过度依赖数据库生成id可能会给数据库带来压力,因此,也可以选择客户端api在应用程序内部生成id,再设置到数据库里。(如下为java版本相关API,存放于org.mongodb.bson依赖)

http://www.hkea.cn/news/184963/

相关文章:

  • 乐从网站建设公司北京seo优化推广
  • 如何在网上接做网站的小项目市场监督管理局电话
  • 淘宝购物站优化
  • 石家庄最新疫情轨迹河南网站优化公司哪家好
  • 网站色彩搭配服务器ip域名解析
  • 哪个网站专业做安防如何注册域名网站
  • 穆棱市住房和城乡建设局网站关键词词库
  • 成都网站建设市场什么是网络营销的核心
  • 深圳找人做网站廊坊优化外包
  • 衡阳市城市建设投资有限公司网站湖南企业seo优化报价
  • css做网站常用百度权重优化软件
  • 合合肥网站建设制作网站用什么软件
  • 杭州网站设计公司推荐网络推广与优化
  • 移动惠生活app下载网址荆门网站seo
  • 做网站很赚钱吗关键词自助优化
  • wordpress小工具里的用户中心南京谷歌优化
  • 网站开发中茶叶网络营销策划方案
  • 临海市住房与城乡建设规划局 网站目前最新的营销模式有哪些
  • 高校建设网站的特色如何建立一个网站
  • 公司做网站域名归谁搜索引擎营销策划方案
  • 怎么做外贸个人网站seo综合查询工具可以查看哪些数据
  • 黑客网站盗qq百度seo公司整站优化
  • 网页设计代码不能运行seo的中文名是什么
  • 灵溪网站建设外贸网站谷歌seo
  • 网站开发系统设计产品推销
  • 不用代码做网站 知乎百度引流推广怎么收费
  • 怎么看网站后台什么语言做的产品全网营销推广
  • 可以做宣传图的网站网络销售管理条例
  • 做书籍封皮的网站制作网站平台
  • 1网站建设公司长沙网站到首页排名