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

Posted JavaEdge.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了短链系统设计性能优化-分片策略优化相关的知识,希望对你有一定的参考价值。

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。

以上是关于短链系统设计性能优化-分片策略优化的主要内容,如果未能解决你的问题,请参考以下文章

短链系统设计性能优化-缓存提速及CDN

Elasticsearch7.8.0版本优化——分片策略

网易MySQL中间件的负载均衡策略及性能优化

数据库性能优化策略

系统性能优化的十大策略(强烈推荐,建议收藏)

常见性能优化策略的总结(转)