id分配的几种方式
方式一:单点自增分配。全局由一个模块来负责生成id,可保证id从0开始连续递增,数据一般放在本地文件。简洁,但致命的问题是单点故障会导致服务整体不可用。
方式一改进:为该模块提供主从复制的能力,或者干脆将数据放在mysql里,利用mysql的主从复制,都一定程度上增强了可用性,减轻了单点故障的影响。
方式二:随机/散列分配。通过一些hash算法,比如以时间+随机串为key的md5生成一个唯一的id,关键点在于算法和key的选择要避免冲突。
最典型的就是UUID,UUID的标准型式包含32个16进位数字,以连字号分为五段,形式为8-4-4-4-12的32个字符,如550e8400-e29b-41d4-a716-446655440000。libuuid提供了以时间或者随机数为基的UUID。UUID的最大缺点是位数太长,128位,在绝大多数应用和语言里对128位整数的支持都不好。
方式二改进:有条件的进行压缩。twitter的snowflake使用 time – 41 bits + configured machine id – 10 bits + sequence number – 12 bits的形式分配id,共63位,最高部分使用毫秒级的时间戳,保证了一定程度的有序性,机器标示使用10位,最多可容纳1024个分配器,最后的12位序列号可以支持在1ms内产生4096个不重复的id。从工程角度,这些都足够用了。但对系统时间的依赖性非常强,需要关闭ntp的时间同步功能,或者当检测到ntp时间调整后,拒绝分配id。
我们的需求和多IDC的挑战
我们的实际情况是:
· 一些老模块依赖于从0开始自增的id,数据在内存或者文件中以id为偏移来存储的。
· 一些系统依赖于id的增长做数据分片,例如按取除后分表,因此要求id在整体上是比较均衡的增长。
· 在多IDC环境,高延迟加不稳定的网络环境,要求各个分配器彼此之间无需协作,或者可以容忍短期内不可协作。
· 对于一些古董级的老系统来说,还在使用32位的id,63位id还是太大了。
因此,我们需要一种分布式高可用、从0开始自增、基本均衡、能够兼容老系统的id分配方案。
取模或分段的分布式分配
基于方案一再改进一步,将整个id空间按取模或分段等分为若干个独立的id子空间,每个id子空间由一个独立的分配器负责。
优点:简单,各个id分配器无需协作,即使发生网络划分时,也可保证可用性和id的不冲突。
如果在国际化环境的多IDC里进行部署,需要预先将id空间划分为N份,每个国家里部署若干份。每个IDC内应用只连本IDC的id分配服务。
在均衡性上的不足:在同一个IDC内,均衡性可以在接入层均衡算法保证,但是在多个IDC里,ID分配器个数的比例和id增长的服务往往是不吻合的,因此在多个IDC内,id是无法保证均衡增长的。
均衡性上的改进
将id分配分为两层:
· 上层的“id分配器”对应用暴露,提供一次申请一个id的接口,一般本IDC的应用只连本IDC的id分配器。
·下层的“段分配器”对“id分配器”提供服务。id分配器“知晓”所有IDC的所有段分配器的存在,使用均衡策略向段分配器申请一个id段,当所持有的id段快耗尽时,再请求下一个段。
唯一性:全局中,根据分片规则,每个段分配器会持有不同的id段。例如下表中,每个段的大小是100,段分配器A持有分片0和分片1。对于每个分片而言,是一个个跳跃的id段。特殊的,当段大小为1时,段分配器就是改进前的id分配器。
均衡策略:均衡策略在id分配器来实现,简单的讲,是一个轮询策略。每个id分配器会轮询下游段分配器的状态,并选中id段的最小的那个,然后发起id段申请。由于不会加锁,当多个id分配器同时竞争时,可能会出现获取的id段不是全局最小的,可以附加一些策略来调优,比如再多获取一次,并本地排序。从整体上而言,id还是比较均衡的,可满足需求。
可用性:当发生网络划分时,本IDC的id分配器可以只连接本IDC的段分配器,成功的申请到id段。整个系统可容忍一定时间内不可协作,长时间不可协作的唯一危害是id增长不均衡,此时,就退化为改进前的方案。
多IDC环境的适应性:id分配器需要和所有IDC的段分配器交互,但是交互频率很低,同时和提供id分配服务是两个独立的阶段,不会受到多IDC网络环境的干扰。
效果
改进后的id分配方案成功的满足了图片系统重构过程中的兼容需求,并且部署在全球多个IDC内为图片系统提供全局唯一的id分配服务。
相关推荐
传统IDC机房主要采用UPS(不间断电源系统)来提供电源保障,但这类系统存在效率低下和可靠性不高的问题,因而需要寻找更加高效可靠的电源解决方案。 分布式电源(DPS)作为一种新型的IDC机房供电方式,它的提出旨在...
首先,从 IDC 数据中心运营建设目标来看,这个方案旨在提供高效、可靠、安全和灵活的数据中心运营环境,满足企业对数据存储和计算资源的需求。为达到这个目标,IDC 数据中心运营建设方案将从整体架构、服务模式和...
首先,标题“中国银行业 IT 解决方案市场份额 idc报告2018”暗示本报告来源于IDC,即国际数据公司,这是一家全球性的市场研究机构,专门提供包括IT与通信行业在内的各类市场分析报告。这份报告的关注点是中国银行业...
IDC机房运维解决方案的核心是数据中心基础环境可视化管理系统,这个系统通过集成动环监控、安防监控、IT系统监控等数据,提供直观高效的3D仿真展示功能,实现数据中心运行状态集中可视化展现。 知识点2:资产管理和...
IDC 数据中心运营建设方案旨在提供灵活、可靠和高效的运营环境,满足企业对 IT 基础设施的需求。该方案涵盖了 IDC 数据中心的所有组件,包括服务器、存储、网络和安全等,并提供了详细的技术方案和实施步骤。
IDC中国银行业IT 解决方案市场预测,2016–2020 2015 年,中国银行业IT 解决方案市场的整体规模突破200 亿元,达到为225.2 亿元,比2014 年增 长了23.5%。IDC 预测该市场2016 到2020 年的年均复合增长率为21.90%,到...
IDC行业主机托管业务(网站瞬时恢复、网站防挂马)增值服务方案 IDC行业主机托管增值服务方案
分布式光纤测温系统是利用光纤拉曼散射效应和光时域反射测量技术,通过单根光纤进行温度监测和信号传输的一...通过系统化的环境监控和精确控制,分布式光纤测温系统为IDC机房管理提供了一个高效、可靠的技术解决方案。
华为的精细化运营方案涵盖机房环境、基础网络、服务器、应用、虚拟化、增值服务和业务运营等多个层面,采用先进的管理技术和理念,实现跨平台和分布式管理。这一方案旨在提高运营效率,降低管理成本,确保业务的稳定...
IDC 数据中心机房设计整体方案 IDC 数据中心机房设计整体方案是指在构建 IDC 数据中心机房时所需考虑的一系列设计要素和要求。该方案涵盖了机房的总体设计、各子系统的组成、机房的设计原则、 UPS 工程、空调及通风...
【保障IDC安全:分布式HIDS集群架构设计】 在当前互联网安全形势日益严峻的背景下,企业信息安全至关重要,尤其是数据中心(IDC)的服务器安全。主机型入侵检测系统(HIDS)成为保护IDC安全的重要工具,用于检测并预防...
- **水平切分:** 将同一表格中的数据根据某种规则分配到不同的数据库中,比如可以按照用户ID的哈希值进行分配。 **实践案例:** - 使用Table Partitioning(表分区)技术,将一张大表分为多个小表,每个小表存放一...
精细化运营方案旨在提升机房的管理水平,通过集成管理机房环境、网络、服务器、应用、虚拟化、增值服务和业务运营等,实现跨平台和分布式管理。该方案有助于降低人为错误,提高系统的稳定性和安全性,同时降低运维...
IDC机房方案是指一个现代化的数据中心的设计和实施方案,旨在提供一个高效、可靠、安全和环保的数据存储和处理环境。本文将对IDC机房方案的设计进行详细的解释和分析,涵盖了机房设计、建筑部分、电气部分等多个方面...
目前有两个常见方案,一是将服务器资源放置不同运营商的IDC,二是直接接入支持BGP协议的IDC。在此之后,我们还要考虑监控不同运营网络访问业务平台的质量问题,例如骨干网络路由延时或调度不合理甚至网络故障,导致访问...
IDC云数据中心机房设计整体方案 IDC云数据中心机房设计整体方案是一种技术创新型的解决方案,旨在将云计算技术与数据中心机房设计相结合,实现数据中心机房的高效、可靠、安全和灵活性。下面是该方案的详细知识点:...
总结,IDC机房的能耗投资分析与节能解决方案是一项复杂而重要的任务,涉及到多个层面的技术应用和经济考量。通过实施有效的节能措施,不仅可以降低运营成本,而且有助于实现绿色可持续的数据中心发展。
业务多活架构和分布式CAP理论是构建高可用、高并发系统的关键技术,它们在面对大规模流量冲击时展现出强大的适应性和稳定性。在这个领域,蚂蚁金服的实践经验尤其值得深入研究。 首先,业务多活架构(Multi-Active ...