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