当前位置:首页 > 短网址资讯 > 正文内容

短网址服务开发关键问题与解决方案

www.ft12.com8年前 (2017-08-28)短网址资讯34231

一、背景分析

二维码的出现使资源传输由原来的USB拷贝转变为二维码扫描访问或下载。为下载资源提供短网址服务,需将短网址生成二维码。资源数据量预计可达10亿级别,日新增数据1000万左右,每秒并发访问数预计2000个连接,响应时间在0.1秒以内。

二、基本原理

  1. 将原始地址转换为短网址

    原始网址→网址缩短→短网址

  2. 将短网址转换为原始网址

    短网址→短网址还原→原始网址

  3. 关键问题

    将原始地址转换为不重复的6位地址标志,海量数据的高并发读写。

三、项目实现

  1. 短网址实现方案

    实现短网址服务,首先要将海量的链接数据转化为不重复的6位字符。

    (1)哈希算法。哈希算法相对简单,具体算法如下:

    ①将原网址md5转换成32位哈希码,分为4段,每段8字节。

    ②对这四短网址进行循环处理,取8个字节,将其看成16进制串与0x3fffffff(30位1)与操作,即超过30位的忽略处理。

    ③将30位生成6段,每5位数字作为字母表在索引取得特定字符,依次进行获取6位字符串。

    ④总的md5串可以获得4个6位串,取任意一个就可作为这个长url的短url地址。这种方法实现起来简单,但是有较高的重复度。

    (2)62位字符表示。把数字和字符组合成一定的映射,就可以产生唯一的字符串,再利用洗牌算法,把原字符串打乱后保存,对应位置的组合字符串就会是无序的组合。

  2. 大数据存储解决方案

    在本项目中,主要存储数据有资源下载地址及引用页地址,预估资源下载地址长度为150个字符,引用页地址长度为50字符,两者存起来共200字符,再加上数据库自身结构占用的空间及其他信息,如时间、ID等,存储一条数据最少需要250个字节。从当前访问量来看,预计数据将达到10亿条。

    总数据量 = 250 * 10^9 /(1024*1024*1024)= 230G   当前采用的是mysql架构, 10亿条数据远远超过了其处理能力。因此要对数据库进行分库分表,将表大小限定为10万条数据,每个数据库1000张表,数据库随着数据的增长而扩展,表中的ID进行自增长,通过数据库ID、表ID、数据ID三者就可以唯一确定条数据,将这个值转换成62进制就得出了唯一的短链接地址。

    合成ID算法代码:($database_id*self::database_tables*self::table_rows)+$row_id+ ($table_id*self::table_rows);

    每个数据库将存储1000*100000=1亿条数据,数据将分布在10台机器上,10台机器将分解高峰阶段的每秒2000个并发读写操作。这种算法在初期可能会对单台机器造成过载,可采用逐步加压的方式,当数据库服务器增多后可全部开放。

  3. 高并发解决方案

    应对每秒2000次的并发访问需要服务器具有快速的读写及负载均衡能力,主要需要解决两方面的问题:用户在创建短网址时,需确认该资源没有创建过;当用户在访问一个短网址时,服务器需快速响应。从数据库直接读取无法满足速度需求,同时会造成服务器过载导致系统崩溃。因此,需要将资源url放到内存中,使用内快进行快速读取。

  4. 关键问题解决方式

    (1)问题一解决方案。由于数据是先有ID后有短网址,无法通过资源地址反查到短网址,因此,需要使用一个内存映射,将资源与短网址(数据ID)联系起来。操作流程:原始网址→16字节长度的原始二进制md5→从redis中查找是否存在数据ID→从内存缓存或数据库中取出数据→判断数据库中的地址是否与原网址相同→不同则插入数据库中,建立16字节长度原始二进制md5与数据ID建立联系存入redis中。

    (2)问题二解决方案。将热数据放入缓存中,减轻数据库负载,限制一天过期时间,可以防止内存使用过大。操作流程:短网址→查找内存→未找到将短网址转为ID→从数据库中查找→存入缓存→返回数据。

四、小结

短网址服务是一个比较复杂的项目,生成短6位短码是关键点,采用数据ID递增进行62位转换的方式,可简单有效地实现需求。


扫描二维码推送至手机访问。

版权声明:本文由短链接发布,如需转载请注明出处。

本文链接:https://www.ft12.com/article_447.html

分享给朋友:

相关文章

FT12短网址:面向中间件的开发模式

FT12短网址:面向中间件的开发模式

中间件,middleware,短网址服务,是软件开发中一个比较古老的名词。以前toB的软件还是主流的时候,厂商特别喜欢玩中间件这个概念,目的就是为了让客户更心甘情愿地为厂商自己凭空增加的中间层付费。时代不同了,现在我们需要的大部分中间件都能...

《网贷信息披露指引》正式发布,行业到了最关键的时刻!

《网贷信息披露指引》正式发布,行业到了最关键的时刻!

[ FT12短网址资讯 ] 接下来还会有一批不合格企业露出底牌,继而退出。留下最优质的一部分,方能激活整个行业。图片来自“123rf.com.cn”2017年8月25日,银监会正式发布《网络借贷信息中介机构业务活动信息披露指引》。...

阿里巴巴马云:快递公司注定将成为技术公司,保证所有小企业通货权

阿里巴巴马云:快递公司注定将成为技术公司,保证所有小企业通货权

[ 短网址资讯导读 ] 5月22日,杭州云栖小镇,在2017全球才智物流峰会上,阿里巴巴董事局主席马云说,物流公司应当出资人才、技能,而且要联合作战,方能应对天天10亿包裹的业务体量。“我通知我们,一天十亿只包裹,不会超过八年,估...

通过谷歌搜索引擎挖掘细分市场的一个案例

通过谷歌搜索引擎挖掘细分市场的一个案例

【FT12短网址资讯】这篇文章篇幅较长,无阅读门槛,比较适合想兼职赚点零花钱的程序员、想找场景学习编程的小伙伴以及没有创业点子的兄弟。全文4000字,完好读完大概需求10分钟。理论上来说,假如咱们仅仅是想赚点小钱,而不是想像马云爸爸一样经过...

“黄鳝门”琪琪最新视频 女主播的下限到底在哪?

“黄鳝门”琪琪最新视频 女主播的下限到底在哪?

还记得今年三月份轰动全国的“黄鳝门”事件吗?3月23日晚,一段“女主播博眼球秀下限,将黄鳝塞入下体”的直播视频截图突然在网络上疯传!力压国足在世界杯预选赛胜出的历史性突破,成为当日最热点事件。女主播琪琪和她的黄鳝一同登上热搜,成为了这场风暴...

Gartner发布2017年云安全技术成熟曲线

Gartner发布2017年云安全技术成熟曲线

[ FT12短网址 ] 云应用的快速增长不断提高人们在云计算环境中对于数据、应用程序和工作负载的兴趣。Gartner公司发布的云安全技术成熟曲线将有助于安全专业人士重新定位他们在业务支持方面的角色。图片来自网络云应用的快速增长不断...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。