短链系统设计性能优化-分片键选型及全局自增 ID 策略

简介: 若一个 long 可对应多个 short使用 cache 缓存所有 long2short在为一个 long url 创建 short url 时,若 cache miss,则创建新 short

4.3.1 分片键选择

若一个 long 可对应多个 short

使用 cache 缓存所有 long2short

在为一个 long url 创建 short url 时,若 cache miss,则创建新 short

若一个 long 只能对应一个 short

若使用随机生成算法

两张表,一张存储 long2short,一张存储short2long

每个映射关系存两份,则能同时支持 long2short short2long 查询

若使用 base62 进制转换法

有个严重问题,多台机器之间如何维护一个全局自增的 id?

一般关系型DB只支持在一台机器上实现这台机器上全局自增的 id

4.4 全局自增 id

4.4.1 专用一台 DB 做自增服务

该 DB不存储真实数据,也不负责其他查询。


为避免单点故障,可能需要多台 DB。


4.4.2 使用 zk

但使用全局自增 id 不是解决 tiny url最佳方案。

Generating a Distributed Sequence Number

目录
相关文章
|
6月前
|
分布式计算 关系型数据库 数据挖掘
实时数仓 Hologres产品使用合集之当使用动态分区管理功能按日期进行分区后,通过主键和segment_key进行时间范围查询性能变差是什么原因
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
|
3月前
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
377 3
|
7月前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
421 0
|
7月前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
315 0
|
5月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之将部分表设置为压缩表,是否会对节点的整体性能影响
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
Java 测试技术 API
面试题ES问题之零停机索引重建方案的选择如何解决
面试题ES问题之零停机索引重建方案的选择如何解决
32 0
|
7月前
|
SQL 存储 关系型数据库
深分页怎么导致索引失效了?提供6种优化的方案!
深分页怎么导致索引失效了?提供6种优化的方案!
|
算法 NoSQL 关系型数据库
分布式系统第三讲:全局唯一ID实现方案
分布式系统第三讲:全局唯一ID实现方案
430 0
|
7月前
|
前端开发
基于jeecgboot的主从表改造成抽屉式的字典操作模式
基于jeecgboot的主从表改造成抽屉式的字典操作模式
124 0
|
7月前
|
Kubernetes 算法 NoSQL
动态扩缩容下的全局流水号设计
该文介绍了在动态扩缩容场景下如何使用雪花算法生成全局流水号。雪花算法生成的ID由时间戳、工作机器ID和序列号组成。在K8s环境中,通过Redis存储当前workerId的最大值,每次生成时加1并取模,确保workerId在0-1023范围内。文中提供了实现雪花算法的`SnowflakeIdWorker`类示例,并展示了两种动态获取workerId的方法:一是利用Redis incr操作;二是通过Nacos服务发现获取IP和端口信息计算。此外,还提到了其他获取workId和dataCenterId的策略,如使用本地IP和主机名。
131 1