一、短URL设计
对于需要展示短 URL 的应用程序,由该应用调用短 URL 生成器生成短 URL,并将该短 URL 展示给用户,用户在浏览器中点击该短 URL 的时候,请求发送到短 URL 生成器(短 URL 生成器以 HTTP 服务器的方式对外提供服务,短 URL 域名指向短 URL 生成器),短 URL 生成器返回 HTTP 重定向响应,将用户请求重定向到最初的原始长 URL,浏览器访问长 URL 服务器,完成请求服务
1.生成短URL算法
对于用户通过客户端请求访问短 URL 的过程(即输入短 URL,请求返回长 URL),请求通过负载均衡服务器发送到短 URL 服务器集群,短 URL 服务器首先到缓存服务器中查找是否有该短 URL,如果有,立即返回对应的长 URL,短 URL 生成服务器构造重定向响应返回给客户端应用。
如果缓存没有用户请求访问的短 URL,短 URL 服务器将访问 HBase 短 URL 数据库服务器集群。如果数据库中存在该短 URL,短 URL 服务器会将该短 URL 写入缓存服务器集群,并构造重定向响应返回给客户端应用。如果 HBase 中没有该短 URL,短 URL 服务器将构造 404 响应返回给客户端应用,时序图如下
过期短 URL 清理服务器会每个月启动一次,将已经超过有效期(2 年)的 URL 数据删除,并将这些短 URL 追加写入到短 URL 预生成文件中。
为了保证系统高可用,Fuxi 的应用服务器、文件服务器、数据库服务器都采用集群部署方案,单个服务器故障不会影响 Fuxi 短 URL 的可用性。
对于 Fuxi 的高性能要求,80% 以上的访问请求将被设计为通过缓存返回。Redis 的缓存响应时间 1ms 左右,服务器端请求响应时间小于 3ms,满足 80% 请求小于 5ms 的性能目标。对于缓存没有命中的数据,通过 HBase 获取,HBase 平均响应时间 10ms,也可以满足设计目标中的性能指标。
标签:实战,01,请求,响应,URL,生成器,并发,缓存,服务器 From: https://blog.51cto.com/u_6478076/7179136