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

网站的运营维护企业网站建设的公司

网站的运营维护,企业网站建设的公司,高埗镇网站建设公司,品牌营销策划推广1. 核心需求 全局唯一:确保分布式环境下生成的ID无冲突。 高可用:服务无单点故障,99.99%可用性。 低延迟:ID生成响应时间控制在毫秒级。 趋势递增:对数据库索引友好(如InnoDB的B树索引)。 可…
1. 核心需求
  • 全局唯一:确保分布式环境下生成的ID无冲突。

  • 高可用:服务无单点故障,99.99%+可用性。

  • 低延迟:ID生成响应时间控制在毫秒级。

  • 趋势递增:对数据库索引友好(如InnoDB的B+树索引)。

  • 可扩展:支持水平扩展,适应业务增长。

  • 容灾能力:应对时钟回拨、节点宕机等异常场景。


2. 常见方案对比
方案优点缺点适用场景
UUID简单、本地生成、无中心化依赖无序、存储空间大、索引效率低临时标识、非数据库主键
数据库自增ID递增、易实现性能瓶颈、分库分表困难、单点风险小规模单体应用
Redis原子操作高性能、可生成有序ID依赖持久化、集群扩展复杂中等并发、允许短暂数据丢失
Snowflake算法高性能、趋势递增、去中心化时钟回拨问题、机器ID分配需管理高并发分布式系统
号段模式批量获取、降低数据库压力需预分配号段、故障时可能浪费号段分库分表、中高并发
Leaf/美团方案结合号段与Snowflake,解决时钟问题架构较复杂、依赖外部存储高并发且要求严格递增

3. 基于Snowflake的改进方案设计
Snowflake原始结构
  • 64位ID结构
    0 | 时间戳(41位) | 机器ID(10位) | 序列号(12位)

    • 时间戳:毫秒级,可使用约69年。

    • 机器ID:支持1024个节点。

    • 序列号:每毫秒可生成4096个ID。

改进点

1.解决时钟回拨

  • 方案1:关闭时钟同步,依赖本地时钟(风险高)。

  • 方案2:时钟回拨时等待或抛出异常,并记录告警。

  • 方案3:扩展时间戳为“时间戳+逻辑时钟”,如百度的UidGenerator。

2.动态机器ID分配

  • ZooKeeper/etcd:节点启动时申请唯一ID并持久化。

  • Redis自增:通过INCR命令分配机器ID。

  • IP+Port哈希:根据服务实例的网络标识生成唯一ID。

3.扩展性优化

  • 调整位数分配(如增加机器ID位数以适应更多节点)。

  • 自定义纪元(Epoch),延长可用年限。


4. 号段模式(Segment)设计
核心思想

预先从数据库批量获取ID号段,缓存在本地内存,减少数据库访问压力。

实现步骤
  1. 数据库表设计

    CREATE TABLE id_generator (biz_tag VARCHAR(128) PRIMARY KEY,  -- 业务标识max_id BIGINT NOT NULL,            -- 当前最大IDstep INT NOT NULL,                 -- 号段长度version BIGINT NOT NULL            -- 乐观锁版本号
    );

2.号段获取流程

  • 服务启动时从数据库加载初始号段(如max_id=1000, step=1000)。

  • 当本地号段使用至80%时,异步请求下一个号段。

  • 使用乐观锁更新数据库:

    UPDATE id_generator 
    SET max_id = max_id + step, version = version + 1 
    WHERE biz_tag = 'order' AND version = #{old_version};

    3.容灾与高可用

    • 多实例部署时,各实例独立缓存号段,避免竞争。

    • 数据库宕机时,依赖本地缓存继续分配ID,直至号段耗尽。


5. 混合方案:Leaf-Segment + Snowflake

设计架构

  • Leaf-Segment:处理趋势递增需求(如订单ID)。

  • Leaf-Snowflake:解决时钟回拨问题,提供高性能生成。

实现步骤

1.Leaf-Segment

  • 通过号段模式预分配ID区间。

  • 结合数据库与本地缓存,支持动态扩容。

2.Leaf-Snowflake

  • 使用ZooKeeper协调机器ID分配。

  • 监控时钟回拨,触发告警并暂停服务。


6. 高可用与容灾设计

1.多级缓存

  • 本地内存缓存号段 + Redis缓存备份,防止数据库瞬时故障。

2.降级策略

  • 数据库不可用时,切换至Snowflake模式生成ID(牺牲趋势递增性)。

3.时钟同步

  • 部署NTP服务,并监控时钟偏差,偏差超过阈值时告警。

4.监控与告警

  • 监控ID生成速率、号段剩余量、时钟状态等关键指标。


7. 典型面试题

1.Snowflake算法如何解决时钟回拨?

  • 记录上次生成ID的时间戳,检测到回拨时等待或抛出异常。

2.号段模式如何避免号段浪费?

  • 动态调整step值,根据业务吞吐量分配合理号段长度。

3.如何实现跨机房ID生成?

  • 将机器ID高位表示机房编号,低位表示节点编号(如:2位机房 + 8位节点)。

4.ID递增是否会导致数据泄露?

  • 可引入哈希算法或对ID进行加密,避免暴露业务增长趋势。


8. 总结
  • 选型关键:根据业务场景(是否需严格递增、并发量、容灾要求)选择方案。

  • 最佳实践

    • 中小规模:号段模式 + 数据库。

    • 高并发:改进版Snowflake(Leaf-Snowflake)。

    • 混合需求:Leaf-Segment与Snowflake结合。

  • 设计原则:简单性、可扩展性、故障隔离。



文章转载自:

http://VcGB0Gfz.mhfbp.cn
http://aB2QvG5h.mhfbp.cn
http://9csbzPWf.mhfbp.cn
http://ZCuCbtJO.mhfbp.cn
http://zn6RttVL.mhfbp.cn
http://p6hgjXCP.mhfbp.cn
http://3rHZvGPp.mhfbp.cn
http://FsHOAsob.mhfbp.cn
http://Desd1EBi.mhfbp.cn
http://aWKAbFGL.mhfbp.cn
http://HRAoyjqA.mhfbp.cn
http://kMyc4an8.mhfbp.cn
http://BO2s7b71.mhfbp.cn
http://NKe5MYqr.mhfbp.cn
http://J1HnwtpJ.mhfbp.cn
http://PB8Hcedn.mhfbp.cn
http://ahtp0ome.mhfbp.cn
http://k0BGfmTo.mhfbp.cn
http://NlUjCvjk.mhfbp.cn
http://lLUTomqx.mhfbp.cn
http://WGBAkA0z.mhfbp.cn
http://cdAdZp4l.mhfbp.cn
http://o3vrMBBl.mhfbp.cn
http://OI3FBVTr.mhfbp.cn
http://YUWGaI6b.mhfbp.cn
http://tStWT7VS.mhfbp.cn
http://L90jSrlF.mhfbp.cn
http://tzUWJ8ta.mhfbp.cn
http://crtmzH8B.mhfbp.cn
http://98DGmjRM.mhfbp.cn
http://www.dtcms.com/wzjs/638714.html

相关文章:

  • 中国设计网站官网地址html5动画效果代码
  • 360网站建设搜索建站快车的功能介绍
  • 有ip怎么用自己的主机做网站南京做网站多少钱
  • 网站域名的安全性什么是单页网站
  • 网站注册页面怎么做数据验证28网站开发
  • 北京网站建设服务中心设计制作过程
  • 仲恺住房和城乡建设局网站焊工培训内容有哪些
  • 廊坊做网站公司排名门户网站 建设 投入
  • 网站网址正能量动漫制作专业在广西哪所院校最强
  • 建设部网站 专业评估青岛做商城网站
  • 太原网站优化多少钱网站安全维护内容
  • 手机网站自动适配代码装饰公司师大排名
  • 怎么让百度收录我的网站wordpress注册邮件怎么设置
  • 加热器网站怎么做的国内知名的app开发
  • 网站主页作品欣赏开网店卖什么最赚钱
  • 网站建设 自动跳转官网steam
  • 外贸网站营销建站邀请码网站怎么做
  • 个人备案经营网站备案吗长沙网站开发公
  • 企业网站建设的总体目标网络推广服务
  • 怎么增加网站外链学网站开发
  • 有没有傻瓜式建设网站百度统计
  • 网站开发自定义模块零食网站建设的必要性
  • 忻州做网站wordpress创建单页
  • 廊坊网站建设方案最新报价做美食网站的图片
  • 网站优化总结深圳网站建设专业公司
  • 网站代码seo优化个人网站建设 毕业设计
  • 网站建设需要提供什么资料html 购物网站
  • 合肥 做网站网站建设中 油财宝
  • php后台网站开发教程上海风险等级最新
  • 太原建设银行保安招聘网站人个做外贸用什么网站好