zoukankan      html  css  js  c++  java
  • 设计一款永不重复的高性能分布式发号器(全局唯一id)

    分布式系统中,产生唯一流水号的服务系统俗称发号器。对于这个全局唯一id的要求,有如下几条

    1、全局唯一

    2、粗略有序

    3、可反解(如果id有时间,且可反解,可以省略很多timestamp的字段)

    4、可制造(如果出了问题,手工处理,如果数据污染,洗数据,如果想要回复到问题的时间节点,需要发号器可复制可恢复可制造)

    5、高性能

    6、高可用

    7、可伸缩

    因此

    我们不使用uuid,因为他比较长,占用空间大,不满足【高性能】,它不是【有序的】,会导致b+树索引有过多随机写操作。

    我们也不使用基于数据库的解决方案。例如通过调整自增字段或者数据库的sequence步长。虽然可以解决问题,但是,服务节点固定,sequence步长也固定,对于水平扩展,增加服务节点不友好【可伸缩】,依赖数据库,对数据库造成压力【高性能】。疏散管理sequence,提高了维护成本。

    snowflake是一种流行的发号器,但是很难直接使用。

    推荐的发号器是vesta。

    发布模式:嵌入发布,中心服务器发布,rest发布

    id类型:最大峰值,最小粒度

  • 相关阅读:
    nginx 负载均衡
    nginX 安装 启动
    nginx 简介
    使用ASDM 管理 ciscoASA设备
    OSPF配置实验(一)
    VRRP
    HSRP 详解
    Rip 动态路由协议
    配置ASA防火墙 远程管理方式
    Oracle 重启监听
  • 原文地址:https://www.cnblogs.com/hekiraku/p/12048917.html
Copyright © 2011-2022 走看看