前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >短链系统设计性能优化-分片策略优化

短链系统设计性能优化-分片策略优化

作者头像
JavaEdge
发布2022-09-14 08:00:34
3650
发布2022-09-14 08:00:34
举报
文章被收录于专栏:JavaEdgeJavaEdge

4.5 基于 base62 的分片策略

Hash(long_url)%62作为分片键

并将 hash(long_url)%62直接放到 short url

若原来的 short key 是 AB1234,则现在的 short key 是

  • hash(long_url) % 62 + AB1234
  • 若 hash(long_url)%62=0,那就是0AB1234

这样,就能同时通过 short、long 得到分片键。

缺点:DB 的机器数目不能超过 62。

所以,最后最佳架构:

4.6 还能优化吗?

web server 和 database 之间的通信。

中心化的服务器集群和跨地域的 web server 之间通信较慢:如中国的 Server 需访问美国的 DB。

为何不让中国的 Server 访问中国的 DB 呢?

若数据重复写到中国 DB,如何解决一致性问题?很难解决!

思考用户的习惯:

  • 中国用户访问时,会被 DNS 分配中国的服务器
  • 中国用户访问的网站一般都是中国的网站
  • 所以可按网站的地域信息来 sharding
    • 如何获得网站的地域信息?只需将用户常访问的网站汇总在一张表。
  • 中国用户访问美国网站咋办?
    • 就中国 server 访问美国 db,也不会慢太多
    • 中访中是用户主流,优化系统就是针对主要需求

于是,得到最终架构:

还可以维护一份域名白名单,访问对应地域的 DB。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.5 基于 base62 的分片策略
  • 4.6 还能优化吗?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档